组建高效快速研发团队的必要角色

简介:
声明:本文是作者触感而发,不存在抄袭,如果有雷同,实属巧合,如果有不同的意见,请及时给作者留言。
       作者一直从事与网站开发有关的项目,本文所述的高效快速反应的研发团队组成元素并非放之四海而皆准,也与网站开发项目有关,并且只是理论求证阶段,作者尚未有实际的实践证明,如果有不足或者欠缺之处,请指教。
       在三层架构风靡IT界的当今,仍然有不少的公司对三层架构置之不理,具体原因不得而知。下面列出的场景不全面,但是也可以说明冰山一角。
1.  时间紧张,任何一个项目的客户都非常着急,公司也可以理解,程序员作为服务的最终实现人也比较着急,交付不了产品,客户不满意,公司受损失,个人的奖金也有相关的级联。为了DeadLine,不管怎样,把产品交付验收之后,公司拿到钱就皆大欢喜了。在这种利益驱使下,没有办法不抓紧时间以最快的速度实现产品代码的编写。那好吧,不择手段、分层不清晰、野路子、有问题百度一下等八仙过海,各显神通,之后就去喝庆功酒了,留下一堆只有自己才能勉强理解的代码。
2. 技术部组织结构不健全。公司为了节省成本,招聘过多的初级程序员,缺少高级职称的人带领指导项目的完成。初级程序员比较多这个问题基本上不是大的问题,公司在组建之初,都会考虑找一个信得过、技术比较好的人担任技术总监,掌控负责软件产品的技术方面。接到一个项目后,经过简单的需求调研,项目经理把项目划分为子项目按人头分配任务,要求按期完成任务交给QA部门就万事大吉了。
还有更多的场景有待大家共同研究,在IT的项目管理中,组建项目团队是技术总监或者项目经理必须要做的一件事情。诸多书籍中都讲过,组建项目团队需要考虑项目团队需要什么样的角色,根据角色挑选合适的人才,大多数书籍中也讲解了如何面试潜在的团队成员。其中关键的部分,也是每个技术总监或者项目经理都需要思考的问题却无法一一说明白,即团队需要什么样的角色,如何确定这些角色,这些角色之间存在什么样的关系,每个角色最终需要交付什么样的产品,以及如何确保交付产品的质量。这个问题在不同的行业,不同的团队中有不同的答案,没有统一的答案,因团队的性质和规模不同而有差异。因此任何一本IT项目管理书籍都不会描述这个问题,因其不可能找到一个普遍的答案。以下是作者在开发基于SSH框架的WEB应用程序中关于团队角色的一些思考。
1. 需求调研角色。在中小企业项目应用中,一般在销售把项目谈下来之后,客户想尽快的看到项目的效果,因此需要尽快的出来一个原型。客户对原型确认之后,项目团队也许会根据这个原型进行继续开发,或者重新制作,原型可以用原型工具生成。因此,需要一个需求分析角色对项目的整体需求进行把关和确认。这个角色一般是项目经理或者由项目经理直接指派的队友,其主要的作用是对客户的需求进行整理和确认,把客户的需求用程序员可以读懂的语言描述出来,其提交的内容为用户需求文档,要求无二义性,准确,并能被程序员实现。
2.    美工,美工的作用显而易见,就是设计漂亮的UI界面,让用户看起来赏心悦目,从感性上能有一个好的印象,最好能让用户感觉这个特别为他设计的界面比别人的好,钱没有白花,或许能在上级面前邀功。
3. UI工程师,这个角色的主要任务是根据美工设计的界面制作出静态网页,提交的内容为HTML集和一些JS代码,由于一些效果的特殊性,因此必须借助于JS来实现。一般的美工设计人员对于编程不熟悉,他们的使用PS等工具切割生成的HTML代码也不精简,或者样式需要重构等,UI工程师必须对这些代码进行重新整理,并对循环的代码块进行注释,以便于界面开发人员使用。提交的产品应该代码简介,格式明确,方便阅读
4.  action工程师,根据业务的需求写Action类(兼配置文件)以控制用户数据交互,主要依据UI工程师的结果并调用Service工程师写的接口。在Action中不执行业务逻辑,只做一些简单的界面逻辑判断和数据封装。比如把页面提交的数据封装为类的实例,或者从会话中取得用户的状态。
5. service工程师,根据业务的需求写service接口和实现(兼配置文件),供Action工程师调用,service的实现依赖于dao工程师的接口。在service层,把action的调用作为一个业务进行封装,并返回业务执行的结果,比如,在action层调用登陆验证,在service层进行验证,验证成功后填写用户登录日志。是否填写用户登录日志这样的业务对于action的调用者是未知的,action只调用service的接口并对返回结果进行判断。
6.   dao工程师,顾名思义,dao工程师提供dao接口和实现(兼配置文件),供service层使用,dao层只关注的数据的存取,并返回封装后的结果。在dao层不应该包含任何业务逻辑判断的代码。
7. db工程师,根据业务需求设计满足业务需求的数据库定义,并对数据库进行相应的优化,提交的内容为数据库定义的Sql语句、相应的说明文档,以及包含测试数据的sql语句。
8.  test工程师,测试工程师的主要工作是对action层,service层,dao层,数据库写测试代码,包括测试类和测试的sql语句。
9.  综合管理角色(可以为团队中的任何人),主要工作为开发环境的搭建,代码版本控制,编程规范扩展,代码规范执行检查,争端仲裁,进度控制,技术选择。并随时准备为团队中遇到困难的成员解决问题。这个角色很重要,必须能有单独的一个人能有足够的时间解决团队的问题,并为团队中的成员提供技术支持等服务,这个角色在某些特定的场景下可以由团队中的任何人承担,尤其在技术咨询方面,部分团队成员对某一个特定问题的理解更深刻。
以上9种角色可以进行合并,在中小软件公司中,由于资源的限制,不得不合并一些角色。美工可以担任部分UI工程师角色,service工程师可以同时担任daodbtest工程师角色,action工程师担任部分UI工程师,项目经理担任综合管理和需求调研角色。在需求确定的情况下,一个用例经过充分沟通后,应该产生以下几种类型的文档:数据库设计,dao接口,service接口,action类,UI数据交互,界面设计,测试代码。这些文档需要团队成员共同讨论并确认,以此形成项目任务,作为制定项目计划的参考。
无论团队人员有多少,对于一个好的项目实现来说,研发团队中应该包含以上角色。这样做的好处是:团队成员任务明确,分工精细,责任到位,合作愉快,方便制定计划。这样写出来的程序方便扩展和维护,遇到问题时可以快速定位并进行响应,有利于制定代码规范,新团队成员能较快的融入团队,增强项目的可延续性(部分团队成员的流动不会对程序的开发造成大的损失,很少出现只有一个成员了解某些代码逻辑的情况)。Good Luck,祝愿你所在的团所有成员合作愉快。
本文转自凌辉博客51CTO博客,原文链接 http://blog.51cto.com/tianli/213915如需转载请自行联系原作者

