把《程序员的职业素养》读薄
Contents
- 引言
这一节作者介绍了自己的经历,从不上大学,17岁开始实习,由于编程经验不足,而被开除。然后自学,两年后成为正式员工,那年19岁,后面因交付系统后老板没有按照之前的约定加薪,而与老板大吵,然后失业。浑浑噩噩过了半年,后面其母亲。对其说:
你的生活状态糟透了,只有傻瓜才会没有找好下家就辞职,才会这么冲动辞职,才会和同事一起闹事。辞职前一定要找好下家,要非常冷静,非常沉着,不要拉上其他人。
后面在母亲的指导下向老板求情,回去工作,生活和工作慢慢走上正轨,后面也有很多经历。作者也是一个传奇性人物呀。所以作者给本书的定位:
请你把这本书看成我的错误大全,它记录了我干过的所有蠢事;也请你把这本书当成一份指导,靠它绕过我曾经绕过的弯路。
第1章 专业主义
作者给出什么是专业主义以及如何做到专业主义。
第2章 说"不"
专业人士敢于说明真相而不屈从权势。专业人士有勇气对他们的经理说“不”。什么时候说不,如何说?看完之后内心比较压抑,在国内的环境真的能如此?
千万别说:“好的,我们会试试看”。没有试试看这回事。尝试意味着:付出额外的精力。许诺尝试就意味着你承认自己之前未尽全力,承认自己还有余力可施。许诺尝试意味着只要你再加把劲还是可以达成目标的;而且,这也是一种表示你将再接再厉去实现目标的承诺。因此,只要你许诺自己回去尝试,你其实是在承诺你会确保成功。这样,压力就要你自己来扛了。如果你的尝试没有达成预期的效果,那就表示你失败了。
第3章 说“是”
说“是”,就是那种确定一下的,而且一定要完成的。一旦发现完成不了就需要提前告之。
做出承诺的三个步骤:
- 口头上说自己将会去做
- 心里认真对待做出的承诺
- 真正付诸行动
第4章 编码
必须承认,编码时无可避免地会受到各种干扰。编码原则:若感到疲劳或者心烦意乱,千万不要编码。强而为之,最终只能再回头返工。去找到一种方法来消除干扰,让心绪平静下来。
第5章 测试驱动开发
此章介绍了测试驱动开发知识。
第6章 练习
任何事情,只要想做得快,都离不开练习。要想尽可能快地重复编码/测试过程,就必须能迅速做出决定。这需要识别各种各样的环境和问题,并懂得应付。
第7章 验收测试
P83 做业务的人和写程序的人都容易陷入一个陷阱,即过早进行精细化。业务方还没有启动项目,就要精确制知道最后能得到什么;开发方还没有评估整个项目,就希望精确要交付什么。双方都贪求不现实的精确性,而且经常愿意花钱来追求这种精确。
- 不确定原则:业务看到展现的功能就会获新的信息,从而会影响其对整个系统的看法
- 预估焦虑:评估只是评估而已,需要加入误差棒,以防止需求的变更
P84 相比解决分歧,更好的办法是换一种说法,所以会寻找各方都同意的关于需求的表述,而不是去解决争端。
P86 完成意味着所有的代码都写完了,所有的测试都通过了,QA和需求方已经认可
P88 验收测试的目的是沟通、澄清、精确化。与业务方、测试方协同工作,确保大家都明白要做的是什么,是自己的责任。
第8章 测试策略
P98 对QA找到的每一个问题,开发团队都应该高度重视、认真对待。应该反思为什么会出现这种错误,并采取措施避免今后重犯。
第9章 时间管理
这一章如何管理自己的时间,特别是如何参加或者拒绝会议。
- 将时间分为番茄时间和非番茄时间
- 番茄时间是生产率的,你可以真正做点事情
- 非番茄时间:用于应付干扰、参加会议、休息等非工作事宜的时间
- 一旦注意力不集中,需要恢复起来
- 与朋友聊天、看看窗外
- 反省,小睡、翻看杂志,听音乐
- 肌肉注意:运动、做非编程、哪种不是心智注意力的活动
- 保证每天睡够7个小时
- 到公司时候,安排每日生活,每一个小时留15分钟对付意外情况
- 对于会议,若无帮助或者无效,拒绝参加;如果会议让人厌烦,就离席。
第10章 预估
此章主要是讲什么是预估,如何预估。特别主义承诺与预估的区别:
- 承诺是必须做到的。如果你承诺在某天做成某事,就必须按时完成。即使它意味着你必须每天工作12小时,放弃周末的休假,也不得不如此。既然承诺了,就必须兑现。
【承诺是确定性,也就是言必行,行必果。不要随便承诺,那样你会死得很惨】 - 预估是一种猜测。不包含任何承诺的色彩。
【对不确定的任务,也就是那种不知道到底要花多少时间,做预估】
预估方法:三元分析法:
- O乐观预估,一切都很顺利
- N:标称预估
- P:悲观预估
第11章 压力
如何面对压力,主要是避免压力,无可避免就直面而上。
- 避免压力
- 谨慎承诺
- 保持整洁:快而脏;脏只会导致缓慢
- 危机中的纪律:测试驱动开发、流程图
- 应对压力
- 不要惊慌失措:保证充足睡眠、冷静思考问题,然后慢慢前进
- 沟通
- 依靠你的纪律原则
- 寻求帮助
第12章 协作
与人协作,而不是一个人单打独斗,多了解业务知识。
- 专业程序员的首要职责是满足雇主的需求,深入理解业务目标,了解手头正在编写的代码的业务价值是什么。
- 专业程序员最糟糕的表现是两耳不闻窗外事,只顾一头将自己埋在技术堆里,甚至连公司业务火烧眉毛也不闻不问。
【技术脱离了业务场景,终究是空中楼阁。】
作者的因没有注意业务和内部人事结构,虽然技术很好,但仍旧丢了工作。
Author: cloudfeng
Link: https://cloudfeng.github.io/2019/04/01/book_note/2019_04_01_the_clean_coder/
License: 知识共享署名-非商业性使用 4.0 国际许可协议