当先锋百科网

首页 1 2 3 4 5 6 7

程序员的职业素养 (the clean coder读书笔记)

by 刚搬完砖

 

这本书是作者总结自己几十年工作经验,给如何做一名"专业"程序员提出的建议。专业主义有深的含义,不象征荣誉与骄傲,而是责任与义务。 作者认为专业程序员应该有如下义务:

  • 定义专业的"完成"。专业的完成是, 保证代码质量的前提,是从需求对接、单元测试、研发、回归测试等一系列工作后,称为完成

    • 很多开发一开始就不了解产品提出的需求,就一顿开发,最后才发现需求没对清楚(包括我自己也犯过)

    • 有没有写单元测试,写单元的测试的目的是在你可以放心大胆的重构你的代码,而不是看着代码越来越冗长,而不敢碰。(结合 《重构》那本书就知道,重构的前提是有测试,有了测试才能放心大胆测试)

    • 研发 : 不能因为因为 领导、产品催,就降低代码质量。要保证代码质量,避免代码的坏味道(参考clean code), 需写单元测试

    • 研发后自测后,给到QA, 和QA保持良好沟通

  • 说否

    • 能就是能,不能就是不能,不要说试试看

    • "完成" 不是那么随便,所以“承诺” 任务的时候一定要 专业、谨慎。 不能说我试试,我尽量。尽可能准确评估任务的工作量、风险,给出deadline(详细的:乐观完成、平均完成、悲观完成时间)

    • 要承认客观事实,不要拒绝的压力,而承诺非客观时间内完成。如果这样,必定的结果就是 降低代码质量、或加班(然后加班对工作效率、工作质量都是负向的)

    • 如果发现不能准时“完成”, 尽早说出来

  • 说是

    • 很少有人认真对待自己说的话,并且说到做到

    • 缺乏承诺的征兆:我需要、我应当、希望、但愿、让我们(不是我)

    • 良好的承诺:我将在 什么时间之前 完成 什么任务

    • 一些不玩完成的场景:

      • 我的任务依赖于他人:和他人沟通,确定他人的完成时间

      • 不太确信是否完成:和测试或产品沟通

      • 真的无能为力:早点通知大家

  • 编码建议

    • 沟通需求,有时候客户的需求不合理,甚至他不了解自己的需求,需要仔细沟通出最合适的解决方案

    • 其他程序员要能读懂你的代码

    • 不要在焦虑、疲劳的时候写代码,质量差导致后续不断debug, 反而浪费更多时间。阻塞(不在状态,没有思路的时候)不要写,放松,或结对编程

    • 创造性输入:写程序是创造性工作,所以可以给自己更多创造性输入(其他个人兴趣,如小说、电影、音乐等等)

    • 不要盲目冲刺deadline,避免加班(短期可以接受,最多两周)

    • 接受他人的帮助

  • 测试驱动开发

    • TDD是专业人士的选择

    • 先写单元测试,提供代码确定性,鼓励程序员重构、优化设计

    • 测试代码避免隔离出待测试代码。因为需要单测,反而激发程序员更好的设计

  • 练习(保持学习)

    • 练习编程题目

    • 学习及时驱动开发、持续集成之类方法

    • 学习其他语言

    • 开源贡献

  • 验收测试

    • 验收测试是业务方(提需求人)写的,是正式的需求文档,描述系统如何运行

    • 单测是程序员写的,是正式的设计文档,描述底层代码的行为

    • 确保持续集成正:自动例行运行单测、验收测试、(代码检查等)