软件工程师和程序员之间的主要区别是什么?

评论

乔尔已经问过这个问题了。这不是一个容易回答的问题,我不确定是否有明确的答案。但我确实知道乔尔已经提出了这个问题。

#1 楼

招聘时,我们会寻找能够帮助我们构建系统,定义流程,创建技术规范,实施高级重构等的人员与能够帮助我们完成清单工作的人员之间的区别。 。我相信您可以将前者称为软件工程师,而将后者称为程序员。

评论


您能否说明一下,您是否雇用这两个人(从事不同的工作)还是只雇用软件工程师?

– Jaap
2013年1月10日12:08

您可以将前者称为软件工程师,但我不会。正如Brendan所避免的那样,通常这是软件架构师的工作。

–JᴀʏMᴇᴇ
16年5月5日在8:00



#2 楼

这实际上取决于公司,因为我不认为有一个法律框架可以强制使用一个名称或另一个名称,或者至少不是我所知道的,这可能因国家/地区而异(例如,该术语的使用在法国,“工程师”实际上受到了相当的监管,但是“虐待”案件中允许使用变体。)

可以这样说,总体趋势是这样的:


程序员的职位通常是聘请生产计算机程序代码的专业人员之一。这意味着您知道如何编写代码,可以理解算法并遵循规范。但是,从责任的角度来看,通常会停在那里。
开发人员职位通常被认为是程序员职位的超类型。它包含相同的职责,还具有设计和构造软件组件以及为其编写技术文档(包括规范)的能力。您能够-至少在技术上-领导其他人(因此,程序员),但不一定是团队(会有绒毛...)
工程师职位通常意味着您是具有特定技能的开发人员学位类型,一定的工程知识以及能够设计系统的系统(例如:组成一个完整软件实体的软件组件/模块的组合)。基本上,您会看到更宽广的图景,并且能够对其进行设计和解释,并将其分为较小的模块。

但是,所有这些都是有争议的,而且正如我所说,在美国/英国国家/地区,我没有任何法律要求。话虽这么说,但在法国,如果您来自工程学校(由工程师工程师协会或类似机构认可),则只能称自己为“工程师”。您不能说自己拥有“工程师学位”,但是如果您学习了属于工程技术领域的学科,就可以说自己具有“工程学学位”。



回到软件工程师的头衔...一次,我的一位老师告诉我们的班级-正确的是-到目前为止,还没有所谓的“软件工程”。因为对某物(例如建筑物,车辆,硬件...)进行工程设计意味着您能够预见其设计和生产的所有阶段,并能够准确地预测所需的资源,从而预测生产成本。

大多数“真正的”工程学科都是如此。当然会有波动(例如材料的价格会随时间变化),但是理论模型(用于设计和规划)和经验模型非常有限(为了使前者几乎保持在可访问的约束范围内)使您可以预测项目的终止日期及其资源使用情况。

软件的主要问题是尚不存在。我们希望以软件工程为目标,但实际上还没有。因为我们有一个非常多变和动态的环境,对项目的约束也非常多,而且在回顾过程中仍然缺乏成熟性。当然,我们可以说我们在此方面做得更好(尽管在硬数据方面存在很大争议),但自60年代以来我们就一直在这样做(较早的项目实际上更接近于纯硬件计算机,因此更接近于实际工程,具有讽刺意味的是, )。尽管我们已经在过去的一个多世纪中一直在制造机动车辆,但一般而言,它已经发展了几千年,甚至已经发展了数千年(实际上,在世界的某些地方确实非常擅长于此,让您感到我们像相比之下,这是荒谬的孩子在玩我们的新型闪光软件玩具。)

我们无法准确地系统地预测工期,我们无法准确地系统地估算成本,我们无法系统地识别和减轻内在和外部风险有效和确定性。我们能做的最好的事情是产生足够好的猜测值,并容纳一些缓冲,同时尽力优化流程以减少周期和开销。

但是,也许这就是工程学。这就是什么,当有人谈论“软件工程师”时,他们应该想到并针对。

因此,这似乎与编程例程的简单操作或开发的更高级操作几乎是不可互换的。应用程序。

仍然,一切都是趋势问题。最近,有一个水平开发团队,团队中的每个人都是高级软件开发人员(是的,大写的,因为这让我们感到特别,不是吗?),这是很常见的,而没有年龄的实际区分(在我看来,这很公平)意见),而不是技能(uh-oh ...)和职责(现在仅凭PR嗡嗡声就不行了)的区别。

有时也只是习惯的力量,特定于行业的文化和行话。嵌入式软件生产的更多职位使用软件工程师的头衔。通常是因为这可能意味着您在该领域也将始终必须在一定程度上处理硬件,因此您显然要处理生产的其他方面以及所生产的整个“系统”。不仅其中的位变得疯狂。另一方面,您不会真正看到术语“工程师”在财务软件生产职位中使用。这是因为该行业是从其前任之一模仿而来的(例如,嵌入式工程扎根于汽车工程),或者是因为他们只是想给某个职位更多或更少的信用/权重。 />
为了确保每个人都迷茫,您将发现其他两个标题混在一起(例如“软件开发工程师”或“测试中的软件工程师”!),然后其他人都在强调与其他领域的疯狂桥梁(例如“ Software Architect”以及“ Software Architecture”如何成为无耻的词汇盗用)。并保持他们的到来:发布工程师,变更开发经理,构建工程师(当然也是如此)。有时只是简单地“工程师”。

希望能有所帮助,尽管这并不是真正的答案。

