要使软件工程成为正规专业,需要改变什么?


11

与其他专业(例如会计,法律,医学等)不同,软件工程没有专业范围的认证。

我非常了解旨在作为专业知识和经验证明的众多技术和方法学特定认证,但是没有公共软件工程学会/理事机构设置(并有权进行法律评估)公认的专业标准。

我知道软件是一门充满活力的野兽-它既是艺术,又是科学-但我想知道软件工程是否有潜力成为正规专业。

要发生什么需要改变,这甚至是一件好事吗?

(如果有人知道对该主题进行正式研究,我将不胜感激。)



更新资料

我同意以下关于软件工程当前认证水平的许多优点。我还发现有些国家将软件工程视为一种职业,而其他国家却没有,这很有趣。

但是,“正式职业”一词似乎以及它在软件工程中的应用似乎有点笼罩。我认为软件工程的关键问题-而不是成熟的职业-的主要原因是,如果您是一位认证的软件工程师,并且-例如-您为电梯编写的某些软件发生故障并导致人员死亡,您的认证和/或正式专业机构的成员资格不会被撤销。

当然,您的公司可能被起诉数以百万计,您个人可能会丢掉您的工作并获得不好的推荐,但一般而言,由于您被该公司雇用,您个人受到有限责任盾的保护。换句话说,据我所知,没有适当的法律评估/执行(不同于其他正式职业及其执政协会),其职责是一旦您产生了巨大的负担就正式禁止您进行交易。

我很喜欢这样一个答案,即软件工程(按现状)是一种精英,不需要正式的职业,这是一件不可改变的好事。同时,我认为我们需要对任务关键型软件的软件工程师与其他/非关键型软件的开发人员进行明确区分。

对于那些在关键任务软件上工作过或曾经工作的人-是否要承担个人责任?如果软件工程师犯了代价高昂的错误,是否肯定需要正式的回应?


3
成为正规职业的好处是什么?
Pieter B

1
非常本地化。在魁北克,您需要成为工程师的一部分,才能被称为工程师。同样的规则适用于软件工程师。随附道德守则,规则,责任保险等。
Jean-FrançoisCôté13年

5
显然,实验室外套。有联系。
本·布罗卡

2
@Pieter B:如果没有正规的职业可以保证每个医生都必须达到一定的标准,您对医生的感觉如何?
Giorgio

1
我已投票重新提出这个问题。它不是“软件工程师可以成为认证的专业工程师吗?”的重复副本:该问题询问的是根据该专业的当前状况而选择的职业。该问题询问该状态与感知的期望状态之间的差距,以及如何采取行动来缩小该差距。这些是不同的主题。

Answers:


15

根据现有的信息,我认为软件工程已经是一个正规专业。它本身可能尚未被广泛接受,但它满足了职业特征的普遍接受的标准。

维基百科关于职业的文章

定义职业的特征存在很多共识。他们拥有“专业协会,认知基础,制度化培训,许可,工作自主权,同事控制……(以及)道德准则”,[18]然后拉森还补充道,“高水平的专业和知识卓越, ”(拉森,第221页),“专业是具有特殊权力和威望的职业”(拉森,第px),并且在所有社会中,它们都是“专属精英群体”(拉森,第20页)。

这引述了马加利·萨尔法蒂·拉尔森(Magali Sarfatti Larson)的《专业的兴起:社会学分析》。搜索“职业特征”往往会导致相似的结果。

