27

软件工程师的十个“不职业”行为

作者: wuzhimin 分类:CTO视点   阅读:111,830 次 添加评论

职业化是软件工程师的必然选择。本文根据我在教学和软件开发管理方面的实践,列举几个软件工程师“不职业”的行为或习惯,从另外一个侧面进一步探讨什么是真正的软件工程师职业化。陈尚义


■ 文 / 陈尚义


职业化之于软件工程师非常重要。因为:软件是看不见也摸不着的,它的进度也看不见摸不着,需要软件工程师严格自律、善于沟通;软件开发是创造性的劳动,创造性劳动依赖个人主观能动性,没有自我激励是不可能成为出色的软件工程师的;软件在国民经济和人们日常生活中发挥着越来越重要的作用,软件工程师的道德行为规范成为备受关注的问题。

下面是软件工程师十个“不职业”行为。在一些特定领域工作的人们可能会认为这些不具有非常广泛的代表性。例如,IEEE和ACM联合发布的关于软件工程师职业道德规范里,认为软件工程师首先要遵守的是社会公众原则,即所开发的软件要给人类带来福利,不能制造类似于计算机病毒那样的具有危害性的软件。由此,制作病毒显然是最大的“不职业”。然而,在一般的商业型公司里这个问题不是最突出的,因此制作病毒并没有包含在本文列举的十大不职业行为之内。


行为一:对外交付半成品

我们的态度反映在我们的工作上,职业化的人士从不从自己手上交出不合格的工作产品。那些不职业的软件工程师满足于把工作做成半成品,等着让别人来纠正他们的错误。

开发者总是不好好做单元测试,没有确认自己的代码符合不符合要求,就盲目自信地认为没有问题,提交给别人供集成和测试。殊不知,没有经过单元测试的代码,往往在集成和系统测试阶段发现大量的问题,要修复这些问题需要付出更大的代价,这个代价比你自己发现并修复要大得多,给组织造成了巨大损失。


行为二:不遵守标准和规范

职业化的重要特征是遵守行业标准,不能肆意按照自己的想象来发挥。每个行业都有自己的技术规范,软件行业也同样如此,如IEEE发布的国际软件工程标准等;各个软件开发组织也有相应的代码规范、文档模板、代码审查清单等;有一定管理水平的软件开发组织还有相应的过程文件。

这些都是软件工程师在软件开发过程需要遵守的规定。特别强调的是,自人们认识到软件危机以来,无论是学术界还是工业界都在不断地总结出软件开发的失败教训和成功经验,并把他们总结成为最佳实践,进而形成标准,这些最佳实践是在大量实践的基础上提炼而成的,要充分利用这些最佳实践和标准指导自己的行动。


行为三:不积极帮助他人

技术人员最容易犯的错误是“保守秘密”,觉得自己开发的成果属于自己,不喜欢和别人共享。生怕影响自己在组织内的地位。

帮助别人也是帮助自己,这个简单的道理却被高智商的软件开发人士忽视。在其他行业中,帮助别人可能仅仅是一个美德,但在软件开发组织中,帮助别人还能为组织降低成本、缩短开发周期、提高产品质量,所有这些正是软件工程学科所研究、并试图解决的问题。


行为四:版权意识不敏感

我们既是软件的制造者,也是软件最积极的使用者。如果我们自身不遵守版权,就会给其他人造成极大的、负面的示范作用,也是对我们自己劳动成果的不尊重。在实际生活中我们看到太多的例子,大量的软件工程师盗版使用了其他公司的产品,并以此炫耀自己的能力。

不尊重版权的另一个例子是:不认真阅读开源代码的使用限制条款就随意使用;随便找到一个开发包,不问来龙去脉就嵌入到自己的系统;错误地认为它在组织内所做的工作成果是自己的,在离职后转让给他人;看到别人使用盗版软件不制止,而且还继续传播。


行为五:对待计划不严肃

