程序员的职业素养 (the clean coder读书笔记)
by 刚搬完砖
这本书是作者总结自己几十年工作经验,给如何做一名"专业"程序员提出的建议。专业主义有深的含义,不象征荣誉与骄傲,而是责任与义务。 作者认为专业程序员应该有如下义务:
-
定义专业的"完成"。专业的完成是, 保证代码质量的前提,是从需求对接、单元测试、研发、回归测试等一系列工作后,称为完成
-
很多开发一开始就不了解产品提出的需求,就一顿开发,最后才发现需求没对清楚(包括我自己也犯过)
-
有没有写单元测试,写单元的测试的目的是在你可以放心大胆的重构你的代码,而不是看着代码越来越冗长,而不敢碰。(结合 《重构》那本书就知道,重构的前提是有测试,有了测试才能放心大胆测试)
-
研发 : 不能因为因为 领导、产品催,就降低代码质量。要保证代码质量,避免代码的坏味道(参考clean code), 需写单元测试
-
研发后自测后,给到QA, 和QA保持良好沟通
-
-
说否
-
能就是能,不能就是不能,不要说试试看
-
"完成" 不是那么随便,所以“承诺” 任务的时候一定要 专业、谨慎。 不能说我试试,我尽量。尽可能准确评估任务的工作量、风险,给出deadline(详细的:乐观完成、平均完成、悲观完成时间)
-
要承认客观事实,不要拒绝的压力,而承诺非客观时间内完成。如果这样,必定的结果就是 降低代码质量、或加班(然后加班对工作效率、工作质量都是负向的)
-
如果发现不能准时“完成”, 尽早说出来
-
-
说是
-
很少有人认真对待自己说的话,并且说到做到
-
缺乏承诺的征兆:我需要、我应当、希望、但愿、让我们(不是我)
-
良好的承诺:我将在 什么时间之前 完成 什么任务
-
一些不玩完成的场景:
-
我的任务依赖于他人:和他人沟通,确定他人的完成时间
-
不太确信是否完成:和测试或产品沟通
-
真的无能为力:早点通知大家
-
-
-
编码建议
-
沟通需求,有时候客户的需求不合理,甚至他不了解自己的需求,需要仔细沟通出最合适的解决方案
-
其他程序员要能读懂你的代码
-
不要在焦虑、疲劳的时候写代码,质量差导致后续不断debug, 反而浪费更多时间。阻塞(不在状态,没有思路的时候)不要写,放松,或结对编程
-
创造性输入:写程序是创造性工作,所以可以给自己更多创造性输入(其他个人兴趣,如小说、电影、音乐等等)
-
不要盲目冲刺deadline,避免加班(短期可以接受,最多两周)
-
接受他人的帮助
-
-
测试驱动开发
-
TDD是专业人士的选择
-
先写单元测试,提供代码确定性,鼓励程序员重构、优化设计
-
测试代码避免隔离出待测试代码。因为需要单测,反而激发程序员更好的设计
-
-
练习(保持学习)
-
练习编程题目
-
学习及时驱动开发、持续集成之类方法
-
学习其他语言
-
开源贡献
-
-
验收测试
-
验收测试是业务方(提需求人)写的,是正式的需求文档,描述系统如何运行
-
单测是程序员写的,是正式的设计文档,描述底层代码的行为
-
确保持续集成正:自动例行运行单测、验收测试、(代码检查等)
-