声明:本文是做者触感而发,不存在抄袭,若是有雷同,实属巧合,若是有不一样的意见,请及时给做者留言。
做者一直从事与网站开发有关的项目,本文所述的高效快速反应的研发团队组成元素并不是放之四海而皆准,也与网站开发项目有关,而且只是理论求证阶段,做者还没有有实际的实践证实,若是有不足或者欠缺之处,请指教。
在三层架构风靡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工程师能够同时担任dao,db,test工程师角色,action工程师担任部分UI工程师,项目经理担任综合管理和需求调研角色。在需求肯定的状况下,一个用例通过充分沟通后,应该产生如下几种类型的文档:数据库设计,dao接口,service接口,action类,UI数据交互,界面设计,测试代码。这些文档须要团队成员共同讨论并确认,以此造成项目任务,做为制定项目计划的参考。
不管团队人员有多少,对于一个好的项目实现来讲,研发团队中应该包含以上角色。这样作的好处是:团队成员任务明确,分工精细,责任到位,合做愉快,方便制定计划。这样写出来的程序方便扩展和维护,遇到问题时能够快速定位并进行响应,有利于制定代码规范,新团队成员能较快的融入团队,加强项目的可延续性(部分团队成员的流动不会对程序的开发形成大的损失,不多出现只有一个成员了解某些代码逻辑的状况)。Good Luck,祝愿你所在的团全部成员合做愉快。