`

软件工程师的十个“不职业”行为(转自CSDN)

阅读更多

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


■ 文 / 陈尚义


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

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


行为一:对外交付半成品

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

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


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

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

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


行为三:不积极帮助他人

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

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


行为四:版权意识不敏感

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

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


行为五:对待计划不严肃

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

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

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


行为六:公事私事相混淆

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

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


行为七:不注意更新自己

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

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


 

行为八:不主动与人沟通

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

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

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


 

行为九:不遵守职场规则

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

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


 

行为十: 不够诚实和正直

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

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


 

作者简介:

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

 

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

分享到:
评论

相关推荐

    硬件工程师

    【硬件工程师】这一职业涉及到广泛的技能和知识领域。硬件工程师是负责设计、开发和测试电子设备的专家,他们需要深入理解计算机系统的核心组件,包括CPU、内存、总线和存储器等。 首先,硬件工程师应熟悉基本设计...

    软件工程思想

    在当今时代,软件工程不仅仅是一个技术性的领域,更是一个需要综合思维、系统方法和持续学习的职业。《软件工程思想》作为一本深刻解读软件开发全貌的书籍,为我们提供了一个全面的学习和实践框架。它不仅涵盖了软件...

    计算机从业者职业道德规范-.doc

    根据 IEEE-CS/ACM 软件工程师道德规范和职业实践(SEEPP),计算机职业从业人员职业道德的核心原则主要有两个:原则一和原则二。 原则一:计算机从业人员应当以公众利益为最高目标。这一原则可以解释为以下八点: ...

    Code of Ethics for Engineers 工程行业职业操守与伦理准则规范解析

    本文主要内容涵盖了专业工程师的行为道德法规以及执行条例,从工程师应当将公共利益置于首要地位到避免欺骗行为等具体规则均有详细解释。它要求工程师们必须诚实和正直地从事本职事务,并在工作中展现出最高标准的...

    电子工程师\电子工程师面试题大全

    电子工程师面试题大全深入解析 在电子工程领域,掌握扎实的专业知识是每位求职者的核心竞争力。以下是从“电子工程师面试题大全”中精选的关键知识点,旨在帮助应聘者全面准备,应对电子工程师岗位的面试挑战。 ##...

    软件测试人员的发展方向

    这个阶段的工程师需要对软件测试方法论有深入理解,例如敏捷开发、TDD(测试驱动开发)和BDD(行为驱动开发)等。 测试组负责人(4-6年经验)开始承担管理工作,包括团队协调、任务分配、进度安排和成本估算。他们...

    工程伦理雨课堂9-13章.docx

    这些价值观念是工程师职业行为的基石,强调了工程师在实践中应具备的道德判断力和责任感。 第十章可能重点讲述了工程师的职业责任和义务。工程师除了要保证工程的技术专业性之外,还需要遵守一定的职业行为规范,...

    CSDN 测试员杂志

    - **目标**:通过提供一个交流平台,促进软件测试知识的分享和传播,提高测试人员的专业技能。 - **内容涵盖**: - **测试理论**:介绍最新的测试理论和技术趋势。 - **实践经验**:分享来自一线的测试案例和解决...

    美国大数据工程师面试宝典

    - **行为问题**:了解候选人的工作态度和职业价值观。 #### 五、面试准备要点 - **编码能力**:能够编写出无错误的代码,如实现`strstr()`函数。 - **算法与数据结构**:熟悉哈希表、堆、字典树等数据结构,掌握...

    软件测试资料大全整理

    在软件开发过程中,软件测试是不可或缺的一环,它确保了产品的质量和用户体验。这份"软件测试资料大全整理"包含了丰富的信息,旨在帮助我们深入理解和实践软件测试的各项技术。下面,我们将详细探讨其中涉及的关键...

    系统集成项目管理系统工程师教材笔记(精华归纳整理).pdf

    项目收尾包括对项目的总结和后续工作的支持,知识产权管理关注版权和专利的保护,法律和标准规范以及职业道德规定了项目管理的法律界限和职业行为准则。 优秀的项目经理需要理解自己的角色,具备管理、领导、协调和...

    通信专业综合能力(中级)

    此外,本章可能还会涉及通信工程师应具备的职业行为规范,以及如何处理工作中的道德困境。 第二章:法律法规 通信行业是一个受到国家法律法规严格监管的行业,了解并遵守相关的法律法规是通信专业技术人员的必备...

    软件测试简历

    - 在一家计算机软件公司担任软件测试工程师,负责多个项目的测试工作,后期还承担了部分项目测试管理工作。 2. **具体项目案例** - **个贷项目测试** - **环境与工具**:使用Windows操作系统和Java作为开发工具...

    代码的艺术

    《代码的艺术》这篇文章通过对代码编写过程的深入...总而言之,《代码的艺术》不仅是一篇技术文章,更是对软件工程师职业生活的深刻反思和行业经验的分享,它传达了代码不只是为了完成任务,更是为了实现艺术和创造。

    自动自发的敏捷团队-2012.12.05, CSDN CTO俱乐部

    - **多元化的角色扮演**:从软件工程师到Scrum Master再到内部讲师,这位专业人士在职业生涯中扮演了多种角色。这种经历有助于理解团队中的不同视角,从而更好地推动敏捷实践。 ### 敏捷与专业精神的哲学根源 - **...

    2013年11月系统集成项目管理工程师考试笔记,必过资料

    6. **职业道德与职业行为**:理解项目管理中的职业道德准则,如诚实守信、公正公平、尊重知识产权等,以及在项目管理过程中应遵循的职业行为规范。 这份笔记的PDF格式使得考生可以随时随地查阅和学习,提高复习效率...

    21世纪十大热门“职业” 21世纪十大热门“职业”

    综上所述,21世纪十大热门职业覆盖了数据分析、人工智能、云计算等多个领域,这些职业都具有较高的市场需求和发展潜力。对于有意进入IT行业的求职者来说,选择适合自己兴趣爱好且具有良好发展前景的职业方向尤为重要...

    Java工程师简历模板

    ### Java工程师所需技能与知识点详解 #### 一、Java面向对象编程基础 - **概念理解**:面向对象编程...通过上述内容的学习与实践,可以全面掌握作为Java工程师所需要具备的核心技能,为职业生涯的发展打下坚实的基础。

    工程伦理重点(工程伦理期末试题参考答案及复习重点.pdf)

    这门学科通过对工程师职业道德准则、决策过程和伦理原则的探讨,旨在提升工程师在职业生涯中作出合理、公正和负责任决策的能力。 在研究生教育中,工程伦理被视作重要的必修科目,这反映了社会对于工程实践和创新...

Global site tag (gtag.js) - Google Analytics