lili00okok
相关文章
|
28天前
|
存储 监控 安全
远程协作利器:项目管理软件助力团队高效合作
在后疫情时代,远程办公成为许多项目团队的选择。面对协作挑战,如设定目标、沟通和管理分布式团队,项目经理可借助项目管理软件提升效率。这类软件支持**项目规划**,如使用甘特图制定任务和依赖关系;实现**工时管理**,监控项目进度和预算;并促进**团队协作**,通过集成工具保持沟通和文档同步。例如,Feeds、Forums和Documents功能帮助保持团队同步和知识共享。
12 0
|
9月前
|
敏捷开发 存储 设计模式
大型项目技术负责人应该具备的能力
大型项目技术负责人应该具备的能力
66 0
|
敏捷开发 前端开发 项目管理
在YesDev研发协同工具,项目协作 All In One
值得注意的是,YesDev中所定义和提倡的项目,是指在一定时间周期内完成的有限需求、任务和问题的集合,对应敏捷开发中的一次迭代或Scrumn的一个Sprint。
|
传感器 编解码 运维
研发团队管理:IT研发中项目和产品原来区别那么大,项目级的项目是项目,产品级的项目是产品!!!
研发团队管理:IT研发中项目和产品原来区别那么大,项目级的项目是项目,产品级的项目是产品!!!
|
运维 监控 架构师
漫谈“架构团队”之组织架构(下)
漫谈“架构团队”之组织架构(下)
196 0
漫谈“架构团队”之组织架构(下)
|
存储 弹性计算 运维
30人的产研团队如何高效协同?
工具选型及使用建议对于中小企业,基本都不会自己搭建服务器和机房进行部署,而是选择各大云平台,选择一款SaaS项目管理工具可以极大的降低运维成本。
911 0
30人的产研团队如何高效协同?
|
安全 程序员
团队紧密协作
团队紧密协作
107 0
以人为本--创建最好的开发团队
以人为本--创建最好的开发团队
528 0
|
新零售 Devops 测试技术
承担集团数万应用、研发人员日常工作,阿里持续交付平台的设计、迭代之道
阿里持续交付平台已经经历了 8 年的不断迭代进化,成长为集团几万应用所依赖的最重要的研发工具,它的效率直接影响着几万研发日常工作。但平台不能只是工具的堆砌,更需要针对互联网时代的研发模式进行深度思考,不断打磨,将工程师文化和工程师实践不断地融入其中。
3544 0