从插图看《代码整洁之道——程序员的职业素养》
《代码整洁之道——程序员的职业素养》是《代码整洁之道》的作者Bob大叔的第二部作品,笔者读完2016年再版的本书后有感而发写下本文,本书2012年的版本叫《程序员的职业素养》。从内容上看,本书并非《代码整洁之道》的续书,加上前缀可能是Bob大叔著作等身的时候要用第一本书命名全集。
职业素养并不是神秘的天赋,也不是高深的技艺,而是能力与素质的体现,也是持续的积累和养成。本书可以指导一个程序员如何抵制不专业的需求,提高开发的效率,享受自己的职业素养。
和《代码整洁之道》一样,每章的开头的插图(以下简称“主题图”)都概括了该章的主题,同时因为本书每章前的引言都是Bob自传的一部分,所以主题图常常有Bob大叔,注意他的长相。每章的主题图也都隐藏了“KOHNKE”的暗记,在读书之余找暗记比给前任留下的代码捉bug有趣多了。
第一章《专业主义》
本章的主题图是《碧血金沙》中的霍华德的剧照,搭配戏谑的台词嘲讽因为不专业而遭受挫折的程序员。
专业主义泛指做一个专业的程序员的职业道德,包含等多个诚实、谦虚、合作、坚持学习等方面。不但象征荣誉与骄傲,而且明确意味着责任与义务。
第二章《说“不”》
本章的主题图是包括Bob大叔在内的一群员工在暴跳如雷、怒不可遏的上司Frank面前噤若寒蝉、唯唯诺诺、没人敢于说“不”的样子。
说“不”是一个程序员的必备素质,对产品经理不合理的需求说“不”,对项目经理不科学的日程说“不”。老板也应该珍惜敢于说“不”的程序员,敢于说“不”说明此人是一个人才而不是奴才。
第三章《说“是”》
本章的主题图是Bob大叔等人在ER项目的发布会上,被台下观众用“BRAVO!”和“WONDERFUL!”连声称赞。
敢于说“是”的重要性不亚于说“不”。为了让自己有说“是”的底气,程序员应该努力寻找创新的方法以确保完成任务,尽可能做到有求必应。
第四章《编码》
本章的主题图是Bob大叔18岁时用穿孔机练习盲打的情景。
编程和盲打一样,要精熟掌握编程能力的关键是要具备信心和“出错感知能力”,编码期间保持充足的睡眠、健康的体魄、科学的生活方式是信心和“出错感知能力”的源泉。
Bob大叔最糟糕的代码是凌晨3点写出来的,疲劳或心烦意乱的时候程序员的能力处于最低点。作为想让程序员发挥最大工作效率的老板,不要让程序员熬夜加班。
第五章《测试驱动开发》
本章的主题图是1999年Bob大叔向老专家Kent学习TDD的要义的画面。
TDD不仅仅是一种用于缩短编码周期的简单技巧,也是一项能够提升代码确定性、降低代码错误率、优化文档和设计的原则。不遵循TDD原则的程序员难以称之为一个专业的程序员。
第六章《练习》
本章的主题图是卧病在床仍耕不辍的Bob大叔的电脑里飘出了灯神(外国的“下笔如有神”?)
Bob大叔用武术比喻编程,利用8小时以外的时间增强自己的技能是对自己负责的表现,尽管每人为你练习付钱,却有人为你练习的成功付钱。
当然,练习错误的东西会对程序员的成长产生南辕北辙、背道而驰的影响,比如跟着一发功就能击飞十个徒弟的印度大师练习十年瑜伽,在UFC赛场上也不能用意念打倒中国的散打队员。
第七章《验收测试》
本章的主题图是1979年在外行主管Tom的瞎指挥下Bob大叔搞出了一个经不起电脑前真刀真枪考验的东西的画面(把看不见摸不着的软件系统画成看得见摸得着的机器人是因为软件系统画不出来)。
解决开发方和业务方沟通问题的不二法门是编写自动化的验收测试,这些测试必须以严肃的需求文档为基础才能保证结果不会造成模糊。
第八章《测试策略》
本章的主题图是1989年Rose项目上线前Bob大叔绞尽脑汁捉bug,身边的同事们一筹莫展。
QA是团队的重要组成部分,开发团队只有与QA紧密协作,才能获得更多的bug反馈,确保系统经历单元测试、组件测试、集成测试和探索式人工测试后达到“QA应该找不到任何错误”的标准。
第九章《时间管理》
本章的主题图是以Bob大叔为首的一群人和一座大钟打架(外国的“争分夺秒”?)
专业开发人员应该合理利用时间和精力,抵制优先级错乱,知道解决雪片似飞来的Crash比把logo大小调整成产品经理喜欢的尺寸重要。
程序员除了要珍惜8小时之内的工作时间,也应该用心管理8小时之外的学习时间,玩4年LOL的人一定没有刷4年LeetCode的人收入高。
第十章《预估》
本章的主题图是1978年的圣诞晚会上一醉方休的Bob大叔安慰因为预估时间太短而醉不成欢的Ken:“这就是我们真正需要的,所以,我一点儿也不生气”
威客网站上充斥着“做一个网上商城,要求达到国内一线电商标准,预算低于30000元,时间不超过1个月”的任务,外行老板常常低估软件开发的时间成本和人力成本,但为业务人员提供可靠的预估结果是专业开发人员的必备素质。
在本章Bob大叔介绍了几种做出可信预估的方法,也指出了程序员与业务方协商达到共识的窍门。
第十一章《压力》
本章的主题图是一个人的灵魂向主刀医生施加压力导致其不能冷静下来为自己的身体做心脏手术的画面。
很多老板有催逼程序员熬夜加班的习惯,除了造成前文所说的疲劳之外,压力陡增也会让程序员变成主题图中一边把手术器材摔得叮咣乱响,一边咒骂时间不够用的主刀医生。
如果老板不具备不给程序员额外压力的素质,程序员就必须具备压力面前冷静果断、面不改色的能力,以战胜由咄咄逼人的老板和deadline带来的压力。
第十二章《协作》
本章的主题图是22岁时的Bob大叔和他的同事Tim协作调试为切割电子元件的激光用的软件后一起欣赏软件操纵激光生产电子表的画面。
程序员是一个多岗位配合的职业,程序员是需要与同岗位不同人、项目组不同岗位、不同项目组、不同部门、业务方打交道的极度依赖沟通能力的职业,与人协作的能力决定了程序员在编程之路上能走多远。
第十三章《团队与项目》
本章的主题图是榨汁机把一群人搅拌成不能称之为“团队”的混合物。
软件项目和战争一样,并不是靠人多取胜的。一团散沙的工作效率比不上一个组建稳健的团队,一个团队只有建立了凝聚力后才能成为持续输出项目的强大引擎。
本章中提到的“分析师”是负责关注行业领域、分析需求、测试功能的岗位,曾长期没有固定称谓:我上大学时软件过程管理课程称其为“领域专家”,需求工程课程称其为“需求工程师”。在移动互联网时代到来后才统一称之为“产品经理”,本书2016年再版沿用旧称是向Bob大叔奋斗一生的年代致敬。
第十四章《辅导、学徒期与技艺》
本章的主题图是平行世界里年轻时的Bob大叔没有走上程序员道路而是跟着魔法师做魔法学徒。
学校能传授的理论,但是一名程序员必备的原则、实践和技能只能培养而不能教。作为老人,不要对新手拖了你的后腿大发雷霆,谁都是从眼高手低的阶段过来的,培养新人是我们义不容辞的责任和义务。
从插图看《代码整洁之道——程序员的职业素养》相关推荐
- 《代码整洁之道 - 程序员的职业素养》读书笔记
一 前言 <代码整洁之道 - 程序员的职业素养>的作者是Robert C. Martin,大家喜欢喊他Bob大叔.这本书主要是Bob大叔40年编程生涯的心得体会,主要讲述了一个专业的程 ...
- 《代码整洁之道 程序员的基本素养》内容表达与读后感
关于本书: 本书的作者是大佬,资历丰富,能力强,项目也多.他写这本书的用意就是希望自己踩过的坑别人不要再踩.但是以我的经历来看,坑还是不断地再踩. 作者有本书论述敏捷开发及敏捷开发历史的,那本 ...
- 程序员的职业素养(一)
最近拜读了Bob大叔的经典书籍<代码整洁之道-程序员的职业素养>,真的从程序员日常工作入手,其中有很多问题也是我在工作中遇到的,如果当时看了这本书,现在应该会成长更快.不过现在也不晚,毕竟 ...
- 程序员的职业素养:向世界宣告“我是专业人士”
点击关注 异步图书,置顶公众号 每天与你分享 IT好书 技术干货 职场知识 Tips参与文末话题讨论,即有机会获得异步图书一本. "噢,笑吧,科廷,老伙计.这是上帝,或者也可以说是命运或自然 ...
- 【必读推荐】程序员的职业素养
整理了一下<代码整洁之道–程序员的职业素养>中一些受益匪浅的观点.这本书讲的并非是对技术的指导,而是程序员应该掌握的软技能,实际上它适合任何行业的人阅读,相信读完这本书也都能收获一些启发. ...
- 代码整洁之道:程序员的职业素养 读书笔记
代码整洁之道:程序员的职业素养 作者:(美)罗伯特 C. 马丁(Robert C. Martin) 译者:余晟,章显洲 这是一本风趣幽默的关于程序员的故事书,这本书让我在专业技术之外,了解了更多程序员 ...
- 《代码整洁之道:程序员的职业素养》一一1.5 参考文献
本节书摘来自异步社区出版社<代码整洁之道:程序员的职业素养>一书中的第1章,第1.5节,作者:[美]Robert C. Martin(罗伯特 C. 马丁),更多章节内容可以访问云栖社区&q ...
- 读书笔记-程序员的职业素养
读书笔记-程序员的职业素养 读书笔记-程序员的职业素养 序 前言 引言 第一章 专业主义 第二章 说不 第三章 说"是" 第四章 编码 第五章 测试驱动开发 第六章 练习 第七章 ...
- 不能跳过的《程序员的职业素养》(The Clean Coder)中的一个章节
我猜,你之所以拿起这本书,因为你是程序员,"职业素养"这个说法吸引了你.你应该如此.我们这种专业人士迫切渴求的,正是"职业素养". 我也是程序员.我编了42年 ...
最新文章
- python怎么读文件里的指定几行-Python从文件中读取指定的行以及在文件指定位置写入...
- python代码打好了怎么运行-python代码是怎样运行的
- ArrayList用法说明
- c# TCP高性能通信
- 1093 字符串A+B (20 分)
- oracle连续状态相同,数据库共有三种状态:quiesce、resrict、suspend
- FullCalendar 一: 日程安排FullCalendar
- 手机MODEM 开发(23)---Modem1 NVRAM基础知识总结
- qchart 怎么点击一下 出一条线_疏通身上一条线,很多难缠病,不知不觉消失了!...
- linux scp 遇到空格
- SpringBoot整合JavaMail---发送邮件
- 图像识别的核心思想是什么!
- Win10 清空回收站选项点不了怎么解决?
- latex参考文献引用【bibtex】
- 有趣吧–中国最大的在线制作漫画社区 开站了
- 湖南学计算机专业单招学校排名,湖南学计算机那个单招学校比较好(湖南民族职业学院)...
- CloudCompare学习记录(一)主要概念
- pygal画世界地图
- App兼容性测试/MONKEY配置和安装
- OA项目(部门管理模块)上
热门文章
- 酷炫的个人动态引导介绍页源码
- 双11倒计时3天!凯诘、华扬、多准:“三波段脉冲式促收”策略解读
- 图片内存太大怎么压缩?分享两个小妙招
- Android、Java 获取时间戳、年月日、时间戳转换为具体时间
- 入站规则关闭445端口的教程【也适用其他端口如3389】
- 【原创】利用动态二进制加密实现新型一句话木马之Java篇
- 深渊之刃 | Greenplum数据库之拉链表的实现
- 云闪解绑实名认证_闪耀暖暖防沉迷怎么解除 闪耀暖暖防沉迷是几个小时
- 仙剑奇侠传四完全硬盘版下载!!!
- 基于知识图谱的前后端(vue+django)分离的问答系统的设计与实现(三):前端开发