岗位:程序员
程序员(英文Programmer)是从事程序开发、维护的专业人员。一般我们将程序员分为程序设计人员和程序编码员,但两者的界限并不非常清楚,特别是在中国。
作一个真正合格的程序员,应该具有的素质。
1:团队精神和协作能力
团队精神和协作能力是作为一个程序员应具备的最基本的素质。软件工程已经提了将近三十年了,当今的软件开发已经不是编程了,而是工程。独行侠可以写一些程序也能赚钱发财,但是进入研发团队,从事商业化和产品化的开发任务,就必须具备这种素质。可以毫不夸张的说这种素质是一个程序员乃至一个团队的安身立命之本。
2:文档习惯
文档是一个软件系统的生命力。一个公司的产品再好、技术含量再高,如果没有缺乏文档,知识就没有继承,公司还是一个来料加工的软件作坊。作为代码程序员,必须将30%的工作时间写用于技术文档。没有文档的程序员势必会被淘汰。
3:规范化的代码编写习惯
知名软件公司的代码的变量命名、注释格式,甚至嵌套中行缩进的长度和函数间的空行数字都有明确规定,良好的编写习惯,不但有助于代码的移植和纠错,也有助于不同技术人员之间的协作。一些所谓的高手甚至叫嚣高手写的代码一般人看不懂,我只能说他不是一名合格的程序员。
4:需求理解能力
程序员要能正确理解任务单中描述的需求。在这里要明确一点,程序员不仅仅要注意到软件的功能需求,还应注意软件的性能需求,要能正确评估自己的模块对整个项目中的影响及潜在的威胁,如果有着两到三年项目经验的熟练程序员对这一点没有体会的话,只能说明他或许是认真工作过,但是没有用心工作。
5:模块化思维能力
作为一个优秀的程序员,他的思想不能在局限当前的工作任务里面,要想想看自己写的模块是否可以脱离当前系统存在,通过简单的封装在其他系统中或其他模块中直接使用。这样做可以使代码能重复利用,减少重复的劳动,也能是系统结构越趋合理。模块化思维能力的提高是一个程序员的技术水平提高的一项重要指标。
6:测试习惯
测试是软件工程质量保证的重要环节,但是测试不仅仅是测试工程师的工作,而是每个程序员的一种基本职责。程序员要认识测试不仅是正常的程序调试,而要是要进行有目的有针对性的异常调用测试,这一点要结合需求理解能力。
7:学习和总结的能力
程序员是很容易被淘汰的职业,所以要善于学习总结。许多程序员喜欢盲目追求一些编码的小技巧,这样的技术人员无论学了多少语言,代码写起来多熟练,我们只能说他是一名熟练的代码民工,他永远都不会有质的提高。一个善于学习的程序员会经常总结自己的技术水平,对自己的技术层面要有良好的定位,这样才能有目的地提高自己。这样才能逐步提高,从程序员升级为软件设计师、系统分析员。
作为高级程序员,乃至于设计师而言,除了应该具备上述全部素质之外,还需要具备以下素质:
1、 需求分析能力
2、 整体框架能力
3、 流程处理能力
4、 模块分解能力
5、 整体项目评估能力
6、 团队组织管理能力
岗位:项目经理
主要职责:
1、 计划:
a)项目范围、项目质量、项目时间、项目成本的确认。
b)项目过程/活动的标准化、规范化。
c)根据项目范围、质量、时间与成本的综合因素的考虑,进行项目的总体规划与阶段计划。
d)各项计划得到上级领导、客户方及项目组成员认可。
2、 组织:
a)组织项目所需的各项资源。
b)设置项目组中的各种角色,并分配好各角色的责任与权限。
c)定制项目组内外的沟通计划。(必要时可按配置管理要求写项目策划目录中的《项目沟通计划》)
d)安排组内需求分析师、客户联系人等角色与客户的沟通与交流。
e)处理项目组与其它项目干系人之间的关系。
f)处理项目组内各角色之间的关系、处理项目组内各成员之间的关系。
g)安排客户培训工作。
3、 领导:
a)保证项目组目标明确且理解一致。
b)创建项目组的开发环境及氛围,在项目范围内保证项目组成员不受项目其它方面的影响。
c)提升项目组士气,加强项目组凝聚力。
d)合理安排项目组各成员的工作,使各成员工作都能达到一定的饱满度。
e)制定项目组需要的招聘或培训人员的计划。
f)定期组织项目组成员进行相关技术培训以及与项目相关的行业培训等。
g)及时发现项目组中出现的问题。
h)及时处理项目组中出现的问题。
4、 控制
a)保证项目在预算成本范围内按规定的质量和进度达到项目目标。
b)在项目生命周期的各个阶段,跟踪、检查项目组成员的工作质量;
c)定期向领导汇报项目工作进度以及项目开发过程中的难题。
d)对项目进行配置管理与规划。
e)控制项目组各成员的工作进度,即时了解项目组成员的工作情况,并能快速的解决项目组成员所碰到的难题。
f)不定期组织项目组成员进行项目以外的短期活动,以培养团队精神。
结语:
项目经理是在整个项目开发过程中项目组内对所有非技术性重要事情做出最终决定的人。
岗位:系统架构师(技术总监)
主要功能及职责:
1、系统架构师是软件项目的总体设计师,是软件组织新产品的开发与集成、新技术体系的构建者。
2、系统架构师是在技术上对所有重要事情做出决定的人。(系统架构师在整个软件开发过程中都起着重要作用,并随着开发进程的推进而其职责或关注点不断地变化。)
3、需求阶段,软件架构师负责理解和管理非功能性系统需求,比如软件的可维护性、性能、复用性、可靠性、有效性和可测试性等。审查客户和市场人员所提出的需求,确认开发团队所提出的设计;组织开发团队成员和开发过程的定义;协助需求分析师完成《用户需求说明书》、《需求变更说明书》。
4、设计阶段,架构师负责对整个软件架构、关键构件、接口的设计。协助系统分析师完成《系统概要设计说明书》
5、编码阶段,架构师则成为程序员的顾问,并且经常性地要举行一些技术研讨会、技术培训班等;
6、测试及实施阶段,随着软件开始测试、集成和交付,集成和测试支持将成为软件架构师的工作重点;
结语:
系统架构师也可以理解成技术总监。系统架构师是在部门内所有软件项目中,对技术上所有重要的事情做出决定的人。
岗位:需求分析师
主要职责:
1、在项目前期根据《需求调研计划》对客户进行需求调研。
2、收集整理客户需求,负责编写《用户需求说明书》。
3、代表项目组与用户沟通与项目需求有关的所有事项。
4、代表客户与项目组成员沟通项目需求有关的所有事项。
5、负责《用户需求说明书》得到用户的认可与签字。
6、负责将完成的项目模块给客户做演示,并收集对完成模块的意见。
7、完成《需求变更说明书》,并得到用户的认可与签字。
8、并协助系统架构师、系统分析师对需求进行理解。
结语:
需求分析师是项目前期与客户方打交道最多的人,对于客户来说,他可以代表整个项目组,对与项目组成员来说他的意见可以代表客户方的意见,项目组内所有与客户需求相关的事情必需得到他的认可。
岗位:系统分析师
主要职责:
1、 协助需求分析师进行需求调研。
2、分析、解析《用户需求说明书》,将系统需求整理成《软件需求规格说明书》;
3、负责解决《软件需求规格说明书》被评审后发现的问题;
4、在分析系统前,负责向架构设计师解释《软件需求规格说明书》的内容。
5、协助架构设计师进行架构设计,并协助其完成《系统架构说明书》。
6、根据《系统架构说明书》对系统进行建模;
7、系统分析及建模完成后,负责将建模成果转化为《系统概要设计》;
8、协助数据库设计师按《系统概要设计说明书》进行数据库逻辑设计和物理设计,完成数据库CDM及PDM图,并协助其完成《数据库设计说明书》
9、协助软件设计师按《系统概要设计说明书》进行《系统详细设计说明书》。
10、指导软件工程师按《系统详细设计说明书》进行代码实现。
11、 负责重点代码检查;
12、协助项目经理进行配置管理,并提供优化改进建议;
13、定期对项目组成员进行技术方面的培训。
结语:
系统分析师是项目组中的首席执行官,他涉及项目的所有方面,是项目进度的推动者,也是项目成功的关键。
岗位:数据库设计师
主要职责:
1、根据《系统架构说明书》与系统架构师、系统分析师一同进行数据库建模。
2、根据数据库建模结果,绘制数据库CDM与PDM图。
3、 根据数据库PDM图进行数据库建库。
4、 对数据库进行维护、备份、恢复、同步。
5、 负责客户数据的导入导出。
6、 对数据库进行初始化操作。
7、协助软件设计师完成《系统详细设计说明书》中与数据库相关的部分。
8、根据《系统详细设计说明书》编写对应的视图、存储过程、函数、触发器等。
9、对项目组其它成员进行SQL方面的指导。
10、定期对项目组其它成员进行数据库方面知识的培训。
11、为测试经理及测试工程师建立测试数据。
结语:
数据库设计师又称DBA,是项目组中唯一能对数据库进行直接的操作的人。对项目中与数据库相关的所有重要的事做最终决定的人。
岗位:软件设计师(模块)
1、根据《系统概要设计说明书》编写分模块的《系统详细说明书》。
2、负责对软件工程师讲解《系统详细设计说明书》内容。
3、协助软件工程师按《系统详细设计说明书》进行代码实现。
4、 控制本模块的开发进度。
结语:
软件设计师又称模块设计师,协助系统分析师对分模块进行详细设计,并直接管控该模块的进度,对于本模块中所有重要的事做最终决定的人。
岗位:软件工程师
主要职责:
1.根据《系统详细设计说明书》进行代码实现;
2.对自己代码进行复查,并进行简单的测试;
结语:
软件工程师是最终实现代码的成员。
岗位:测试经理
主要职责:
1.独立编写测试计划;
2.独立编写测试用例;
3.协调测试团队内部的工作以及与开发团队之间的工作;
4.完成“执行测试”的工作;
5.掌握较深层次的测试方法、测试技术和较复杂的业务流程;
6.负责测试过程工具的研究、推广与维护,负责测试数据库维护工作;
7.负责编写《用户手册》、《操作手册》和相关培训教材;
8.负责项目的质量审查。
结语:
测试经理其实应该是整个项目中最关心项目质量的人,他的主要工作就是找到项目中存在的不合理、不合格的部份,并要求项目其它成员按其给定的项目质量完成项目。
岗位:测试工程师
主要职责:
1.在测试经理的安排和指导下,编写测试用例;
2.在测试经理的安排和指导下,完成“执行测试”的工作;
3.在测试经理的指导下,按测试计划进行测试工作;
4.按测试用例进行测试工作。
5.负责被分派项目的质量审计。
6.了解项目的基本流程,可以熟练的进行项目中各种流程的操作。
结语:
测试工程师是项目质量的保证,是最终进行项目测试的成员。
岗位:实施经理
主要职责:
1.负责制定项目实施计划;
2.在项目实施计划的约束下,协调项目组相关资源,完成系统实施相关工作(包括系统安装、用户培训、系统上线、系统试运行等);
3.在项目实施阶段,跟踪、检查实施人员的工作质量;
5.负责协助用户进行“用户确认测试”和编写《确认测试报告》。
岗位:实施工程师
主要职责:
1.在实施经理安排和指导下,执行项目用户现场实施任务;
2.参与编写《用户手册》、《操作手册》和相关培训教材;
3.参与进行“用户确认测试”和编写《确认测试报告》。
岗位:美术工程师
主要职责:
1.负责完成软件设计师安排的功能界面设计。
2.负责对项目整体色彩的调配。
3.向系统分析师提出项目美化的建议。
4.为BS项目提供一套或几套CSS样式表及HTML结构表
5.为CS项目提供符合项目内容的静态、动态图片。
6.并为软件设计师提供界面指导。
岗位:客户经理(当所开发的项目属于定制型的项目时设立,可由项目经理或部门经理兼)
主要职责:
1.策划并独立完成目标客户的拜访和沟通;
2.定期分析、整理客户需求,制定有针对性的方案;
3.进行重点客户的关系维护,了解并整理重点客户的需求,为开发更符合用户需求的产品提供富有价值的市场信息;
4.参与产品定位的研讨,为产品策划献计献策。
岗位:产品经理(当所开发的项目为产品型项目时设立,可由市场部成员兼)
主要职责:
1.对所负责的产品进行策划和管理;
2.对所负责的产品进行市场调研和分析,及时提出应对措施;
3.负责产品实现的内部管理,保证产品功能的顺利实现以及时满足市场需求;
4.负责产品对外宣传与推广,开拓市场,提高产品品牌知名度和认可度;
5.配合销售制订产品销售策略,支持市场销售业务。