从程序员到项目组
作者:9pts 本文选自:WPMI
在互联网的时代,软件项目的成功更大程度上取决于项目小组中那个体的成熟度和能力,而非个别程序员的个人魅力。所以,如何从程序员准确定位到项目组就是一个非常重要的转折点。
微软的Windows彻底改变了用户使用计算机的方式,此后,软件业便进入了快速发展的黄金时期,并因此成为推动计算机网络应用的最重要源动力。如今,在.com公司纷纷凋零之际,软件业更加逆流而上,以致各发达国家竞相将软件工程提升到重点产业的战略高度。作为软件行业的最基本细胞,程序员也成为了当今最热门的一种职业。
但最初的程序员,就像一个个斗士,更多的包含了个人英雄主义的色彩。他们在数字和字符中挣扎,在激流中顺应变化,在曲折迂回中寻找出路,面对着太多的困苦与压力:首先要耐得住个人奋斗的寂寞;其次,还要承受得住压力,有查不完杀不净的BUG在等待,有日新月异的技术在更新;再其次,更要承担得起挫折。因为或许费尽心血开发出的产品一朝便成了垃圾,更或许走过多年才发现必须回到起点重新开始。这种种的困难全都渡过去,才能成就一个优秀的程序员。但整体而言,仅仅凭借几个、几十个,甚至几百个数字英雄却很难铸造出一个强劲的产业。
实际中,大多数人都把软件开发人员想当然地默认为程序员。的确,程序员这个原本默默无闻地在后台辛勤耕耘的角色随着计算机的发展空前重要起来。微软的比尔·盖茨成了无数程序员的梦想,但程序员并不代表软件开发的全部,甚至可以说编写代码仅仅是软件开发中相对简单的一小部分。众知周知,在近乎已成流水线的软件产业发展中,依靠简单的密集劳动或几个数字英雄绝对不可能从真正意义上解决企业经营和管理上的问题,所以,要开发出成熟有效的产品,就必须要有一个强有力的团队共同协作,在一个成熟严密的项目体制中,需要很多角色担任不同的分工和责任。项目的成功系数更大程度上取决于团队整体的成熟度和能力,而非个别程序员的个人魅力。
再看看国内市场,我国虽然在网络门户、电子商务的模仿、借鉴和推动方面丝毫不亚于西方发达国家,但是在软件项目管理和专业人才的培养方面却大大滞后。所以如何将一个个自由英雄更好、更有效地团结起来,组建出高效的开发小组,已成为越来越多管理者思考的重点。
本文将对程序员的个人定位与项目团队的组成与发展进行简要的分析,希望与大家共同探讨。
软件项目小组的角色分工
软件项目小组大多是为实现一个特定目标而成立的团队,规模大小根据目标而定,从2个人到十几人甚至几十人、几百人不等,但通常都在20人以下。这样的小组集合了不同方面的专业人员,几乎每个做过开发的人员都会遇到以下的问题:
项目无法按期完成,完成以后还要不断修补完善,象一场噩梦遥遥无期;
项目进行当中人员流失,产品夭折;
客户需求不断改变,永远对开发完成的产品不满意;
开发成员之间矛盾不断,互相抱怨,工程进展缓慢;
小组成员分工不均,工作分配失去平衡等等; ……
为了避免噩梦的再次发生,也许下面的建议对您会有所启发和帮助:
在项目小组成立的时候,一定要有个项目负责人,我们称之为组长或项目经理。一个项目的成功与否,项目经理是最关键的因素,古人云:一将无能,累死千军。可谓一针见血。
项目经理根据需求制定出开发的目标,并选择最合适的人员组成项目小组。一个比较完整的项目小组可能由以下表1所列的角色组成,当然,有些角色是在项目小组成员比较少的情况下完全可能由一个人兼任,但并不意味着这些角色可以轻易地忽略:
clearcase/" target="_blank" >cccccc" height="30">
角色性质 |
角色分工 |
项目管理人员 |
|
系统分析人员 |
|
商务分析人员 |
|
交互设计人员 |
|
数据库工程师 |
|
程序开发人员 |
|
质量控制人员 |
|
技术支持人员 |
|
系统管理人员 |
|
辅助设计人员
|
|
角色 |
主要职责 |
工作流程 |
||||
获得 |
处理 |
输出 |
||||
系统分析员 |
软件设计 |
获得需求(来源:商务工程师、项目经理) 获得(提取)系统相关的角色 获得(提取)系统相关的用例 |
数据映射分析 |
输出系统模型工件文档(UML) |
||
界面设计师 |
用户界面设计 |
得到项目流程描述工件文档(来源:商务工程师、项目经理、系统分析员) |
理解项目界面控件类型及限制 |
输出界面描述工件文档 |
||
数据库设计师 |
数据库设计 |
得到项目数据对象工件文档(来源:商务工程师、项目经理、系统分析员) |
理解数据库设计要求 |
输出数据库定义工件文档 |
||
程序员 |
代码实现 |
获取界面描述工件文档HTML等)(来源:界面设计师) |
理解工件意图 |
输出程序源代码 |
||
美工 |
辅助VI企划设计 |
获取整体风格需求。(来源:项目经理) |
美工设计 |
输出界面模板 |
||
文档员 |
技术白皮书 |
获得产品计划及功能描述。(来源:项目经理、界面工程师) |
检测系统可操作性 |
输出各种文档 |