人民邮电出版社的新书,《程序员的职业素养》是美国老程序员Robert Martin 的作品。在书中,他从交互管理,时间管理,压力管理,合作方法以及工具选择等诸多方面,阐述了他对一名专业程序员的期望。
第一章《专业主义》,从清楚你要什么,担当责任,不行损害之事,职业道德几个方面描述了专业软件工程师具备的素质。
第二章《说“不”》,引言“能就是能,不能就是不能。不要说“试试看”。”比较吸引读者的兴趣。作者提出一个问题“有可能写好代码吗?有可能坚守专业主义精神吗?”,最后又给出了答案“是的,但你要学会如何说不。”。这一个章节了用了较大的篇幅描述一味地说“是”会如何地造成不可挽回的失败,在适当的时候作为专业的程序开发人员必须站出来坚决地说“不”,以让一个项目朝着正确的方向前行。
第三章《说“是”》,最后的结论是,专业人士不需要对所有的请求都回答“是”。不过,他们应该努力寻找创新的方法,尽可能地坐到有求必应。当专业人士给出肯定的回答时,他们会使用承若用语,以确保各方能明白无误地理解承若的内容。
第四章《编码》,指出编码是一项颇具挑战也十分累人的智力活动。在不同的时间不同的精神状态下,所编写的代码质量差别很大。其中比较深刻的一节是讲到“流态区”,这是程序员在编写代码时会进入的一种意识高度专注但思维视野却会收拢到狭窄的状态。对于这种状态,Bob大叔(作者)给出的忠告是:避免进入流态区。理由是在流态区,你可能可以敲出更多的代码,会收获一种愉悦感和征服感。问题在于,在流态区状态下,你其实没有顾及全局,因此你可能做出一些后来不得不推倒重来的决策。
第五章《测试驱动开发》,也称作TDD。这项做法无论是在敏捷方法中,还是在非敏捷方法中,事实上已经实践了十几年了。尽管TDD有诸多优点,但是它既非宗教信仰,也非魔力公式。即使做了测试先行,仍有可能写出糟糕的代码,没错,因为写出的测试代码可能就很糟糕。