1. 引言

这一节作者介绍了自己的经历,从不上大学,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章 协作

与人协作,而不是一个人单打独斗,多了解业务知识。

  • 专业程序员的首要职责是满足雇主的需求,深入理解业务目标,了解手头正在编写的代码的业务价值是什么。
  • 专业程序员最糟糕的表现是两耳不闻窗外事,只顾一头将自己埋在技术堆里,甚至连公司业务火烧眉毛也不闻不问。

【技术脱离了业务场景,终究是空中楼阁。】

作者的因没有注意业务和内部人事结构,虽然技术很好,但仍旧丢了工作。