软件工程如何克服这些特征?

  • 专业协会有许多软件工程师专业协会。在IEEE和更具体的IEEE计算机学会服务的专业人士在世界各地的工程工作,与IEEE计算机协会特别侧重于计算机和软件工程师。该ACM是在计算工作,一般在美洲的其他专业的专业机构。还有英国的计算机学会,它通常在英国满足信息和通信技术专业的各个方面。

  • 认知基础软件工程知识体系由IEEE,波音,加拿大国家研究委员会,雷神公司,Construx软件,加拿大专业工程师委员会,MITRE公司,NIST,Rational,SAP(2004年版)赞助。它是专门为朝着“使软件工程成为合法的工程学科和公认的职业”迈出的一步而启动的。

  • 制度化培训在美国,信息技术,计算机科学和软件工程计划可以通过ABET认证。在加拿大,计算机科学和软件工程计划获得了CIPS的认可。这些组织为从认可课程毕业的学生定义了最低标准和预期成果,以使他们能够在专业环境中工作。IEEE还根据软件工程知识体系提供两种考试:针对本科生(或刚毕业的本科生)的认证软件开发助理考试和针对职业中期的认证软件开发专业人员考试。

  • 许可截至2013年4月,NCEES提供软件工程专业工程考试。它在美国以州为单位提供。但是,目前并不是每个州都提供软件工程PE考试,甚至更少的人需要许可证。本文发表在1999年11月/十二月的IEEE软件讨论了德克萨斯州的许可要求,并简要讨论了安大略省和不列颠哥伦比亚省,加拿大和英国的许可。在得克萨斯州,仅需要“设计,测试或实施”嵌入式系统或实时系统“需要对电气或机械组件的详细了解”以及“机械设备,电气设备的软件系统”的许可证,和动力系统”-相对较少的软件开发工作。在提供许可的州,最坏的情况是,如果客户或雇主提出投诉,将采取纪律处分,制裁或失去许可。但是,唯一真正的危害是需要许可证的州-除非需要许可证才能进行工作,否则丢失许可证并不意味着任何事情。

  • 道德规范 ACM和IEEE计算机协会制定了软件工程道德规范和专业实践。在美国,获得ABET认可的工程计划(包括软件工程计划)的毕业生也可以加入工程师令,该令维护着通常适用于专业工程师的道德规范。

  • 工作自主,同事控制,高水平的专业知识和卓越知识在软件工程被视为工程学科的环境中,这些经常可见。也就是说,并非所有雇主(或自由职业者)都将软件开发视为工程。


6
90%,或者甚至说99%的程序员甚至都不知道IEEE CS存在。如果99%的医生不属于AMA,那么我对该行业的信心就会大大降低。
乔纳森·里奇

3
@JonathanRich-我在大学认识的每个人至少都加入了IEEE。您从哪里拿出您的电话号码?您已连接到IEEE,因此您实际上有一些实际的订购号?
Ramhound

2
@Ramhound:当我上大学时,人们意识到IEEE,但是似乎很少有人加入。再说一次,我学校有计算机科学课程,而不是软件工程课程,其他学校有计算机编程课程。很少有软件工程专业,但是随着学校获得课程认证,这种情况已经开始改变。另外,我们不在美国,不确定这是否会影响IEEE的参与。
FrustratedWithFormsDesigner

11
@ JonathanRich,90%的程序员不是软件工程师。
菲利普(Philip)

6
@Philip这就是问题所在。你是程序员吗?开发人员?软件开发人员?软件工程师?系统分析师?哪些是专业的,哪些不是?您是否需要软件工程师来设置您的WordPress网站?您是否应该让开发人员接近您的内部数据仓库平台?我非常希望与我合作的90%的人员能够比现在更专业地处理软件工程,但是当您有一些人想要付DBA的钱比割草的人少时,您就不会会找到最好的人。
乔纳森·里奇

4

对于软件开发人员/工程师/架构师等而言,建立并获得广泛认可的专业机构并不是一件好事。

当前,这是可以充当精英管理的少数领域之一。就像我一样,我不在乎您拥有什么学位(或根本没有学位),拥有什么资历,知道哪种语言等等。很容易弄清楚您是否是一名优秀的开发人员,最后,这才是最重要的。即你能把事情做好吗?

目前,您是根据自己的能力来衡量的,而不是通过某人授予您的认可来衡量的。这是一个公平的善事(tm)。


2
与卖淫的相似之处令人不安
。...– mattnz

@mattnz这就是所谓的知识分子卖淫,我的时薪可能要比传统的低。
MrFox 2013年

感谢您提供有见地的答案@MrFox。如果可以的话,我想进一步挖掘您的大脑。如果医生/会计师/律师犯了严重的/代价高昂的错误,则他们可能会失去认证并被禁止继续交易。另一方面,软件工程师没有面临这样的风险,因为他们很少会赔钱(由于受雇于他们的公司所承担的有限责任)。他们所失去的只是他们目前的工作和声誉。有鉴于此,您认为有一个正式的社会来管理软件工程的最佳实践是否有意义?
Kosta Kontos

