代码大全 个人性格
《代码大全》在那什么stackoverflow上,被评为程序员要读书目中的第一名,还拿了两次那个震撼大奖。厉害、实用都到了,就是不太看得懂。
准确来说,字面意思看得懂,像第三部分 变量也是很容易看明白的部分,不过,就像豆瓣有位读者评价这是软件开发的“地图”,很多内容都是介绍性的,它告诉你,有什么类型工具(一般不具体说出是哪些)可以在哪些地方使用,有什么类型的技术在哪儿有帮助,还有一些规范、一些鼓励。
这虽然不是从学生到职工的路线性指导,其实已经很好了,给了百科、地图式的介绍。在知道遇到的问题和解决的技术、工具后,可以自行去学习,解决遇到的问题。
可我一个小小的学生,看软件开发的部分就像看天书。只能挑掉看得懂的地方来做笔记了。
“事实证明,个人性格对于造就出程序高手更具有决定性意义。”——820页,第二版中文译版
要充分理解一个程序,要有很强的吸取细节的同时消化它们,越是谦虚,进步就越快。
求知欲:
对技术事物的求知欲具有压倒一切的重要性,书中介绍,技术环境每5到10年就变化一番,如果没有足够的求知欲来跟上这些变化,就可能面临落伍的危险。
所以,要有足够的求知欲,要考虑怎样改进自己的工作,不停地学习新的技术。最近的我,好像则是陷入自己给自己挖的一个坑中,里面是填不完的内容,可以说是作茧自缚。
书中介绍了一些培养求知欲的特定方法:
1、在开发过程中建立自我意识 通过阅读和对软件构台观察,来理解变化、了解软件开发过程,使团队朝着正确方向发展。如果觉得自己的工作净是不能提高自己技术的任务,理应表示不满。
2、试验 有效编程的关键之一就是要学会迅速制造错误,并每次都从中有所收获。当然,制造错误肯定不能用大程序、正在开发的项目来当平台,编写个小程序来学习并检验。
3、阅读解决问题的有关方法 大概就是不要再发明车轮,人们并不总能自行找出解决问题的巧妙方法,即使方法很容易传授。所以,书中推荐了本James Adams的 《Conceptual Blockbusting》。
4、在行动之前做分析和计划 这个自己比较缺乏
5、学习成功项目的开发经验 研究高手的程序,阅读源代码,貌似主要是读开源程序的代码哦。还应多了解专家对你的代码的看法。滤除语言中主观成分,注重解决切中要害的问题,从而改善编程质量。
对我来说,老早就说想阅读开源项目的源代码了,结果一直没有开始。后面的请专家评论自己的代码就没有试过了。
6、阅读文档和其他书本期刊 学生嘛,教材什么的看得多了,文档倒是看得很少……
7、同专业人士交往 参加交流会、加入用户群或参与网上讨论。我上豆瓣,找QQ群,就是那些什么本地用户小组和邮件列表不太明白,也就不敢尝试,因为担心自己加入后,什么事都不干。最起码,我注册的很多博客、微博、邮箱、OJ都没使用。
8、向专业开发看齐
入门级: 会利用某语言的基本功能,会使用许多的特性
中级 :能利用多种语言的基本功能并得心应手地使用至少一种语言,不过,除了多会几门外,这里的得心应手和入门级的有多少差别?
熟练级:对语言或环境有着专业技术,
专家级:具有第三级的专业技术,并明白编程中只有15%是与计算机交互,其余是与人打交道。他们写的代码,像水晶一样晶莹剔透,还配有文档。
这部分在《程序员的思维修炼》一书中,有更好的介绍,里面的德XXX模型,可以应用在各种领域。
诚实
通常表现为以下几个方面:
不是高手时,不假装是高手。最好是凌自己啥都不懂,呱呱别人的看法,从他们那里可能学到新的知识,并能了解他们是否真的清楚所讨论的话题。
乐于承认错误。
力图理解编译器的警告。这个经常忽略,因为有些消息看不懂,或者觉得警告对程序不影响。
透彻理解自己的程序。我就是经常“先编译看看能否运行再说”的做法,看来要改啊!
提供实际的状况报告。缺乏对进度的掌握,那就通过对工作的了解来解决。
提供现实的进度方案,在上司面前坚持自己的意见。
交流与合作
各方面的不足,这个是其中很严重的一个,因为,真的缺少团队合作经验,少有的几次,自己也没有反思下合作的效果如何。
创造力和纪律
纪律与实际的项目息息相关,因为一般的项目都在万行代码的级别,而没有这种经验的学生在学校中,写过的最长的程序也就论百行,所以,“这类工作需要的技能不仅是规模大些而已,而是一套全新的技巧”。
“不要将创造力花到无关紧要的事物上,在非关键之处建立规范,从而在重要地方倾力发挥创造性。”
所以说本书是地图,最起码,在这部分上,我只知道了规范、纪律两个词,连它们是什么样的都不知道。
懒惰
这个可能很多人都听说过了,就是要正确地懒,迅速做完不喜欢的任务,最好的是编写某个工具来完成不喜欢的任务,以后就再也不用做这类的琐事。
有效编程中最重要的工作是思考,而人思考时,通常看上去很闲,很难区别是思考呢?发呆呢?做梦呢……
习惯
初涉某事时,就应端正态度来学。开始做事情时,还会积极思考,轻松决定做得好坏,一段时间后,就会习以为常,这里就要确保这些习惯是你所希望的好东西。
否则要用好的习惯来代替旧的习惯,而不是用“空习惯”来代替。
自己对这个习惯的略有感触,在学过C语言后,因为发现自己学过过于肤浅、表面,于是想端起《C程序设计语言》或《C语言程序设计——现代方法》等书来看,强化,结果,没一次成功啃下来的。咦?好像和习惯有点区别……
不只是C语言,别的语言、数据结构、算法,几乎一切都陷入这个死循环,浅浅地入门后,觉得学得不咋地,于是又想去看书加强下,捧起书来,又觉得多数都学过了,又没有耐心学完,放弃之后,又内疚、不安……