立誓“永远不为他人而活,也不要他人为我而活”的美国精神教母安·兰德镇楼。虽然这句话不是针对软件开发说的,但应用于软件开发,天衣无缝。
矛盾并不存在。在遇到矛盾的时候,请检查您的前提。你会发现前提中的某一部分必然发生了错误。
–– 安·兰德,阿特拉斯耸耸肩
Contradictions do not exist. Whenever you think that you are facing a contradiction, check your premises. You will find that one of them is wrong.
–– Ayn Rand, Atlas Shrugged
调试代码比编写代码要难两倍。也就是说,如果你倾尽脑力编写代码,那你肯定智商上不够去排除错误。
–– Brian Kernighan
世界上只有两种编程语言:一种人们充满了抱怨;一种没有人使用。
–– Bjarne Stroustrup
笨蛋也能写出计算机可以理解的代码。优秀的程序员写出的代码可以让人类理解。
–– Martin Fowler
构建软件设计有两种方法:一种是简单到极致,而明显没有缺陷;另一种是复杂到极致,以至于没有明显的缺陷。前一种要难得多。
–– C.A.R. Hoare
现在绝大多数软件都如同埃及金字塔一样由数百万块砖堆砌而成。没有完整的结构,而是由蛮力和数千苦工完成。
–– Alan Kay
用代码行数测算软件开发进度如同按重量测算飞机制造进度。
–– Bill Gates
如果你想要开始规划一些全新的东西,那你需要的不是数百万美元的资本,而是冰箱里有足够的匹萨、无糖可乐,一台可以工作的廉价电脑并且专注的去执行它。
–– John Carmack
程序代码必须让人类可以理解,然后顺带让机器能执行。
–– Abelson / Sussman
问题:如何让一个大的软件项目延期一年?答案:每天得过且过。
–– Fred Brooks
任何人都不该以了解一个大项目为开端。你应该从微小的项目开始,并且期望它永远不要变大。如果不是,那你可能仅仅是过度设计并且简单的想它就应该是那个规模。或者更糟一点,你被预想中的工作规模吓跑。所以,从小处着手,深入思考细节。而不要想一些大图景和空想的设计。如果它没有解决当前的需要,那几乎肯定是过度设计了。不要指望别人跳进来帮你。这不是让它工作的方法。你首先应该让一部分工作有用,其他人说"嗨,基本可用"之后,他们才会加入到项目中。
–– Linus Torvalds
我也想起了早些学编程,架构师陈小虎经常说的三句话:
一. 这个问题很简单;
二. 机器是最诚实的;
三. 不要欠代码的债;
软件开发或系统维护中出现的问题,令我们沮丧,同时也是进步的必由之路。