程序员修身之道,这是一本放在枕头边经常拿起来反复读的书。如果要成为一名好的程序员,其实所需要的道理也多不了多少,只不过,当水平不够的时候,永远不能认识到那些朴素道理的重要性。一本书进阶的书在低手眼里觉得很难懂,在高手眼里可能觉得都是废话。但是,这是一本经得起时间沉淀的书,现在距离作者写书已经过去十余年了,软件产业发生了翻天覆地的变化,从表象上看,软件世界似乎陷入了疯狂的状态,但是深入繁杂的表象背后,你会发现变化基本不变,之前的原则在现在依旧通用,事物变化的越多,掌握其基本原则就越重要。
编程大约有三个境界,新手、高手和高不成低不就的中手。一般来说,经历过几十万行代码的锤炼的,或者长期在一个高手团队中切磋的,无论怎么熟悉理论、在编程里应该算是中手。一个中手如果机缘好的话,在高手的亲自指点下,很容易成长为一个高手;如果没有这样的机缘,那就要在“众里寻她千百度”这个层次苦苦求索很久之后才能“蓦然回首”。
读书时一种很好的弥补没有高手在场的方法,因为书是最好的老师。但是由于水平差异较大,偏好不一,有的甚至认识不到自己的成长轨迹,有些人认为书籍是片面的知识,所以把自己不喜欢的书都扔到垃圾堆了,光捡自己喜欢的书看,有的未必看得上高手的经验,认为高手的那些经验自己早就已经领悟到了。因此,市场上很少有高手提携的一些好书。
不够还是有一些好书的,推荐《Pragmatic Programmer》、《The Art of UNIX Programming》、《Element of Programming Style》、《The Productive Programmer》。
能不能让正确的原则指导正确的行为本身,其实区分是否是高手的一个显著标志。如果不实践,把知识背的再熟悉也没有什么用。
编程时一种技艺,一种需要用心学习的技艺。
只有在长久的学习之后,我们才能明白hacker真正的含义:“Someone who loves to program and enjoys being clever about it”
本书强调注重实效,成为一名注重实效的程序员,并为之而不断努力学习。书大致分为几个方面:如何设计架构、如何编程、如何进行单元测试、如何编写文档。
注重实效的程序会具备以下特征:
1、早起的采纳者和快速的改编者。你具有技术和技巧上的直觉,你喜爱试验各种事物。给你一样新的东西,你很快就能掌握它,并将它与你的其他知识相结合。你的自信来自经验。
2、好奇。你喜欢提问。那很漂亮——你是怎么做到的?你用哪个库有问题吗?你说的哪个BeOS是什么?符号链接是怎么实现的?你是收集小知识的林鼠,每一条小知识都会影响今后几年内公司的某项决策。
3、批判的思考者。你不会不首先抓住事情而照搬别人的说法。当同事说”就应该那么做“或者供应商允诺为你的全部问题提供解决方案时,你会嗅到挑战的气息。
4、有现实感。你会设法理解你面临的每个问题的内在本质。这样的现实主义给了你良好的感知能力:事情有多困难,需要多长时间?让你自己了解某个过程会有困难,或者需要用一点时间才能完成,能够给你坚持不懈的毅力。
5、多才多艺。你尽力熟悉广泛的技术和环境,并且努力工作,以与各种新发展并肩前行。尽管你现在工作只要求你成为某方面的专才,你却总能够转向新的领域和新的挑战。
Tips 1
Care About Your Craft
Tips 2
Think ! About Your Work