huweihong
作者huweihong·2010-06-25 09:47
软件开发工程师·自由职业者

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

字数 1314阅读 1357评论 1赞 0

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,同样表达了设计的重要性。他的观点归纳为

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

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

摘自 www.groovyq.net

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

0

添加新评论1 条评论

guanchuangshengguanchuangsheng系统工程师青岛四方
2010-09-16 21:44
出错的总是我们。   (该稳定在早就稳定了,我们附庸上去做应用,出了问题自然是我们的原因)
要是事情会出错,它就一定会出错。(这个我深有体会--我现在是项目支持~~)
所有代码都是垃圾。(优雅的代码,要么没见过,要么看不懂。很少见到自己既能看懂,又很顺眼的代码。当然,自恋型的程序员看自己的代码会如此~~)
臭虫总会有。(稍微有点儿规模的系统,没见过没有bug的东西呢)
客户最重要。(你的经理下个月度蜜月的经费来自于客户的验收签字)
纸上设计无用。(画的图画不能在CPU上跑)
少即多。(大简至美)
编码只是我们20%的工作。(测试、更改业务占去了很多时间。到头来发现,最开始做的工作都是无用功,但是又不能少)
客户不知道他们想要的,永远!(业务变更有很多原因,引导客户还是被客户引导是门学问)
有人曾经做过。(这个没弄明白....惭愧~)
Ctrl+Enter 发表

作者其他文章

相关文章

相关问题

相关资料

X社区推广