哦,这意味着您的新公司要么试图吸引您,拥有新标题,或者他们不太在乎标题,或者您确实将拥有更高的职位。唯一的了解方法就是阅读您的工作规范,与他们交谈,最后试一试,然后自己做出判断。我希望这是后一种选择,并且您对此感到满意(并且可能会从中获得更多现金)。 ;)

评论


《实用程序员》一书也说软件不像工程。虽然您可以规划房屋或摩天大楼,但几乎无法使用类似软件工程的类比。他们指出:软件更像是园艺。规划花园,种植植物。然后查看生长情况,清除杂草并种植新植物。

–猎鹰
2011年8月8日在6:02



“一旦我的老师告诉我们的班级,到目前为止,还没有所谓的“软件工程”。因为工程学意味着您能够预见其设计和生产的所有阶段,并能够准确地进行预测您将需要的资源”。在撰写本文时,这可能是不正确的。像建筑一样,我们无法在不知道需求的情况下预测成本(摩天大楼的成本是多少?在开始建造之前,我不会告诉您它必须达到多少……)。但是,有了成熟的软件开发团队,我们可以在以后预测成本。

– MSalters
2011年8月8日9:45



@MSalters:当然,您可以解决这个问题:就像架构一样,我们无法没有要求就预测成本。但是与体系结构不同,即使有明确定义的要求(尽管我们的要求通常会更加灵活,因为很难预测它们,或者我们倾向于允许它们进行更改),但我们无法预测成本。您可以在常规工程中以非常精确的精度完成此操作,并且与SE相比,我们目前更能够确定特殊情况下的成本。我们只做(相当粗略)猜测。我们在制作它们方面变得越来越好,但是他们仍然有很多猜测。

– Haylem
2011年8月8日在23:54

@haylem:这是软件开发中的规范。但是,如果您在CMM级别4/5的公司工作过,您会注意到他们可以预测成本,并经常给他们附加95%的置信度。他们足够了解自己的软件基础,​​并且有足够好的要求,因此很少遇到障碍。当您有经验来应对时,路障的成本就会降低。

– MSalters
2011年8月9日在7:46

@pcurry:请注意,我不认为这是“我的分类法”。招聘人员和公司工资单通常都这样认为,这也是CS ot IT课程中经常采用的方式。他们倾向于互相射击。因此,我想我列出的是(所谓的)软件工程师而不是(自我描述的)程序员所采用的观点。您所说的自己并不重要,重要的是人们会认为您什么。而且只有在您关心此类事情时才重要。老实说,我个人并不在意成为一个人,也不会改变我。

– Haylem
13年6月12日在16:41

#3 楼

软件工程师是在公司工作的人,称他们为他们编写软件的人为“软件工程师”。

也有开发人员或软件开发人员。他们是在公司工作的人,分别称为他们编写软件的人是“开发人员”或“软件开发人员”。

评论


我应该注意,这个答案并不是真的很有趣。

–耶
13年10月10日在6:04

#4 楼

因此,这里有“软件工程师”,“程序员”,还有“开发人员”,“编码人员”,您永远都不会忘记“ SOA专家”

这些都是那些无法说出自己的简历中有意义的内容,例如以前职位中的实际角色(不仅仅是职务)。

在招聘广告中,区别在于人力资源人员。

底线:
每个人都有自己的看法,“什么才能使优秀的员工用代码工作”,并且有些人喜欢将这样的技能与这样的标题联系起来。 />
您需要做什么?
求职广告应描述所需的技能,简历应说明候选人的经历细节。

#5 楼

没有差异他们是一样的东西。但是,公司可能会使用这些术语进行正式的职位描述,然后该术语可能会有一些特定于公司的含义。

#6 楼

编程是关于代码的。软件工程是关于最终产品的。

#7 楼

这实际上取决于公司如何定义职位。作为软件工程师,您可能会有更多的设计决策机会,而作为开发人员,他们将为您提供UML图,您可以编写程序。

但是,没有真正的集合定义,因此

当我是一名架构师/开发人员时,我的头衔是计算机科学家,但我只想告诉人们我是一名程序员,因为前两个不容易定义,但是大多数人都知道程序员的工作。

如果标题对您很重要,请接受新标题,因为工程师听起来比开发人员要高。

#8 楼

我认为没有任何“官方差异”,因为我的经验可能意味着:


一些公司使用软件工程师和软件开发人员来指代同一件事。他们只是使用自己喜欢的术语。
其他人则将两个术语都用在不同的内部职位上,但是各个公司的角色不同!在某些情况下,可能只是功能上的差异(软件工程师将负责系统的维护和改进,而开发人员将负责公司的产品),或者可能是分层的(工程师高于开发人员),甚至工程师真的依赖Q&A!

,时尚术语也在发生变化...首先,术语是“程序员”,然后是“软件工程师”,现在似乎是“开发人员”。 。

最好阅读职位描述或给特定公司的人

#9 楼

在某些辖区,“工程师”要求具备成为专业工程师的资格,即具有P. Eng。贬低某人的凭据。但是,在其他领域可能没有什么不同,因为几年前我是华盛顿州的一名“ Softwere设计工程师”。

#10 楼

软件工程师倾向于在非常大的系统上进行工作,例如,需要花费很多年才能开发出的系统。例如5至16年。程序员倾向于仅使用编码而不是其他的刻板印象。但这实际上取决于您工作的组织以及人力资源如何营销上述角色。它们本质上是同一件事。只是不要太在意标题,因为它是同义词。