08年初写的。话说我现在越来越发现,想写出好的代码真不是一件看上去那么简单的事情,要远远比学习某些特定的技术困难得多。
2008-01-23 19:37
阅读了Martin Fowler最新的一篇blog,颇有感触。
<a href="http://martinfowler.com/bliki/PreferDesignSkills.html" target="_blank">http://martinfowler.com/bliki/PreferDesignSkills.html</a>
这篇文章一开始就提到这样一个场景:假设你在招聘开发人员,现在有两个候选人都具有几年的开发经验,其中一个具有你所欣赏的一些设计技能(broad design skills),比如DRY、合理的使用模式、TDD、清晰易读的代码风格等等,却完全不了解你们当前正在使用的特定平台。而另一个开发人员则非常熟悉你们的平台——比如说语言、库、各种工具等等,但他对上面那些设计技能却一点也不感冒。假定两个人其它方面是完全等同的,这时候你会选择哪个呢?
Martin Fowler直截了当的选择了具有更广泛设计技能的那个。因为一个好的程序员应该能够相对较快的上手新的平台,哪怕是在一个平台上的设计技能可能不是完全适合另一个平台,而学习基本的设计美学则要困难得多。工作中是需要不停学习的,而就算说学习设计不比学习平台更困难,那也绝对不会更简单。对于一个积极的有广泛设计技能的人来说,一定能够及时的上手新的平台;而反过来就不一定了。有的人可以把某个平台的细节了解得很清楚,却从来写不出清晰的代码来。
Martin Fowler还在这篇文章里提到了开发人员其它一些重要的技能,比如与客户沟通的能力、对领域也就是业务的了解把握、与他人协作的能力和快速学习的能力等。一个理想的开发团队里需要所有的这些技能。有了领域专家和平台专家,一个具有良好的广泛设计技能的开发人员能够很快变得非常有效率起来。