PS:引号是书中内容
0.译序
“作者认为,应该首先为人编写代码,其次才是为机器;代码主要是供人阅读的”
许多程序员都没有用这种意识写代码,经常借口说项目紧,先把代码写出来,功能先实现,后续再完善再调整,然而一旦写完代码,完善的事很可能就扔到一边了,往往这种代码就会坑自己和同事,写的时候奇思妙想,过一段时间再看就很可能不记得当时的想法了,代码既不好读又没有注释,你说坑不坑?
2.用隐喻来更充分地理解软件开发
科学的探究过程往往会用隐喻来作为启发点,软件开发中也可以用隐喻来启发构建过程。比较合适的隐喻有:
a)“软件的牡蛎养殖观点:系统生长”,软件迭代开发。
b)“软件构建:建造软件”,类似建造房屋的软件开发,针对不同的房屋类型,有不同的建造设计和规划。
4.关键的“构建”决策
选择一种编程语言,把它当做构建的工具;
深入一种语言编程,而不要在一种语言上编程;
做好编程约定,如:变量名称,类名,子函数名,格式,注释风格等;
确定自己在技术浪潮中的位置,技术浪潮前期,中期or后期;
33.个人性格(人的个性对其编程能力有直接影响)
聪明和谦虚:“高智商与优秀程序员之间并无太密切的联系”。
求知欲:干IT的,不学习是没有竞争力的,读书、读代码、思考、与高手交流。
诚实:实事求是,“不是高手时不假装是高手”,“乐于承认错误”。
交流与合作:闭门造车是不行的
创造力和纪律:总之,无规矩不成方圆,艺术家也不是随便的天马行空。
懒惰:这里的懒惰其实是小聪明的意思,有时耍耍小聪明能提高效率,把精力从繁琐的小事上挪开。
不如你想象中那样起作用的性格因素(坚持、经验、编程狂人)
关于坚持,我深有体会,有时遇到一个问题,花很久却始终不知道怎么解决,第二天,分分钟搞定。“通常最好只要有一段时间没有进展,比如说15分钟,就该放弃排错过程,让潜意识仔细品品”。问题有时不是出在你想的那个方面,换个思路可能会豁然开朗。
“与其他行业相比,软件开发行业的经验比书本知识价值要小”,技术更新快,旧经验可能不适合现在
疯狂编程除了证明你很热情,还有什么?
习惯:好习惯从现在开始形成,而不是等到以后。