程序员六大职业素养
转自:http://vipnews.csdn.net/newscontent.aspx?pointid=2008_12_17_113115843
说起职业素养,可能大家脑子里马上反映出来的是西服领带公文包的精干白领形象,其实作为程序员来说,外在可能没有那么重要,更多的是内在职业素养,本期调查分享了两个研发小组的故事,让大家在统计数据的基础上进一步了解——什么是程序员需要的职业素养?
案例一:问题团队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%的程序员认为编码规范和文档规范是程序员的必备职业素养之一。
文/橙子 点评/职业顾问 Leo
(来自:《程序员》杂志 http://www.programmer.com.cn/)
分享到:
相关推荐
可能涉及的话题有:如何快速融入团队,了解公司文化,接受并处理工作中的困难,以及建立良好的工作习惯和职业素养。 第四章“正确判断公司情况”教导读者如何评估一个公司的整体状况,包括公司的技术实力、发展前景...
ACCP6.0课程体现了北大青鸟集团对于IT职业教育的深刻理解和持续创新,通过职业教育与企业需求紧密结合,有效地解决了学员与企业之间信息不对称的问题,帮助学员提升职业素养和技能,成功实现职业转型,最终达到企业...
《程序员的八重境界》这篇文章以幽默且深刻的笔触,描绘出了程序员职业生涯的不同阶段及其特点。文章不仅对程序员的各种层次进行了细致入化的划分,还鼓励每个从业者明确自己的目标与定位,追求属于自己的那份价值。...
学习云计算平台如AWS、Azure、Google Cloud,以及Hadoop、Spark等大数据处理框架,将拓宽程序员的职业发展道路。 十、软技能 除了硬技能,程序员还需要良好的沟通能力、问题解决能力、自我学习能力和团队协作精神...
### VC++程序员如何面试 ...综上所述,成功的面试不仅仅是技术实力的展示,更是综合素质和个人魅力的体现。通过精心准备和恰当应对,每一位VC++程序员都能够提高面试成功率,最终找到满意的工作。
* 年终总结还可以应用于java 程序员的职业技能和知识的提高,帮助java 程序员提高自己的职业素质和职业道德。 九、java 程序员年终总结的优点和缺点 * 年终总结的优点包括可以帮助java 程序员总结经验和教训,肯定...
8. **个人评价**:简洁地概括你的优点、职业素养和自我提升的决心,但要避免过于空泛的表述。 9. **格式与排版**:简历应保持整洁、清晰,使用简洁的设计和字体。避免过多的颜色和复杂的图形,使阅读者能快速获取...
”这句话反映了这部分程序员在职业生涯中的转变过程——从专注于技术细节到更加注重自身综合素质的提升。 九、人生导师:最终,那些成功走过以上所有阶段的程序员,会成长为团队乃至整个行业的领军人物。他们不仅...
- **职业素养**:通过获取ISO9000、CMM等国际认证来提升个人的专业形象和市场竞争力。 综上所述,本文不仅展示了作者作为程序员的成长历程和技术积累,也为广大IT从业者提供了宝贵的经验借鉴。通过不懈努力和持续...
程序员求职者在准备简历时,需要精准地向潜在雇主展示自己的技能、经验和职业素养。一份结构合理、内容详实的简历不仅能够突出求职者的优势,还能让招聘者在短时间内对候选人有一个全面的了解。本文以一份名为...
### 知识点一:程序员的职业发展路径 在IT行业中,程序员的职业发展是多样化的,不仅包括技术层面的深入学习,还有向...这些内容对于指导程序员们如何更好地适应行业发展需求、提升自身综合素质都具有很大的参考价值。
这本书涵盖了广泛的源码分析、编程技巧以及程序员必备的知识点,是程序员职业生涯中的一份宝贵参考资料。 一、源码分析 源码分析是程序员进阶的重要环节,通过阅读和理解他人的代码,可以学习到不同的编程思路和...
8. **培养解决问题的能力**:面对复杂多变的问题情境时,具备快速定位问题根源、寻找解决方案的能力是程序员必备素质之一。 - **举例**:遇到程序运行异常时,通过调试工具逐步排查可能存在的问题点。 #### 九、...
【程序员简历模板】是求职者展示自己技术和经验的重要载体,尤其对于程序员这一职业,一份精心设计的简历可以显著提升雇主的关注度。以下是一份详细解释的程序员简历制作指南: 一、基本信息 这部分包括求职者的...
无论是项目管理流程还是具体的技术实现,高素质的程序员都是决定项目成败的关键。他们不仅具备扎实的技术功底,还拥有良好的问题解决能力和团队协作精神。高素质程序员的存在,能够有效提高项目的整体质量和成功率。...
1. **职业光环效应**:近年来,IT行业的迅速发展使得程序员成为了一个备受尊敬的职业群体。较高的薪资待遇和社会认可度使得一部分程序员产生了自我优越感。 2. **技术至上文化**:行业内普遍存在一种观念,即技术...
【程序员职场中的“坚持”关键点】 在程序员的职场生涯中,坚持...总之,这份资料不仅关注程序员的技术成长,更注重他们的职业素养和心理建设,鼓励程序员在职场中找到正确的坚持路径,从而实现个人与职业的全面发展。
### 软件人才需具备的六大基本素质 在当今快速发展的信息技术领域,软件人才扮演着至关重要的角色。为了能够适应不断变化的技术环境并保持竞争力,软件人才需要具备一系列核心素质。以下是根据提供的文件信息总结出...
- **综合能力**:高层次的程序员不仅需要深厚的技术功底,还需要具备良好的沟通能力、团队协作能力等综合素质。 #### 六、总结 通过以上的分析可以看出,在计算机软件开发行业中,程序员的职业成长路径清晰可见,...
另外,本书还提到了“程序员职场三部曲”的其他两部作品——《程序员羊皮卷》和《程序员职场第一课》,这两本书分别涵盖了初入职场的注意事项、职场基本素养、职场生存技能以及职业生涯规划等话题。 通过阅读...