《代码整洁之道:程序员的职业素养》摘抄

上个月看了这本书《代码整洁之道:程序员的职业素养》,觉得每一个程序员都应该看看。今天抽个时间摘录一下里面的句子,相信你们在工作中也会碰到这些问题。

这本书谈到作为一个程序员经常会遇到的问题,比如什么是专业的程序员、如何与不切实际的管理员打交道、如何测试、预估截止期限、工作压力、加班等等。这本书没有说如何定义变量名、如何构建代码这些具体问题,而是说

成为真正的专业的程序员,需要什么样的态度、原则、行动?

下面摘抄里面部分句子

我在招聘时常问的一个问题是:在你过去的工作中,遭遇过哪些印象深刻的困难,最后是怎么解决的?以我的经验,简历写得再漂亮的人,如果这个问题答不好,大都可以直接忽略。为什么会有这种结论?因为我们需要招聘的不是经验丰富的人,而是有职业素养的人。

如果你不小心放过了某个模块里的一个bug,以致公司损失了10,000美元,结果将会怎样呢?非专业人士总会耸肩说:“状况总是难免的嘛。” 然后像没事人一样,继续写下一个模块,而专业人士会自己为公司的那10,000美元买单。

软件开发太复杂了,不可能没什么bug,但很不幸,这不能为你开脱。人体太复杂了,不可能尽知其全部,但医生仍誓言不伤害病人,如果他们都不拿人体的复杂性做托辞,我们又怎么能开脱自己的责任呢?

所谓专业人士,就是能对自己犯下的错误负责的人,哪怕那些错误实际上在所难免,所以,雄心勃勃的专业人士们,你们要练习的第一件事就是“道歉”,道歉是必要的,但还不够。你不能一而再、再而三的犯相同的错误,职业经验多了之后,你的失误率应该快速减少,甚至接近于零。失误率永远不可能等于零,但你有责任,让他无限接近零。

你怎么知道代码是否能正常运行呢?很简单,测试!一遍一遍地测,翻来覆去、颠来倒去地测、使出浑身解数来测。

你或许会担心这么狂测代码会占用很多时间,毕竟,你还要赶进度,要在截止日期前完工,如果不停的花时间做测试,你就没时间写别的代码了。言之有理!所以要实行自动化测试。写一些随时都能运行的单元测试,然后尽可能多的执行这些测试。

要用这些自动化单元测试测多少代码呢,还要说吗?全部,全部都要测 !

我是在建议进行百分百测试覆盖吗?不,我不是在建议,我是在要求!你写的每一行代码都要测试。

软件行业的飞速改变,意味着软件开发人员必须坚持广泛学习才不至于落伍。不写代码的架构师必然遭殃,他们很快会发现自己跟不上时代了;不学习新语言的程序员同样会遭殃,他们只能眼睁睁地看着软件业径直向前,把自己抛在后面;学不会新原则和技术的开发人员必将沦落,他们身边的人都日益卓越。

你会找那些已经不看医学期刊的医生看病吗?你会聘请那些不了解最新税法和判例的税务律师吗?雇主们干嘛要聘用那些不能与时俱进的开发人员呢?

委屈专业原则以求全,并非问题的解决之道,舍弃这些原则只会制造出更多的麻烦。

如果可怜的开发人员在压力之下最终屈服,同意尽力赶上截止日期,结局会十分悲惨,那些开发人员会开始抄近路,会额外加班加点工作,抱着创造奇迹的渺茫希望。这是制造灾难的最佳秘诀,因为这种做法给自己、给团队以及利益相关方带来了一个错误的期望,这样每个人都可以避免面对真正的问题,把做出必要的艰难决定的时机不断后延。因此,必须明白告诉老板、团队和利益相关方,让他们不要抱有这种期望。

交流细节信息是件麻烦事,尤其是开发方和业务方交流关于程序的细节时,更是如此。通常,各方握手言欢,以为其他人都明白自己的意思。双方以为取得了共识,然后带着截然不同的想法离开,这种事太平常不过了。

要解决开发方和业务方沟通问题,我所知道的唯一有效的办法就是编写自动化的验收测试。这些测试足够正式,所以其结果有权威性。这些测试不会造成模糊,也不可能与真实系统脱节。它们就是无可挑剔的需求文档。

QA找不到任何错误。当然,这个目标定得有点高,毕竟如果有一群聪明人联合起来决心一定要找出产品中所有的瑕疵和不足,他们肯定是能找出一些问题的。对 QA 找到的每一个问题,开发团队都应该高度重视,认真对待,应该反思为什么会出现这种问题,并采取措施避免今后重犯。

预估是软件开发人员面对的最简单、也是最可怕的活动之一了。预估影响到的商业价值巨大,关乎声誉,也给我们带来了很多的苦恼和挫折,预估是业务人员和开发人员之间最主要的障碍,横亘在双方之间的种种不信任,几乎都有它引发。

专业开发人员不随便承诺,除非他们确切知道可以完成。道理就是这么简单。如果你被要求承诺做自己不确定的事情,那么就应当坚决拒绝,如果要求你承诺某天完成,但是需要每天加班,周末加班,取消休假,那么最后的决定取决于你;不过不要违背自己的意愿去勉强。

在压力下保持冷静的最好方式,便是规避会导致压力的处境,规避的方式也许无法完全减除压力,但是可以大大降低压力并缩短高压力期的时间。

应对压力的诀窍在于,能回避压力时尽可能的回避,当无法回避实则勇敢直面压力。可以通过慎重承诺、遵循自己的纪律原则,保持整洁等来回避压力。直面压力时,则要保持冷静,与别人多多沟通,坚守自己的原则纪律,并寻求他人的帮助。

团队比项目更难构建。因此,组建稳健的团队,让团队在一个又一个项目中整体移动共同工作较好的做法。并且,团队也可以同时承接多个项目。在组建团队时,要给予团队充足的时间,让他们形成凝聚力,一直共同工作,成为不断交付项目的强大引擎。

Leave a Reply

Your email address will not be published. Required fields are marked *