2
@KostaKontos考虑一下这在现实世界中意味着什么-如果您不编写单元测试或没有足够的文档,就会遭到违规?还是将代码推送到存在安全漏洞的生产环境中会丢失许可证?这对这个领域来说是件好事吗?我的观点是,这将增加很多繁文tape节,政治,责备,并通过每个必须购买医疗事故保险的开发商来增加保险公司的利润。不过,这是一个有趣的想法。我敢打赌这还没有发生,因为起诉自己的工程师是一个坏主意。
MrFox 2013年

0

无需更改。

正如Thomas指出的那样,软件工程已经是一种职业。可以将其称为工程,编程,黑客和/或手工制作,但这职业,很多人都从中赚钱。

我认为您的问题是关于许可。

目前没有软件工程的正式许可。任何具有足够智能和编程能力的人都可以雇用创建人,并为其创造代码,而不是在机器或设备上运行。

这与其他行业不同(法律和医学是问题中提到的例子)。这些专业需要许可证。任何人都可以驾驶汽车,但要合法驾驶汽车,则必须拥有驱车许可证。任何人都可以编程,不需要许可证或证明。

现在,我相信许可是好的,因为它证明某人有能力做某事(例如开车),并且知道规则的来龙去脉。

软件工程可能需要类似的许可证,但我认为这样做不会有多大好处。实际上,有许多许可的驱动程序是可怕的驱动程序,因此仅当您拥有许可证时,并不意味着您是一个好的驱动程序或程序员。

许可证会带来进入壁垒,在这个行业中这不是一件好事,因此我认为这种许可证不会带来任何好处。

聘请软件工程师的公司应该根据所需的技能,通过“编程测试”(我并不是在谈论嘶嘶声类型)来确定地测试潜在程序员的能力。具有“证书”的程序员在纸上看起来不错,但实际上应该对它们进行真实世界的测试,以评估经验和才能。


2
“具有'证明'的程序员在纸上看起来不错”,不,他们不是。
菲利普(Philip)

0

我认为通过以律师通过律师考试的方式通过考试,有可能成为经过认证的软件开发人员。我还认为,未经认证的程序员应该仍然能够以程序员身份进行操作。不同之处在于,如果雇主想要的话,雇主将能够专门为经过认证的程序员做广告,而经过认证的程序员将提供一定的责任心和更高的价格标签。

我同意发布者的说法,他说软件开发是一堆没有责任的马车。我不认为一定是那样。有些开发人员想要制作出优质的软件并愿意为此负责。我们只需要一种区别自己的方法。

我从事软件开发已有20多年了。我并不是说这本身就使我成为了一个出色的开发人员,但我确实认为我是一个非常出色的开发人员。问题是,我必须不断地证明为什么我比每个在业余时间学习编程并想要和我一样工作的孩子更好的开发人员。更不用说许许多多的“离岸”开发商,他们承诺只花一小部分钱就能完成同样的工作。现在,这需要很多努力。我必须提供工作样本,参考资料,参加测试,进行面试。我很容易遇到糟糕的一天,在测试中犯错误,并失去参赛资格。我只想说:“是的,我是一名经过认证的开发人员,这是我的证书”。我仍然需要进行采访,但至少我只能与其他经过认证的开发人员竞争。


感谢您的深刻见解。您是否认为在开发人员能够参加“律师考试”之前,至少需要最少的工作经验?类似于律师/会计师必须完成两到三年的文章。并且,如果有最低要求,您是否认为工作本身应该在某种程度上进行标准化,以确保整个行业所获得的经验的一致性?
Kosta Kontos

-2

它永远不会,至少不是全部。软件是一种媒介,就像绘画一样。有些人从事大型建筑物的工业规模油漆工作,有人设计新油漆以达到高标准,但也有人买油漆做小规模的工作,例如棚子上的油漆,还有一些人可能会混合使用自己画,但只用它画猫的照片。