软件工程强调计划性。在软件项目管理里,任何项目都要经过策划(Planning),策划的结果是项目计划。项目管理者跟踪项目计划的执行情况,记录计划执行过程中存在偏差的地方,对任何与计划有出入的想法都要事先经过评审和批准,然后才能付诸行动。

因此计划是严肃的。计划是大家沟通的平台,是检查项目状态(Project Status)的依据,也是控制项目变更的手段。计划还是一种承诺,因为策划过程是所有开发者都参与的,或者是征求过开发者意见的,承认了计划中的各种安排,就意味着你已经对外承诺了这些。

软件计划具有难以精确估计并动态变化的特性,因此需要我们软件工程师更加严肃地对待计划,而不应该成为我们不按计划行事的借口。


行为六:公事私事相混淆

公私分明是职业化的另一个重要特征。利用公司设备做自己的事情;在上班时间浏览自己感兴趣、和工作无关的网站,如上班炒股票,都是不职业化的行为和习惯,属于假公济私。

反过来也一样是不职业的:用自己私人的设备处理公司的事务,用免费的邮箱发送和接收公司的邮件;带个人的电脑来办公室处理公司的业务。这样做,可能给组织的软件安全性造成危害,也可能对组织的工作造成麻烦、惹出版权官司。在公和私之间画上一道红线,做到公私分明,是职业化软件工程师必备的素质。


行为七:不注意更新自己

职业的与非职业的软件工程师一个重要区别就在于职业化的人士经常学习,不断更新自己的知识,保持自己在本行业的竞争能力。

我接触到的很多工程师,他们想走捷径,对技术浅尝辙止;知其然不知其所以然;他们畏难而退:不想在一线战斗,喜欢搞他们想象的所谓的管理;想做测试,因为他们错误地认为测试对技术的要求不高……这些都是和职业化的软件工程师很不相称的。


行为八:不主动与人沟通

沟通,在软件开发领域,是责任问题,不是性格问题。

不主动沟通,其背后隐藏的更为重要的原因是工程师的责任感不够。主动和上级、同行、下属沟通是职业化所必需的,因为软件开发需要团队协作,任何一个工程师的工作都可能会影响别人,进而影响全局。软件工程的实践表明,个别人缺乏主动沟通,往往导致整个团队的技术方案出现偏差,或整个项目的进度受到影响。

报告(Report)是沟通的一个方式,有时显得特别重要。当你承担的任务进展顺利的时候,要报告;特别当任务进展遇到困难、可能会影响别人或引起变更的时候,更要报告。配合项目经理和QA人员跟踪项目的计划执行情况,是每一个工程师分内的职责。


行为九:不遵守职场规则

一些工程师不能很好地遵守软件行业的职场规则。比如:互相告知或打听工资和奖金的多少;离职时带走公司的源代码和文档;或急于到新单位工作而不专心交接等等。

软件计划的不精确性,导致开发任务的分布不均匀,特别是重要里程碑(如产品发布)之前,往往需要一定程度的加班。对此,职业化的软件工程师应给予理解和配合。


行为十: 不够诚实和正直

配合项目经理做好计划是工程师不可推脱的职责。进度的安排是根据任务承担者的经验、水平来确定的,对所安排的任务,工程师本人应该有比较正确的判断。实际工作中,却碰到有些工程师一天能完成的任务故意说成是两天,为自己争取到过分宽松的环境。虽然,也有组织要求软件工程师对工作量和进度有一定的判断和估计能力,但这和故意虚报计划的性质是不一样的,前者是水平问题,后者是诚信问题。

工程师的正直来自于强烈的社会责任感。只有维护行业的道德水准和职业规范,软件行业才能持久健康发展。牺牲职业道德和规范水准,换来了暂时的经济利益,伤害的却是整个软件职业的荣誉和信任度。


作者简介:

陈尚义,1989年毕业于北京航空航天大学计算机系。现任中软通用产品研发中心总经理,北京航空航天大学兼职教授、硕士研究生导师,中科院研究生院硕士生导师,IEEE授权培训结构高级讲师。

