上个月28号,我向某新项目技术邮件组发出有关该项目的第一封邮件,开始执行在该项目的角色。快一个月了,简单做个片面性的总结:
一、关于技术
和人人不一样的地方:
我们使用velocity而非jsp作为视图技术:一在于它的职责单一性、语法简单性,第二方面在于它和rose的良好集成。我们使用了layout技术,即在想要的地方(/views目录下)创建了layout.vm,layout就自动生效了。
我们使用tomcat作为web服务器:今年是2011年了,那种曾经认为resin 好于 tomcat的年代已经早早过去!tomcat已经成为最受欢迎的web容器,resin代表落后和死亡。在版本方面,我们觉得6版本经历了长时间的检验,稳定性得到了保证,完全符合我们的期望!
我们使用git作为源代码管理工具:选择 git 是本次选择最重要的选择。这个选择争议性是比较大的,虽然大家的表达是比较含蓄的。一开始几天我们的确还在使用Subversion来管理,12日的时侯我们果断进行迁移!现在我们在git环境下工作了10天了。
关于选择git我想在多陈述几句:
我认为我们开发团队到现在为止(也就使用10天)还不是所有人都把git完全用好,一部分人还是把 git 当 svn用:从“版本库”中“检出”下代码,改吧改吧,然后“提交”一部分。他们随时会将部分代码“提交”(因为别人正在依赖他的“部分”!);我们的团队的一部分人还是习惯通过Eclipse的git插件或windows下的小乌龟来工作。
关于使用git,目前我们是这样实践的:
二、关于质量管理
我把质量管理分为:架构管理、代码管理、产品管理、进度管理
架构管理(架构师):
管控model设计、表设计、控制关键业务逻辑到技术策略的转化、识别技术风险;
管控REST API设计
review资深工程师的技术工作
代码管理(资深工程师):
管控工程在SCM中的结构、分层及其职责、编程规范和鞭挞
管控公共基础设施
指导代码编写
产品管理(测试工程师):
这个工作由测试工程师完成。
在我的从业生涯中,从来都是最重视测试工程师(胜于对开发的重视)。
每当一个项目由我主导,当我讨论需求、讨论各种方案的时侯,我身边必站有测试工程师(一般都是MM,哈哈)
进度管理(项目经理):
这个由项目经理来管控。其安排时间的使用,哪些任务重要,哪些任务优先,确定计划后不断check这个计划,辨识可能风险(要以事实为依据)并不断调整,想法设法寻找各种资源解决问题(倒计时是一个不错的工具)。
我这样看待质量管理:质量管理应该时时刻刻、紧密伴随代码开发
对我们这次新项目开发在这些质量管控方面,哪些做的好,哪些有待改进,在此公开场合不便分享,请原谅)
至于Scrum,就像很多架构师已经不再拘泥于“设计模式”,我们并不拘泥于“Scrum”,心中无剑更胜剑
三、关于团队
我们做项目:
一、 为了完成社会赋予企业的责任:具化公司使命生产产品
二、 为了使自己有价值感:我们是有价值的,从而我们可以获取一分收益
三、 为了使自己得到成长:通过实践,我们获得更多的见识和感悟
以上是从个人的角度来理解个人的使命以及项目给个人带来的幸福和快乐。
同时项目对个人也是有要求:
1、 要严格执行各种规则、规范,执行相关的约束
2、 要接受挑战(无论来自谁)
3、 要积极地(不要懈怠)、严密地(不要漏洞百出)完成项目
最后回到技术上,这次我们采用的是 “代码是所有人的” 的策略(效果还没有完全出来,还需要些时间)
以上,冬至