Leo谈程序员的职业素养(下)
接《leo谈程序员的职业素养(上)》
案例二:严格开发流程的团队B
国资委某下属集团公司要上OA系统,几轮“残酷”招标之后CCC公司在研发能力、价格二个方面以综合分第一的成绩竞标成功。拥有10年项目管理经验的李石被任命为项目经理,并由他组建团队。李石对团队成员只有三个要求:分析能力、产品意识、较强的团队意识。
初选方案
需求确定之后,对于项目有两个方案,是用更流行的BS模式还是传统的CS模式?李石安排2个程序员前期负责先方案,他们分别基于BS模式和CS模式开发了的用户权限管理系统的原型,给大家做演示,结合客户特别评估每一个架构的优劣。
分析了BS/CS的特点、结合客户的需求,他们发现:
1、从流程的定制来看CS结构更加利于客户方便进行“可视化”定制;
2、从公文的“不可修改、保密性”以及电子图章的“不可诋毁性”需求来看,CS框架更加利于实现DRM技术和数字指纹技术实现;
3、从公文的打印需求与一般WEB报表的差异性来看,CS框架更加适合对打印格式的定制与控制;
4、从客户提出的内部电子会议的实时性来看:CS框架明显优于BS框架的非状态性,能够做到更顺畅、更及时的沟通;
5、从系统的安全性来讲,CS框架更加适合硬加密系统(如加密狗、U盘Key)与系统的对接。
产品开发
在开发过程中李石强调每个程序员的产品意识,取得了不错的效果。比如客户要求一个能上传文件的功能时,并没有提出UI需求,团队B的程序员并没有简单完全任务了事,而是做出来一次能同时选取上传5个文件的程序。这种产品意识为客户使用带来方便,弥补了需求的不足。
团队配合
在团队B中,每个程序员都做到了完一个功能后与项目经理沟通进度、结果,并于负责测试的同事沟通,及时检测Bug,及时修改并及时回归。每个功能的实现都相对完善。及时的沟通与相互学习,还促进了团队磨合。
经过8个月的开发,OA项目第一期完成基本功能顺利上线。CCC公司已顺利拿到了客户第二期开发的合同。
Leo点评:成功的开发需要这样的程序员
通过上面的个案例,我们为程序员总结出如下素养:
1、学习和分析能力。每个团队都在成长,作为程序员这个群体就更需要“与时俱进”。尤其是在开发这个知识日新月异的行业里,同时分析能力是必不可少的。像本案例中,如果没有在充分了解客户需求的基础上的精准分析,很难想像最后的结果。;(调查中71.15%人认为,学习能力是程序员基本能力中比较重要的一条。另外,此次调查中57.69%的被访者认为,在技术方面有不同意见时,处理妥当的程序员必要的修炼之一。相信这个案例为我们提供了新的思路。
2、与内外保持良好沟通,永远是成功的保证。及时汇报、沟通进展也可以在第一时间发现自己的偏差。在改bug问题上,有些小bug,程序员可能比较容易就修改了,但有些比较难修改的bug,如果自己解决不了,应该像同事或者专家请教,甚至组织小组讨论,但有些程序员处理这种情况时,往往是自己琢磨半天,改不了,然后就放那去做别的事情了,等过几天项目经理问起来时,才承认自己改不了,这种现象应该最大程度地避免。毕竟,相差一度两条线顶点的距离会在不限延伸后相差不限大。(59.62%的被访者认为“汇报项目进展时明确及时”是程序员内在修炼的重要组成)
3、产品意识。良好的产品意识可以大幅度提高开发效率。某次产品改版中界面都重新修改过了,因为有2个程序员专门负责编程匹配部分,而其中一个就非常具有产品意识,他用.NET把UI原形都画了出来,在公司内部组织讨论,让最后的客户环境和界面都非常优秀。
4、团队意识。作为一个新人要向老人请教学习,作为一个老人要把自己的心得、收获、技能等与新人分享,也就是要带新人。知识的分享是知识学习中一个最有效的方法,尤其是在程序员这个行当里;
5、对于编码规范和文档规划是毫无疑问必须要遵守的。(此次参加调查的程序员中有80.77%认为编码规范是程序员内在修炼的毕选项。、68.59%认为文档规范是修炼的必要内容。)