关于编程,大学没教的10+1件事

Alberto Gutierrez在自己的Blog上发布了篇名为“关于编程,大学没教的10+1件事”的文章。

  1. 出错的总是我们。
  2. 要是事情会出错,它就一定会出错。
  3. 所有代码都是垃圾。
  4. 臭虫总会有。
  5. 客户最重要。
  6. 纸上设计无用。
  7. 少即多。
  8. 编码只是我们20%的工作。
  9. 客户不知道他们想要的,永远!
  10. 有人曾经做过。

意外收获:嘿!我们的工作很酷!

单看上面的内容,可能无法理解Alberto的真正意思:

  • 第1条其实是告诫开发人员不要太自负,多听少说。
  • 第2条想说的是测试的重要性,不要心存侥幸,对自己的程序要多测多调。
  • 代码的可读性才是第3条想谈的真实内容,太多人没有意识到阅读别人的代码有多困难。按Alberto的话讲:“即使我看到的最好代码,可读性也不 理想。”
  • 对于第4和5条,其含义不言自明
  • 稍微了解敏捷思想的读者应该对第6条不会太陌生,Alberto的意思就是纸上谈兵没有用,必须亲手去做才能了解实际情况。但他并非反对预先设 计。
  • 因此,预先计划和设计是非常有用的,但是不要陷入太深,而且不要把这些图当作契约一样不能变更。

  • KISS原则是第7条的 另一个名称。
  • 我们的工作不只是编码,还有测试、沟通、调试……,这就是第8条的意思。
  • 比起做产品的同学,做项目的同学对于第9条的感受可能会更大。如何更好地获得客户反馈,这是第9条给我们带来的思考。
  • 世界太大,从事我们这个行业的人员众多,说不定你目前要做的事情别人已经做过了呢?第10条就是这种意思,所以在做之前,先google吧……

文章发表之后,引起了广泛的讨论。

Santiago Valdarrama表示:

我认为每个预先设计都应该在沙子和手纸上完成。我用这种方法去完成存在时间不超过10分钟的事情。

预先设计是恶鬼。它吞噬时间,而且总是在你开始编码10分钟后就过时。

取而代之,用铅笔在一张你马上就会丢掉的纸上去完成临时的草图和备注。

Alberto对此回应说:

我并不特别喜欢进行大的预先设计,但我仍然认为花不超过30分钟的时间去做非常高层的设计还是必要的。

Gustavo Freitas非常认同第3点:

我认为阅读别人的代码是最难的一件事。我们的脑子可能还没有为那个逻辑或其他东西做好准备,但是不理解那些实现又不行。我们的职业不只是书写代码,它还涉 及耐心和灵活性。

Dathan认为新人很难认识到第5点,而认识到第10点的人则能够节约大量的时间。

对于“客户不关心项目使用的技术”,schnalle有不同看法。他表示,维护成本会让用户选择知名的开源技术。

Don Taylor认为预先设计不充分会导致代码变烂,而且还认为对于设计包含哪些东西存在大量混乱的想法。“第9条很重要”,Don说道。最后他补充了一点他 认为应该出现在这个列表上的内容:估算。

另一位读者,Kashif Baig,同样表达了设计的重要性。他的观点归纳为

  • 越是重要和关键的系统,预先设计越重要。如航空控制等
  • 好的设计可以帮助开发团队的工作划分

妙趣横生,同时发人深思,是对本文的最好评价。请一定要读读原文,该文亦有中文版

关于编程,大学没教的10+1件事》上有1条评论

发表评论

电子邮件地址不会被公开。

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>