前言:软件技术发展到今天,分工越来越细。程序员做为一个通用称谓已经无法确切定义各种工作的性质和特点。因为软件开发中各种职责区分不清,无论是刚刚写代码的新手还是具有多年经验的老手,一概被扣上程序员的通用名称,这也使得很多进入这个领域的软件开发人员无法制订自己未来的职业发展之路。

  实际上,软件公司也认识到了对程序员分类的重要性,开始将各种职位定义得更加准确。对于从事软件开发的程序员来说,更需要尽快明确自己的发展方向,并在此方向上将专业知识积累得更深厚,这才能尽快摆脱对未来发展方向的迷茫。为此,我们专门推出程序员成长系列的特别策划,分别深入探讨软件设计师、测试工程师、文档工程师、项目经理、产品经理几种角色的成长之路。

  软件设计师可以构建软件结构,如同建筑架构师一般。比尔·盖茨被称为微软公司的首席软件设计师,中国同样需要这样的人才。

  --微软大中国区总经理黄存义

  2000年1月13日下午,世界软件业巨人、美国微软公司突然在位于华盛顿州雷德蒙德市的总部举行新闻发布会。比尔·盖茨把微软CEO宝座拱手让给长期伙伴史蒂夫·巴尔默,只保留董事局主席一职,但同时出任新职务"首席软件设计师"。比尔·盖茨说:"今后我将全力设计开发面向未来的新软件,同时研究制定微软的总体技术发展战略。"比尔·盖茨的这一举动给软件设计师的称谓蒙上了华丽的面纱。从程序员的技术方向发展来看,软件设计师无疑是职业生涯的顶峰。

  拿破仑说过"不想当元帅的士兵不是好士兵",借用这句话,不想当软件设计师的程序员也不是好程序员。不过首先要了解什么是软件设计师,如何才能成为软件设计师。明了这些,才有可能向软件设计师发展,创造更辉煌的程序人生。基于这些想法,我们采访了佳软CTO廖恒毅,用友软件副总工程师彭六三和U8事业部总设计师邓适宜,这些中国软件产业技术带头人从他们的切身体会谈了对软件设计师的看法。

  软件设计师的定义

  软件设计师包括软件系统设计师(System Designer)和软件架构设计师(Architect)。系统设计师应对"系统结构"所使用的软件技术非常了解,自身具备良好编程技巧,才能成为优秀的系统设计师。系统设计师的职责是把结构模型对应到实现模型上,从概念到实现期间规划和组合模型的优劣是决定软件系统设计师好坏的标准。