软件工程师基本素质(转)


我觉得对一个Developer来说最重要的能力是学习和总结的能力,新的概念和技术层出不穷,没有好的学习能力意味着终将落伍。另一方面,虽然软件的领域很多,发展又很快,但是基础的一些东西还是十几二十年都没有很大变化的,这就需要Developer在学习的过程中不断地进行总结和比较,找到变化中那些不变的东西。比方说,一个Java程序员转成.net程序员我认为有一个礼拜时间就足够了,如果做不到是因为他对Java的学习本就不深入

  第二个重要能力是设计能力。对我们公司的Developer来说,语言和系统平台了解到一定程度就可以了,没有必要过度深入下去。受限于精力,人很难做到即深且广,我认为广度比深度更加重要,我们是个开发“普通商用软件”的公司,即便Developer懂得模板元编程和Unix内核这种东东,有多少机会能用到呢?所以语言和系统学到一定程度就可以开始学习设计了。设计入手先看些 OO,UML 方面的书辑,逐渐领会设计模式和重构的价值(这个需要一定的经验,没有足够经验打底又急于运用设计模式的程序我看过很多,大部分都看着很别扭),设计的本质就是保持简单化--现在的实现要简单,应对将来的变化也能简单。

  第三个重要能力是软件工程能力,有了好的技术功底和设计知识可以称其为优秀的程序员,可还未必是个好的软件工程师,好的软件工程师必须要懂得软件工程。这方面可以多看看RUP和XP的书辑,不过如果没有切身体会,软工类书籍读起来往往比较空泛。从XP或者PSP入手是个比较好的学习方法,学习这些轻量级的方法然后再根据实际条件应用到平时开发中,进步就会很快了

  我再补充几点:

  1。追求完美的精神,从测试驱动也好,重构也好,在我看来都是将一个软件不断趋于完美的过程。追求完美,是最好的驱动力

  2。扎实的文档能力,在我看到文档的能力可以体现出一个程序员之后发展空间的大小。文档的过程就是总结的过程,也是规划的过程。

  3。至少在开发的某一方面基础很扎实,的确技术发展很快,要全才很困难。但是人有个能力叫做举一反三,或者触类旁通。

posted @ 2007-06-29 20:57  李济宏(Amadeus)  阅读(142)  评论(0编辑  收藏  举报