第一版
第二版
第一章 务实的哲学
一个务实的程序员能够透过问题表面,将问题放在更宽泛的上下文综合考虑。
了解当前项目的来龙去脉,有利于把握项目接下来的发展脉络。
要做到以上几点,要大量的知识和经验。
人生是你自己的,是你在拥有、经营和创造。
在自己的职业发展、学习教育,以及项目和每天的工作等方面对自己负责,对自己的行为负责。
团队需要能够信赖我,我也要信赖团队里的每个人。
我想承担责任意味着我对这件事很是认同,保证能够完成,并做出承诺。我还必须分析超出我能力的风险情况。
如果责任并不明确,或是风险过大,都有权不承担责任。
不要把问题归咎于其他人,多想想自己能做什么。
提供选择,别找借口。
别害怕请教别人,别害怕承认自己需要帮助。
在说“我不知道”后,一定补上“——但是我会去搞清楚”。
软件的熵——软件的混乱程度。
负面情绪容易传染。
不要放任糟糕的设计、错误的决定、低劣的代码不去修理。
First, Do No Harm.
软件开发过程中,对应急问题的处理办法,不要干扰正常代码的运转。
项目协作:知道如何“借来”资源。找到合理需求,不断完善,一旦有成果的展示给大家看,这时可以说“当然了,它可以更好,只要我们再加点……”这句话。
持续审视身边和整个领域发生的事情,不要只专注自己在做的事情。
构建够好即可的软件。
投资知识,收益最佳。
知识组合:程序员了解的有关计算过程的事实、工作的应用领域,以及所有经验。
构建知识组合:
- 定期学习新知识。示例,每年学习一门新语言、每月读一本技术书、读非技术书、上课、加入本地用户组/交流群、尝试不同编程环境、与时俱进
- 拓宽知识边界。别人的每次提问都是一个学习的机会。
- 不要学习即将淘汰的技术
- 在新技术流行以前开始学习
- 评估哪些技术在未来前景更好
批判性思维:不要让自己的大脑成为别人思想的跑马场。
几个和批判性思维相关的问题:
- 问“五个为什么”
- 谁从中收益
- 这件事发生的背景是什么
- 什么时候在哪里可以工作起来;当它结束后还会发生什么
- 为什么是这个问题
交流很重要。作为开发人员,必须在多个层次上进行交流:
- 开会与老板同事交流
- 和最终用户交流,理解他们的需求
- 编写代码与机器交流
- 编写文档,与下一个阅读文档的开发者交流
- 写建议和备忘录,用于资源申请、报告现状以及提出新的解决方案
了解听众,明白自己想说什么,选择时机,根据听众调节表达方式,让它看起来不错,让听众参与进来,做倾听者,回应别人,把代码和文档绑在一起。
网上交流,特别是电子邮件,同样需要注意以上几点,一些建议:
- 点击发送按钮前先校对一遍
- 检查一遍拼写,找到有可能是自动纠错没做对的地方
- 用简单的格式
- 尽可能少地引用原文
- 如果要引用别人的邮件,一定要注明出处,而且是内联引用(不是放在附件里)
- 不要在网上侮辱别人
- 在点发送前,检查一下收件人列表