程序员六大职业素养

提及职业素养,可能你们脑子里立刻反映出来的是西服领带公文包的精干白领形象,其实做为程序员来讲,外在可能没有那么重要,更多的是内在职业素养,本期调查分享了两个研发小组的故事,让你们在统计数据的基础上进一步了解——什么是程序员须要的职业素养?程序员

案例一:问题团队A安全

    D公司是个在发展壮大中的贸易公司,因为业务发展员工从刚开始的10人两年内增长到150多人,管理上出现了沟通效率低、对员工工做难以监控的现象。公司 想近期上OA系统,以增强公司的工做效率、支持快速增加的业务。通过几回与F开发公司的沟通后,双方肯定了合做意向。安排有两年开发经验的开发工程师苏 成,做为项目经理带领三个开发人员,开始了D公司的OA项目。架构

    因项目不大,没有特别安排需求工程师,而由项目经理与客户确认需求后进行开发,初为项目经理的苏成信心爆棚:对外,他想固然地按照合同后附的简单需求说明 草率开发;对内,他认为项目经理拥有绝对权力,任何关于开发的不一样意见都听不进去。在第一期快结束时,苏成已与项目组成员发生了N次争吵,你们纷纷要求调 离项目组,团队面临崩溃。框架

    在两个月未与客户沟通的状态下,苏成项目组向D提供了OA系统一期产品,按合同规定包括了:员工管理一项功能和其中四个子项。看完基本功能演示后,D公司 的HR经理Helen几乎崩溃——OA系统中员工管理没与考勤部分联系起来,并且在系统中增长一个新用户须要五步,十分繁琐,不少功能也与公司需求相差极 大。学习

    可是苏成却认为这些都是小问题,更让Helen气结的是要求增长一个小的统计功能时,他竟然说作不了。后来才了解到,原来在开发时,项目组并无留下文 档,加之团队其它几个成员均已准备离开项目组,任何在此模块中的小小变化都会面临全部代码从新开发的局面,更不用说要新增什么功能了。测试

    最终苏成辛苦开发了几个月却没有获得相应地回报,客户不满意,项目组成员不满意,研发部总监更是对他的能力产生了怀疑,在几经努力拿到D公司的第二期项目开发合同以后,更换了项目经理。编码

点评:程序员如何以明确需求为基础与客户沟通?加密

    若是有专门掌握需求编写技术和经验的需求工程师做为客户和程序员之间的桥梁是最理想的状态。但以国内目前的国情,每一个项目组都配有需求工程师的并很少。因 此,正确地帮客户表达需求、正确地理解需求就成了程序员的基本素质之一。在这次调查中66.67%的被访者认为“能帮助客户正确提出需求”是程序员职业素 养之一,可见在程序员内部已就此达成了至关的共识。认为“能使客户需求更完善”是程序员看重的职业素养之一,占到这次调查的55.13%,这说明超过一半 的程序员认识到,帮助客户完善需求会节省双方的时间和精力。对象

那么如何才能提升本身的需求分析能力呢?如下分享几个有关需求的小技巧:项目管理

1.尽可能提升本身的表达和沟通能力。良好的表达和沟通能力能在客户不能清楚表达需求时,融入到客户组织内部,了解客户的工做流程,与客户共同更好地、更准 确地定义和分析需求。这次调查中60.90%的被访者认为沟通能力是程序员应具有的基本能力,但只有28.85%的程序员认为“表达能力”是程序员必备的 基本能力。沟通当然很重要,但咱们更应该进一步认识到准确表达本身的观点和意见也是成功沟通的基础之一。若是只“沟”而不“通”仍然是在浪费方面宝贵的时 间。

2.应用多种方式了解需求。经常使用的方法有:问题分析法和建模分析法以及几种方法的结合。好比在问题分析法中应用面向对象的思想,与客户的员工谈话,访谈首先要面向工做流程,面向任务,面向角色,也就是用面向对象的思想帮助客户理清思路。

3.不臆测需求。若是有专门的需求工程师,有一点要特别强调,就是在编码过程当中当需求不明确时,必须与项目经理或需求工程师及时沟通,程序员不能自做主张地猜想客户的需求。

4.不过分承诺。不少销售人员拿到项目,向客户大包大揽,甚至彻底不顾公司的现有开发能力向客户承诺不少功能。在定义需求阶段,必定要向客户说明“什么是 咱们能作的,什么是咱们应该作的,什么是咱们不能作的”。不少时候过分承诺致使了新功能没法实现的同时,原有功能也受到影响。在这次调查中,有 59.62%(近六成)的被访者正确地认识到对客户提出的不合理需求拒绝得当也是程序员职业素养的一个重要方面,这是很是可贵的。

案例二:严格开发流程的团队B

    国资委某下属集团公司要上OA系统,C公司在研发能力、价格两个方面以综合分第一的成绩竞标成功。拥有10年项目管理经验的李石被任命为项目经理,并由他组建团队。李石对团队成员只有三个要求:分析能力、产品意识、较强的团队意识。

 

初选方案

    需求肯定后,项目有两个方案:更流行的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项目第一期完成基本功能顺利上线。C公司已顺利拿到了客户第二期的开发合同。

 

点评:成功的开发须要这样的程序员

经过上面的案例,咱们为程序员总结出以下素养:

1.学习和分析能力。每一个团队都在成长,做为程序员这个群体就更须要“与时俱进”。尤为是在开发这个知识突飞猛进的行业里。同时分析能力也是必不要少的。 在调查中71.15%的程序员认为,学习能力很是重要,同时有57.69%的程序员认为,在技术方面有不一样的意见时,处理稳当是程序员应该具备的职业素 养。相信这个案例为咱们提供了新的思路。

2.与内外保持良好的沟通,永远是成功的保证。及时汇报、沟通进展也能够在第一时间发现本身的误差。数据证实59.62%的程序员认为“汇报项目进展时明确及时”是重要的职业素养。

3.产品意识。良好的产品意识能够大幅度提升开发效率,也能有效的弥补需求不足。例如,在案例二中,在作文件上传功能时,充分考虑了客户使用的方便性,弥补了需求中被忽略的细节。

4.团队意识。强烈的团队意识能帮助本身和整个团队更快成长,由于知识的分享是知识学习中一个最有效的方法,尤为是在程序员这个行当里。

5.编码规范和文档规范。据调查显示有分别由80.77%和68.59%的程序员认为编码规范和文档规范是程序员的必备职业素养之一。
相关文章
相关标签/搜索