同样,虽然我可以看到安全关键和/或财务软件需要经过认可的工程师来进行开发的未来,但是永远不需要生产美术或娱乐软件的人。为了获得拥有认可工程师的安全或财务软件,需要进行哪些更改?就像其他行业一样,这将需要法律来强制执行。


4
与其他工程学科有何不同?让我们以土木工程为例。任何人都可以在小溪的后草坪上架起一座桥梁。但是并不是每个人都可以在湖上修建公路桥梁。我认为这也可以应用于许多其他工程学科,并且公认工程是一种专业。
Thomas Owens

@ThomasOwens没错,但是对于软件,我们并没有正式的“不是每个人都可以负担高速公路桥梁”的部分,但是
jk。

2
这不是真的。并非每个人都可以为民用客机构建航空电子软件。或放射治疗机的控制软件。有许多受控制,管制的软件,并且需要某些标准。但是,直到最近,还没有与其他工程学科一起获得的许可。
Thomas Owens

1
@ThomasOwens作为一名从事商用飞机(OBIGGS)航空电子软件的软件工程师,是的,实际上,任何人都可以建造这种飞机。该软件并不那么复杂。但是,客户确实对它的健壮性和对它不会爆炸的信心满满。就像任何人都可以搭建一座桥梁一样,很糟糕,任何人都可能很难编写一个OBIGGS单元。专业方面包括测试,过程,解决DO-178b的问题,并能够自信地证明它在跨越国际日期变更线时不会从天而降。
菲利普(Philip)

3
“软件中没有物理学的类似物”:有一种叫做数学或其他形式化方法的东西。实际上,对于任务关键型软件,大部分工作都用于规范,验证和测试,而只有10%的工作用于实际编码。只能以敏捷,反复试验的方式(即在他们的后草坪上架桥的方式)来开发非关键任务软件,但是请尝试使用相同的方法来构建航空电子软件!
Giorgio

-2

软件不是一种职业,也不是一种职业。

“当任何行业或职业通过基于教育,学徒制和考试的正式资格的发展,出现有权接纳和纪律成员的监管机构以及某种程度的垄断权而改变自身时,就会出现一种职业。”

该描述与软件完全不匹配。

首先,对软件感兴趣的任何人都可以出去尝试开发软件。这些人中有许多人的大学学位与计算机编程完全无关,许多人根本没有学位。没有什么阻止这些团体中的任何一个成为软件程序员。

软件之所以不能成为专业人士,是因为“获得许可”的成员应对其造成的损害和不当行为负责。80-90%的开发人员将在仅仅几年内就失去工作。

总的来说,软件质量差强人意,容易出错,只是做得不好。值得当专业吗?您是否预见到由于人们获得许可而停止?如果专业组织不能代表高标准和专业素质,那么就没有意义了。这直接违背了行业惯例。编写质量高,功能强大且可运行的软件违反了大多数公司的原则,因为上市时间短,成本高就够了,不想破坏其他任何尝试来修复损坏的软件被视为更多比专业级软件重要。

另外,关于不当行为。您将如何证明一个开发者与另一个开发者之间的责任。在软件中,这是易于指责的方法,并且两个开发人员都“正确”。当开发人员使用隐藏在操作系统肠道中的未公开文档的API,然后操作系统供应商更改其功能或删除该功能时,应该责怪谁?

祝您监管机构事事如意。让我们看看国会在微软要求他们取消该法案时对微软说不,因为这将只允许他们雇用“授权”开发人员。如果没有该监管机构,那么谁将加入有权对您进行纪律处分并向您收取会费的组织,尤其是如果没有附加价值(例如没有监管机构获得垄断权)的话。

至于,要求许可会是件好事吗?绝对,对于那些可以得到认可的人。随着您新发现的垄断地位,您的工资将急剧上升。

但是,对于其他所有人...随着当今我们看到的快速发展步伐,计算机技术在企业中的使用可能会下降。当然,新软件的开发会遇到障碍,例如语言和设计方法。毕竟,谁将想寻求新的工作方式,而这需要多年的重新培训才能维护您的许可证。大多数有执照的开发人员都希望保持这种状态。


添加一些引用来支持您的断言(对我来说有一定意义,但这没关系),我将删除下一篇投票
gnat
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.