现在的位置: 首页 > 综合 > 正文

程序员的德行

2013年12月11日 ⁄ 综合 ⁄ 共 2352字 ⁄ 字号 评论关闭

程序员的德行
(文章来源:登龙门人力资源网络 作者:赵月旺) 

  程序员一定要除了基本的道行修炼外。更重要的是德行修炼。德行=合作能力或沟通能力。对于规模大,生命周期长(特别是衍生生命周期长)的软件项目而言,德行更重要。
  德行的标准
  软件开发离不开企业,企业的文化决定着程序员的行为规范,比较理想的企业文化是:
  沟通方式开放、自由、平等,个人长期发展和企业发展的有限度统一。这样的企业文化,必然会造就具有长远眼光和冒险精神的将帅之才。
  这方面的楷模是微软公司,该公司全球员工平均年龄只有28岁,无论在全球的哪家公司,微软评判人才的标准都是相同的。挑选员工的第一标准是应聘者是否具有良好的品德。微软认为,良好的品质是职业道德的基础。其次,看应聘者解决问题的能力如何,在面对困难时是退缩,还是勇往直前,因为实际工作中常有新问题需要解决。第三,要测试应聘者有没有快速学习的能力,日新月异的技术发展要求有快速学习能力。另外,团队精神、责任心、工作热情、创新精神和独立工作能力都是必须的。
  好的企业文化熏陶出来的程序员,必然是关注个人长远发展的职业精英,这样的程序员必然会较早地设定自己的职业发展管道。比如:
  管理序列:程序员->项目管理人员->中级管理人员->高级管理人员;
  技术序列:程序员->高级程序员->需求分析师//架构工程师//质量管理;
  市场序列:程序员->售前支持->销售;
  与这样的个人职业发展管道相适应的个人技能是:
  ——软件基础理论扎实;
  ——系统分析与设计能力较强;
  ——具有熟练的系统开发、系统测试与系统维护技术和管理技能;
  ——较强的项目管理能力和交流与组织协调能力;
  ——在企业既能适应软件产品研发,又能适应项目管理岗位;
  ——具备独立工作能力和创新意识。
  在项目开发过程中,有效沟通非常重要,沟通的形式多种多样,除了常见的几种方式外,下面讲几种比较有特点的沟通方式:
  * 历史和现在
  如何最大程度地挖掘过去成果的价值,需要讲过去的成果(算法,code,设计思想等)进行再组织,使之可以被快速检索。
  * 标准化
  “最好的沟通是没有沟通”,通过标准化的技术手段,使个人的输出可以被他人非常容易地了解,这样可以避免沟通带来的效率低下。
  * 技术一致性
  软件技术的发展,使得程序员这个职业需要不断细分,这带来的最大问题是不同技术间的互通问题。为此,在程序开发过程中,需要不断进行的技术预研变得越来越重要。并且,只要满足功能需求,就采用最简单的实现技术。
  * 简单性
  程序规模变得越来越庞大的同时,修正Bug的代价程指数级增长。因此,尽量少用比较容易犯错误的编程技术(比如C语言的指针),尽量采用简单(牺牲效率)的算法,接口间尽量少一些“合并点”,将是非常有价值的。
  不良的德行
  尽管国内程序员有一些普遍的优点:比如有雄心壮志,面对困难时比较坚毅,理论基础、尤其是数学功底扎实,编程能力强,吃苦耐劳、讲纪律、讲服从等。
  而缺点也是突出的:创新精神不足,做事缺乏主动,独立从事研究的能力弱,对很多事没有主见,而且有想法不直接说,对新知识了解不够,不善于与人交流,缺乏合作精神。
  还有一些缺点:不诚实——表现在答应了的事不去做;贪小便宜——用公司设备办私事;不够踏实——急功近利,擅长做表面文章。
  这些不良德行在实际的程序开发中表现如下:
  * 滥用不变量,以自己模块调试通过为最高目的
  大家知道,程序中到处存在着“瓶颈”,这些瓶颈是造成程序运行时不稳定的最重要的因素之一。比方说,在模块接口间定义了一个用常数开辟的内存空间。消除这些瓶颈要从几个方面入手:
  ——采用技术手段减少不变量的使用,不要给别人造成麻烦;
  ——集中使用不变量,方便自己的上司作出Bug修正决定;
  ——应用各种异常捕获机制,在不变量导致的异常出现点进行精确定位;
  * 不尊重文档,契约意识淡薄
  应该把文档看成法律合同,要认真书写,完全彻底地遵守。并且,一旦发现定义模糊的地方,应该及时通报作者进行适当修正。
  * 不写或少写注释,小农思想严重
  程序是共有的,模块是不能独活的,注释可以帮助测试人员和维护人员的工作,并且,特别利于软件重用,最大限度地延长模块的生命周期;
  * 不关心他人的进度,个人利益高于以前
  开发进度的平衡是一个项目成功的重要标志。个人的能力是不平衡的,每个人的工作量也是不平衡的。关心他人的进度,并在适当时机施以援手,将最大程度地消除开发进度中“人的瓶颈”。要知道:团队成功是个人成功的前提;
  * 不借鉴他人的闪光点,偏重技术,忽视德行,难成大器
  创新分精神创新和内容创新。有一个有趣的现象,大家大概都经历过,比如:A在他负责的模块内用了一个算法,得到领导表扬;B就另外写一个算法,可能B的算法要好,但,站在整个项目的角度看,B的行为是有害的,因为他损害了沟通的效率(领导要分别看两个算法,测试员要策两种算法,维护人员就更苦了)。
  企业的德行
  IT界普遍认为国内IT教育在课程设置上存在不足,比如课程陈旧,学生的动手能力差,缺乏实践经验。很多企业抱怨,学生到了企业后,不好用,企业不得不再培训一段时间才能用,所以,很多企业不愿选择应届生,而喜欢从社会上招聘。实际上是这样吗?
  这实际上反映了国内软件企业的规模比较小,偏重只有较短生命周期的应用软件开发,所以,这些企业在自身资源有限和发展定位上的“鼠目寸光”决定了他们对人才需求的的急功近利。
  实际上,培养刚从学校出来的大学生是最合适的人才选拔方式。学生刚刚踏上社会,对职业的理解可以从0开始塑造,这样建立起来的团队特别整齐。这可以从每年跨国公司的校园招聘会上得到证明。

抱歉!评论已关闭.