本章为读者奠定务实思考的基调
「人生是你自己的」试图告诉你,让自己有更好的人生,你是有选择的。
「源码被猫吃了」可以看到务实的程序员总是因为责任感驱使为他们所做的一切负责。
「石头做的汤和煮熟的青蛙」介绍了推动变革的策略,因为惰性使然大多数人是不愿意作出改变的。
「够好即可到软件」强调了只有了解所做工作的来龙去脉,才能通过明智的妥协和合理的决策,把事情做到恰好。
「知识组合」中讨论了一些保持学习劲头的方法。
「交流」列出了让我们在交流上做的更好的方法,毕竟总是花大量时间和其他人打交道。
1. 人生是你自己的
软件开发在任何职业列表中,绝对是你自己最能掌控的职业之一。我们的技能供不应求,我们的知识不限地域,我们可以远程工作,我们收入颇丰。我们真的能做我们想做的任何事情。
这个行业给了你一些列非凡的机遇,积极主动点,掌控这些机遇。你有权选择,不要拒绝改变,不要缩在哪里,期盼着事情会自己变好。
2. 我的源码被猫吃了
你的团队需要能信任和依赖你,同样也应该放心地依赖他们每个人,因为团队信任对创造力和团队协作至关重要。一旦做事情不靠谱、拒绝承担责任,对信任的破坏是难以修复的。
你需要承担责任,那意味着你对某件事积极认同,并为之作出承诺。你不必掌控事情的每个方面,如果超出你的控制范围你可以不承担责任,你必须根据自己的价值观和判断作出决定。
承担责任后意味着你必须承接相关的义务,当你犯错误,诚实地承认它,并尝试给出选择。在归咎于其他原因之前,想想敷衍搪塞的物业、银行职员,你的反应是什么?你会怎么看待他们。
哪怕你不知道,“我会去搞清楚”都是一个好的开始,它意味着你接下来要像一个专家那样承担责任。
3. 软件的熵
软件中的无序化增加时,程序员会说“软件在腐烂”或“技术债”,潜台词是他们总有一天会偿还 — 恐怕不会还了。
最重要的一个导致软件腐烂的原因是项目工作中的心理状态:只要搁置“破窗”(糟糕的设计、错误的决定、低劣的代码)不去修理,项目就可能在生命周期中逐渐荒废、腐烂。
此前项目是不是一直良好并不重要,你要阻止衰退的开始,将代码编写地完美 — 编写清晰、设计优良、简洁优雅,其他人也会倾向额外小心,不把它弄糟。就像那些消防员,即使屋内火势熊熊(截止实现、发布日期、销售演示,等等),你也不想成为第一个弄乱它、造成附带损害的人。
4. 石头做的汤和煮熟的青蛙
故事中,士兵充当了催化剂的角色,将村名们组织起来,这样大家才能一起做到他们无法单独做到的事。
你清楚地知道需要做些什么,以及怎么去做,当你为做整件事情开始征求意见时,见到的往往是推脱和茫然的眼神。每个人都想守着自己的一亩三分地,这时候就该拿出石头了,提出合理的请求,然后不断完善。一旦有成果产出,展示给人们看,让他们大吃一惊。现在可以用上“当然了,它还可以更好,只要我们再加点…”这句话,而且假装你并不在意。这时坐下来等他们开始询问你要不要加些你原本想要的功能。
人们都觉得,加入一个推进中的成功系项目更容易一些。因为只要一窥未来,大家就能团结在一起。
温水煮青蛙的故事大家都听过,因为未觉察变化,最后被煮熟。永远要留意大局,持续不断地审视你身边发生的事情,而不是只专注于你个人在做的事情。
5.够好即可的软件
“够好即可”并不意味着草率或糟糕的代码,所有系统必须达到用户需求才算完成,包含功能、基本的性能、隐私和安全标准。提示:将质量视为需求问题。
不同的产品面临的约束条件不同,无视约束条件,一味地向程序中堆砌功能,一次次地打磨代码,是很不专业的表现。如果你不知道改什么时候停止,所有的努力都白费了,过度的修饰和精炼侵蚀掉一个完好的程序,不要紧的,就算不完美也没有关系。
心浮气躁当然不值得提倡,比如承诺一个无法兑现的时间尺度,然后为了赶上截止日期而删减必要的边角工程,同样是不专业的做法。
6. 知识组合
- 学习一门新的语言: Go
- 读一本新的技术书籍
- 和项目无关的人进行交流
7. 交流
分享、面对面沟通、邮件、博客都是交流,可以采用如下检查清单
- 明白自己想说什么
- 了解听众
- 选择实际
- 挑选风格
- 让它看起来不错
- 让听众参与
- 做倾听者
- 回应别人
- 把代码和和文档绑在一起