一、软件工程师应具备的素质
(
1
)具有扎实的计算机专业知识
这是软件工程理由能够从事软件一切工作最基本的前提,是软件工程最基本的素质,这要求软件工程师必须精通
高等数学、离散数学、电子学、编程语言、数据结构等课程。
(
2
)良好的语言表达能力和沟通能力
这是软件工程师应该具备的一个很重要的素质,因为软件工程师是为用户开发软件,常常需要直执着面对用户。
(3)
较强的工程经济分析能力
软件作为一个工业产品,它应当赚取足够的利润,才能软件开发公司生存下去。因此,从事软件开发的软件工程
师应当具有较强的工程经济分析能力,能够分析软件产品的市场前景和经济价值,并做出合理的投资效益预测。
(4)
健康的心理素质
开发软件本身就是一项艰苦的脑力和体力劳动,软件工程师开发成功一个软件,要经过反复修改,要花费大量的
进间和精力,这些都有要求软件工程师有较好的心理承受能力。
我觉得对一个 Developer 来说最重要的能力是学习和总结的能力,新的概念和技术层出不穷,没有好的学习能
力意味着终将落伍。另一方面,虽然软件的领域很多,发展又很快,但是基础的一些东西还是十几二十年都没有
很大变化的,这就需要
Developer 在学习的过程中不断地进行总结和比较,找到变化中那些不变的东西。比方说,
一个
Java 程序员转成.net 程序员我认为有一个礼拜时间就足够了,如果做不到是因为他对 Java 的学习本就不
深入
第二个重要能力是设计能力。对我们公司的 Developer 来说,语言和系统平台了解到一定程度就可以了,
“
没有必要过度深入下去。受限于精力,人很难做到即深且广,我认为广度比深度更加重要,我们是个开发 普通商
”
用软件 的公司,即便
Developer 懂得模板元编程和 Unix 内核这种东东,有多少机会能用到呢?所以语言和系
统学到一定程度就可以开始学习设计了。设计入手先看些
OO,UML 方面的书辑,逐渐领会设计模式和重构的价
值(这个需要一定的经验,没有足够经验打底又急于运用设计模式的程序我看过很多,大部分都看着很别扭),
设计的本质就是保持简单化--现在的实现要简单,应对将来的变化也能简单。
第三个重要能力是软件工程能力,有了好的技术功底和设计知识可以称其为优秀的程序员,可还未必是个好
的软件工程师,好的软件工程师必须要懂得软件工程。这方面可以多看看
RUP 和 XP 的书辑,不过如果没有切身体
会,软工类书籍读起来往往比较空泛。从
XP 或者 PSP 入手是个比较好的学习方法,学习这些轻量级的方法然后再
根据实际条件应用到平时开发中,进步就会很快了
我再补充几点:
1。追求完美的精神,从测试驱动也好,重构也好,在我看来都是将一个软件不断趋于完美的过程。追求完
美,是最好的驱动力
2。扎实的文档能力,在我看到文档的能力可以体现出一个程序员之后发展空间的大小。文档的过程就是总
结的过程,也是规划的过程。
3。至少在开发的某一方面基础很扎实,的确技术发展很快,要全才很困难。但是人有个能力叫做举一反三,
或者触类旁通。
程序员是一种技术工作,在
IT 的发展中有相当重要的地位,从底层硬件通讯协议的建立,到数据传输层的处理,