什么是专业的程序员 (转mainz's)

 

看了孟岩的文章《程序员必须走向专业化》,有点感想。

真正专业的软件工程师“专业”,是指具有规范化的价值观和知识体系,规范化的工作习惯和职业纪律,职业化的工作作风和流程,当然也具有相应的技能和经验。在中国,很有一些程序员,以为自己技术高,就应该拿高薪,就应该牛,就可以不要纪律。他们很少问自己,究竟给团队带来什么价值,究竟给企业带来什么价值,究竟给客户带来什么价值?

中国的程序员们就不应该整天琢磨着要赶哪个新,逐什么潮,一会儿面向这个,一会又面向那个,左一个语言右一个框架地折腾着,而是应该踏踏实实在专业性上下功夫。

企业宁要专业的工程师,不要不专业的“牛人”。专业性保证了一个程序员的技能和工作能够为组织带来效益,而他们只会为这种效益付酬,不会出于对“大牛”的敬仰之情而主动上缴贡银。而且,他们也相信,只要一个人专业化程度足够,技术和经验上的不足是容易在实践中弥补的。

记得近两年有一句很流行:“老大,咱没这么干过,咱不专业啊”。虽然是笑话,但有此可见这年头做什么事情都得专业,否则会贻笑大方。

但什么是专业的程序员?老外比较注重工程师的专业精神,举个例来说,如果事情交给这个工程师做,能高效、保质、按时的做出来,而且做出来的软件很专业,能很好的与人合作和沟通,配合测试组或其他开发组共同完成任务,为团队和企业创造价值,达到企业追求的目标,就是专业的程序员。概况起来,我认为专业的程序员必须:

1.       专业的企业精神(做事高效负责,规范化的价值观和知识体系,规范化的工作习惯和职业纪律,职业化的工作作风和流程)

2.       编程很专业(技术精湛,经验丰富,有独立分析问题和解决问题的能力)

3.       做事很专业(善于沟通,不论是和客户、同事、项目经理、新手,还是老手,乐于和他人合作,具有团队精神)

 

与之相对应的就是不专业的程序员:

1.       无企业精神(个人主义严重,觉得自己技术特牛,贡献特大,认为企业给的薪水少,干活不该卖力,项目经理安排的任务故意拖拉不服从,上班很晚到等)

2.       编程不专业(没写过几行代码,没做过什么大系统,就认为自己技术特精湛,其实写的代码却不堪一击;没工作几年就认为经验特丰富,没碰到过多少客户和生产上的具体问题就认为有丰富的分析问题和解决问题的能力)

3.       做事不专业(难于沟通和合作,没有团队精神和集体精神,不是本着解决问题的态度和学习提高的态度,而是本着耍弄技巧、高人一等甚至***难别人的态度,和客户没沟通点、和项目经理沟通阴奉阳违,对新手好为人师,对老手不屑一顾等等)

    文章说到中国的程序员效率比老外差7-8倍,原因在于中国的程序员不专业,而老外程序员专业化程度高。我认为这只是一个原因,即程序员的专业素养,这只是个体原因;与之相比更严重的问题在与团队和管理。中国程序员往往单拿出来技术“牛人”很多,但放到一个团队里面整体战斗力非常差,这是为什么?这是我们需要思考的问题。

几乎每个团队都有几个专业的程序员,即“主程序员”,也有很多不专业或即将专业的程序员;有刚毕业朝气蓬勃的白纸小伙,也有业务经验丰富但默默无闻的老黄牛,有满身带刺的所谓技术“牛人”,也有不大伸张的真正“牛人”;项目经理如何管理和激励团队成员,扬长避短,使团队发挥最大战斗力,如何帮助团队成员成长,这是项目经理需要思考的问题。

而从程序员自身来说,则应当向专业化的方向努力,无论你的职业方向是管理、技术、还是技术管理,这些都是必须的。因为说到底,只有你做的专业,只有你做出来的东西专业,才能让人信服。



:很多人谈到职业素养问题,《程序员》杂志刊登的程序员职业素养 

1.       学习和分析能力。每个团队都在成长,作为程序员这个群体就更需要“与时俱进”。尤其是在开发这个知识日新月异的行业里,同时分析能力是必不可少的。像本案例中,如果没有在充分了解客户需求的基础上的精准分析,很难想像最后的结果。;(调查中71.15%人认为,学习能力是程序员基本能力中比较重要的一条。另外,此次调查中57.69%的被访者认为,在技术方面有不同意见时,处理妥当的程序员必要的修炼之一。相信这个案例为我们提供了新的思路。

2.       与内外保持良好沟通,永远是成功的保证。及时汇报、沟通进展也可以在第一时间发现自己的偏差。在改bug问题上,有些小bug,程序员可能比较容易就修改了,但有些比较难修改的bug,如果自己解决不了,应该像同事或者专家请教,甚至组织小组讨论,但有些程序员处理这种情况时,往往是自己琢磨半天,改不了,然后就放那去做别的事情了,等过几天项目经理问起来时,才承认自己改不了,这种现象应该最大程度地避免。毕竟,相差一度两条线顶点的距离会在不限延伸后相差不限大。(59.62%的被访者认为“汇报项目进展时明确及时”是程序员内在修炼的重要组成)

3.       产品意识。良好的产品意识可以大幅度提高开发效率。某次产品改版中界面都重新修改过了,因为有2个程序员专门负责编程匹配部分,而其中一个就非常具有产品意识,他用.NETUI原形都画了出来,在公司内部组织讨论,让最后的客户环境和界面都非常优秀。

4.       团队意识。作为一个新人要向老人请教学习,作为一个老人要把自己的心得、收获、技能等与新人分享,也就是要带新人。知识的分享是知识学习中一个最有效的方法,尤其是在程序员这个行当里;

5.       对于编码规范和文档规划是毫无疑问必须要遵守的。(此次参加调查的程序员中有80.77%认为编码规范是程序员内在修炼的毕选项。、68.59%认为文档规范是修炼的必要内容。)

posted @ 2009-04-19 19:27  好俊的功夫啊  阅读(202)  评论(0编辑  收藏  举报