最早从软件开发人员分化出来的应该是系统维护人员,最早的系统维护人员比较有意思,好的维护人员不但精通系统安装,使用,用户管理等方面的工作(基本上都是unix大拿),还要布置自己的局域网的布线等,甚至还会修理计算机.级别差的就沦落为开机/关机人员,每天的工作除了开关计算机基本无事可做。现在的系统比较复杂,由系统维护人员派生出了很多专业系统维护人员.比如数据库维护人员,网络维护人员,操作系统维护人员,web服务器维护人员.
开发人员第二次分化出来应该是测试人员,原来是没有测试人员的,一般都是开发人员自己负责自己的系统,不过这样做效果比较差,不但资源浪费比较大,而且效果也得不到保证,为了改进这这种情况,在一些开发组织中逐渐由一些刚进入企业的员工作承担测试,后来逐步发展为专业的测试人员.由测试人员这里引入了质量管理人员,也就是我们常说的QA,一般是在测试做的比较好的企业,领导发现测试对开发的作用还是比较有好处的,但测试往往受到很大的限制.发挥的作用有限,如果想进一步改进开发质量必须尽一步加强开发流程的管理,于是质量保证人员逐步脱离了测试(这也是为什么很多书总是将QA和测试放到一起的原因,但实际上这两部分的工作差别很大的).质量保证人员的另外一个分支是配置管理人员.
开发人员原来只有高级,中级,低级人员之分,但随着开发的日益复杂,人员也开始分化,从一个开发流程(瀑布型开发模型)看看各类角色是做什么用的吧.拿瀑布型来说,首先要做需求,作需求原来都是开发人员来做的,后来发现技术型的开发人员实在不适合做个工作,主要是一般的技术人员都不太擅长人际交往,他们说的话用户理解不了,用户的话他们理解也总是有问题,这样往往造成需求失真,于是干脆让那些善于和用户打较大的人员来做,于是出现了产品经理-----这些人不见得有多高的技术水平,但善于获得用户的真实需求,并转换为开发人员熟悉的需求说明书,而开发人员也可以专心地按照需求说明去开发,不用担心和客户的交流.系统的设计开发主角是开发人员.开发人员角色变化不大,但更加细化了,比如技术经理,主要是负责如何解决技术问题,有时候技术经理又可以细化问题框架设计师,负责系统的整体结构的设计,数据库设计工程师,负责设计数据库的结果(这些人主要负责概要设计),甚至还有一些专门的软件设计工程师,比如java工程师,主要是熟悉java的开发,或者.net工程师等(这些人主要负责详细设计).一般来说,框架设计师的级别最高,原因也很简单,一个是这个界别的人员需要了解所使用的开发工具和平台,还要熟悉客户的商业模型,需要很强的技术实力,综合能力和工作经验,个人的感觉一般要10年以上的开发人员才可能是一个好的框架工程师(架构师),而一般的java工程师相对而言就简单多了,只要熟悉你的开发平台就可以了,一般来说,如果个人努力1到2年的工夫就可以成为一个不错的java工程师.另外一个和开发人员类似的开发人员就是维护工程师,维护工程师是一个比较难定义的角色,一般来说有两个作用,一个是维护应用系统的维护工程师,这种类型的维护工程师需要对系统比较熟悉(了解给客户开发的应用系统,以及相关的操作系统,数据系统,web系统等配套系统),这个类型的工程师不需要很强的开发能力,但要善于和客户打交道,帮助用户解决实际使用问题.另外一个类型的维护工程师和开发人员比较类似,主要负责功能增加型维护,说简单一点就是需要具有开发能力.根据用户的需要,修改系统中存在的bug,以及开发新功能.
和开发相对应的人员是开发管理人员.比如项目经理和部门经理.项目经理就是负责一个项目的实施,对他最大的要求就是综合能力和交流能力,技术倒不是很重要,当然懂技术会给他的项目开发工作提供很大的方便.但如何组织项目内的成员完成项目才是他最大的挑战.部门经理根据不同的组织结构其作用差别很大,比如,大多数单位是项目在部门内,这种类似的单位,部门经理实际成了项目经理的领导.负责给经理调配资源,对项目经理进行监督和管理.另外一个形式(比如矩阵结构的开发组织),部门经理和项目经理是合作和斗争的关系,项目经理从部门调配合适的人员,部门经理对人员进行管理.配合项目经理的工作.
开发人员第二次分化出来应该是测试人员,原来是没有测试人员的,一般都是开发人员自己负责自己的系统,不过这样做效果比较差,不但资源浪费比较大,而且效果也得不到保证,为了改进这这种情况,在一些开发组织中逐渐由一些刚进入企业的员工作承担测试,后来逐步发展为专业的测试人员.由测试人员这里引入了质量管理人员,也就是我们常说的QA,一般是在测试做的比较好的企业,领导发现测试对开发的作用还是比较有好处的,但测试往往受到很大的限制.发挥的作用有限,如果想进一步改进开发质量必须尽一步加强开发流程的管理,于是质量保证人员逐步脱离了测试(这也是为什么很多书总是将QA和测试放到一起的原因,但实际上这两部分的工作差别很大的).质量保证人员的另外一个分支是配置管理人员.
开发人员原来只有高级,中级,低级人员之分,但随着开发的日益复杂,人员也开始分化,从一个开发流程(瀑布型开发模型)看看各类角色是做什么用的吧.拿瀑布型来说,首先要做需求,作需求原来都是开发人员来做的,后来发现技术型的开发人员实在不适合做个工作,主要是一般的技术人员都不太擅长人际交往,他们说的话用户理解不了,用户的话他们理解也总是有问题,这样往往造成需求失真,于是干脆让那些善于和用户打较大的人员来做,于是出现了产品经理-----这些人不见得有多高的技术水平,但善于获得用户的真实需求,并转换为开发人员熟悉的需求说明书,而开发人员也可以专心地按照需求说明去开发,不用担心和客户的交流.系统的设计开发主角是开发人员.开发人员角色变化不大,但更加细化了,比如技术经理,主要是负责如何解决技术问题,有时候技术经理又可以细化问题框架设计师,负责系统的整体结构的设计,数据库设计工程师,负责设计数据库的结果(这些人主要负责概要设计),甚至还有一些专门的软件设计工程师,比如java工程师,主要是熟悉java的开发,或者.net工程师等(这些人主要负责详细设计).一般来说,框架设计师的级别最高,原因也很简单,一个是这个界别的人员需要了解所使用的开发工具和平台,还要熟悉客户的商业模型,需要很强的技术实力,综合能力和工作经验,个人的感觉一般要10年以上的开发人员才可能是一个好的框架工程师(架构师),而一般的java工程师相对而言就简单多了,只要熟悉你的开发平台就可以了,一般来说,如果个人努力1到2年的工夫就可以成为一个不错的java工程师.另外一个和开发人员类似的开发人员就是维护工程师,维护工程师是一个比较难定义的角色,一般来说有两个作用,一个是维护应用系统的维护工程师,这种类型的维护工程师需要对系统比较熟悉(了解给客户开发的应用系统,以及相关的操作系统,数据系统,web系统等配套系统),这个类型的工程师不需要很强的开发能力,但要善于和客户打交道,帮助用户解决实际使用问题.另外一个类型的维护工程师和开发人员比较类似,主要负责功能增加型维护,说简单一点就是需要具有开发能力.根据用户的需要,修改系统中存在的bug,以及开发新功能.
和开发相对应的人员是开发管理人员.比如项目经理和部门经理.项目经理就是负责一个项目的实施,对他最大的要求就是综合能力和交流能力,技术倒不是很重要,当然懂技术会给他的项目开发工作提供很大的方便.但如何组织项目内的成员完成项目才是他最大的挑战.部门经理根据不同的组织结构其作用差别很大,比如,大多数单位是项目在部门内,这种类似的单位,部门经理实际成了项目经理的领导.负责给经理调配资源,对项目经理进行监督和管理.另外一个形式(比如矩阵结构的开发组织),部门经理和项目经理是合作和斗争的关系,项目经理从部门调配合适的人员,部门经理对人员进行管理.配合项目经理的工作.
本文讲述了软件开发过程中不同角色的起源与发展,包括系统维护人员、测试人员、质量管理人员、配置管理人员等,并介绍了这些角色如何从最初的软件开发人员中分化出来。
2619

被折叠的 条评论
为什么被折叠?



