前段时间阅读了《代码整洁之道:程序员的职业素养》这本出自Uncle Bob的书籍,全书不足200页,内容很精简,主要用作者40多年的职业生涯为例子,讲述一个专业的程序员面对工作时所应保持的态度和处事方法,读后获益良多,有必要记录下来,以加强记忆方便日后推进自己的工作。
全书围绕关键词“专业精神”进行展开,大纲如下:
1、专业主义
专业主义意味着担当和责任,不做破坏之事(不破坏代码、不破坏程序结构),有良好的职业道德(雇主出钱,所以需要付出相应的时间和精力,工作时间之外要保持自学以提升个人职业技能),要站在雇主和客户的方向思考问题和解决问题,要保持谦逊,务实沉稳。
2、敢于说“不”和说“是”
说“不”并不意味着充满对抗和冲突,“不”意味着识别风险,是对工作的负责。避免回应“试试看”,“试试看”意味着对时间和风险的不确定预估,后果会很严重。说“不”,可以让你更专注工作和提升代码的质量。
说“是”意味着作出了承诺,承诺后需要尽可能地将事情做好,承诺时需要坚守原则,并非一切按照需求方的要求做事。
3、编码
编码前要理解不要处理的问题,要和现有的系统和谐共处,要让其他程序员能不懂你写的代码。避免在休息时间编码,避免在焦虑时继续编码,避免进入“流态区”而忽略真正需要解决的问题,避免带着耳机编码(excuse me?)。当感到无法进行下去时,应离开片刻,注重“结对编程”的实践。保持良好的编码节奏。对外来的求助干扰要表示理解。
4、测试驱动开发(TDD)
TDD三项法则:
(1)在编好失败单元测试之前,不要编写任何代码
(2)只要有一个单元测试失败了,就不要再写测试代码;无法通过编译也是一种失败情况
(3)产品代码恰好能够让当前失败的单元测试成功通过即可,不要多写
5、练习
讲真,我不明白这章为什么要写这么多武术的内容,是证明和练武一样,练得多了,就会越来越6吗?
6、验收测试
这里强调的是对需求的理解,强调沟通对项目和工作的重要性。
7、测试策略
这里强调的是整个测试过程中各个角色所处的位置以及需要完成的内容。
单元测试:开发人员编码过程中进行
组件测试:联调API
集成测试:对组件进行集成后,再对API进行联调
系统测试:系统整体运行,对GUI进行测试
人工探索式测试:投入人力资源对系统进行人工测试
8、时间管理
会议的必要性,注意力点数(人在不同的精神状态下,注意力的集中度会不同),番茄工作法的定义和应用,避免进入死胡同,遇到泥潭应立即停止。
9、预估
讲真,虽然这章说了很多公式,但真正实践起来,经验才是比较靠谱的判断标准。
10、压力管理
程序员没有压力是不存在的。面对压力应该坚守纪律,不要惊慌失措,保持和团队的沟通,寻求帮助
11、协作
讲述程序员和工作中的各个角色打交道。
12、项目和团队
这里有点项目管理方面的内容了。
阅毕