(本文来自《程序员》杂志0910期,更多精彩内容敬请关注0910期杂志)

转播到腾讯微博

----->立刻申请加入《程序员》杂志读者俱乐部,与杂志编辑直接交流,参与选题,优先投稿

155 Responses to “软件工程师的十个“不职业”行为”

  1. fresh 说道:

    典型的理论家

  2. sds 说道:

    同事楼上的,理论家

  3. sdsf 说道:

    同事楼上的,SB理论家

  4. commserve 说道:

    站着说话不腰疼

  5. commserve 说道:

    丢北航的脸

  6. 虚拟艾非 说道:

    一二三四五六十我全有了

  7. richard 说道:

    SB理论家,我自己写的代码我不带走,我天天加班吃饭都得自己掏钱时候心酸的心情是你这样的2B能理解的吗,站着说话不腰疼~

  8. murphy3847 说道:

    大家评论怎么这么刻薄,人家说的基本上是最起码的职业道德标准,你不同意,也不能漫骂吧。中国程序员职业素养真的有待提高。

  9. macq 说道:

    职业人最起码的道德标准,但是在中国真的很难做到,这又是为什么呢,
    不要仅仅提出标准,要分析问题并且给出解决方案啊。

  10. tastelife 说道:

    行为一:对外交付半成品

    不同意:我想每个人都想自己的作品唯美。就单元测试来说,给编码人员的时间很多时候是不够的,还有这与公司的体制有很大关系。不能把这个问题简单的归为工程师的问题。

    行为二:不遵守标准和规范

    同意 观点 :观点是对的,但对规范遵守到什么程度,会受到工程师自身的能力、项目要求等制约。

    行为三:不积极帮助他人

    不同意:技术人员最容易犯的错误是“保守秘密”,这个论证……。对于司来说,有源码管理,有设计,有文档,技术人员要怎样保守秘密呢。对于第二段认证,我认为是没有根据的,那些提高是需要科学的手段而不是所谓的帮助,团队技能的提升不是靠帮助来的。

    行为四:版权意识不敏感

    同意 观点 :但这和公司的体制息息相关,我所经历的公司,都有明确要求:不允许使用为受权的代码、产品。

    行为五:对待计划不严肃

    同意。

    行为六:公事私事相混淆

    同意。

    行为七:不注意更新自己

    同意。

    行为八:不主动与人沟通

    同意。

    行为九:不遵守职场规则

    同意。( 但加班一定要给加班费啊 :) )

    行为十: 不够诚实和正直

    同意一半:诚实的论证还是不错的。正直的品性是美好的,但我看不出来和“不职业”有什么关系啊。

  11. 学吉他 说道:

    过于理想化,想要找到这样完全“职业化”的工程师应该很难吧。。。
    不切实际。。

  12. 智能DNS 说道:

    真的吗?
    有道理吗?

  13. willkin 说道:

    把什么责任都推到软件工程师,和央视大楼大火,责任推到农民工身上有什么区别?
    到处都想划分等级,压榨别人,知道”无耻”如何写吗??

  14. DJY 说道:

    难怪陈某成为了稳拿,各位极客仍然是工程师。

  15. shanso 说道:

    不是我们不职业,是这个社会对待我们太刻薄

  16. jacle 说道:

    典型的站在说话不腰疼的

  17. never 说道:

    对此,职业化的软件工程师应给予理解和配合。(还不应该苛求加班工资)

    这个职场规则谁定的?相信不是这个职业的人定的吧。。
    软件工程师的职场规则由非软件工程师说了算。。多么可笑!

  18. Peter 说道:

    Amazingly, your piece goes to the heart of the topic. Your clarity leaves me wanting to know more. Just so you know, i’ll immediately grab your feed to keep up currently with your online blog. Sounding Out thanks is merely my little way of claiming what a masterpiece for a fantastic resource. Take On my best wishes for your subsequent publish.

  19. linshuyu1987 说道:

    貌似我符合以上条件,有时候道理可能大家都懂,主要是做起来难

  20. Oak 说道:

    想喷,看看陈先生的相片感觉挺面善,还是算了。
    道理大家都懂,做起来不容易,这个也就是陈先生在 不职业 两边加 引号的原因吧。

  21. fsfsdfdg 说道:

    good post! can learn something from it!

  22. north face outlets 说道:

    good post! thank you for share it!

  23. tian 说道:

    恩,不会那么简单的。

  24. buy north face 说道:

    I was recommended by one of my relatives to check out your website.

  25. mehale 说道:

    猜想楼主是否5块钱的XP系统下用office破解版写的这文章,
    巧的是,我也是用WIN7激活版回复的这条留言

  26. north face outlets 说道:

    只有创新社会才会进步!

  27. uggs 说道:

    ugg boots不积极帮助他人很不好

  28. fxkfxk 说道:

    我想再加上一条:软件工程师男的一定要长的帅,女的一定要长的漂亮,不然就丢了我们软件这个服务行业的脸。我觉得以上10条和我加上的这条一样有力,道理相通,至于信不信由你,反正我信了。

  29. canada goose 说道:

    canada goose 只有创新社会才会进步!

  30. 要跟进时代步伐

  31. nem alma 说道:

    nice post.thank

  32. 呵呵 这个能够理解!

  33. mulberry outlet 说道:

    貌似我符合以上条件,有时候道理可能大家都懂,主要是做起来难

  34. Nem Alma cihazı 说道:

    merhaba
    nem ve küf derdine son.King post nem alma cihazları bu sorun için en uygun çözümdür.
    king post nem alma cihazı

  35. Belstaff Jackets 说道:

    貌似我符合以上条件,有时候道理可能大家都懂,主要是做起来难

  36. DonHerbarni 说道:

    I like this place. Stop by mine sometime windermere hotels
    windermere hotels

  37. 烟雨重楼 说道:

    我很怀疑这个人做过没做过实际的软件项目,任何一个项目都是客户、公司和程序员三方妥协的产物,所以脱离存在的基础单纯地讲程序员职业不职业是毫无意义地,试问明天交工的项目今天你要做什么?每个程序员都知道,实现过程中一个不起眼的问题就会耽误几天来解决,而这些小问题又是无法预料的,在此情况下,你的进度报一天还是报两天?软件实现过程是基于程序员的思维创造的,在程序员不带走自己的创造成果的同时,公司是否应与程序员共享知识产权?所以最“职业”的程序员是找到一个“职业”的公司、跟上一个“职业”的项目经理,但这又却是最不“职业”的行为了。

  38. charls 说道:

    有道理 !!!!

  39. laugust 说道:

    程序员是人群中的人尖,具有很强的适应能力,一般人很难理解,没做过十年程序员,没资格评论。

  40. JJ 说道:

    推卸责任的无耻理论家

  41. YY 说道:

    除非所有人都遵守规则,否则,守规则的最早被淘汰。

  42. liqingyuan 说道:

    很显然,你是站在老板的角度发表这篇文章的,但是我想在中国情况可能更特殊。在要求工程师做到这些时,应该先叫中国的老板们给我们加班费——在中国,老板们重营销轻技术,肆意妄为乱改需求,疯狂压榨不给加班费都是很寻常的。

  43. qusi 说道:

    典型的没事找抽型

  44. Lee 说道:

    很职业的洗脑文章。高度很高。很难理解。希望是通过实际总结出来的。不知道你当这个博士,是否写过一点点代码。 外包公司 加班是很正常的。但多数外包公司加班都不给 适当 的补助。 情何以堪。。。。。

  45. isolato 说道:

    这职业化很标准,但实现起来很难,而且有很多东西受传统、社会和环境的影响

  46. 周景 说道:

    说得很好,要是所有人能做到,这世界真是太美妙了~!

  47. hi.flight simulator review.realistik flight simulator.thnk

请评论

preload preload preload
京ICP备06065162