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


Answers:


80

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


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

2
可以将前者称为软件工程师,但我不会。正如Brendan所迷恋的那样,通常这是软件架构师的工作。
JᴀʏMᴇᴇ

131

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

话虽这么说,总体趋势是这样的:

  • 程序员位置通常是一个专业的雇用以产生计算机程序的代码。这意味着您知道如何编写代码,可以理解算法遵循规范。但是,就责任而言,通常到此为止。

  • 显影剂位置通常被认为是一种超类型程序员位置。它包含了相同的责任,再加上设计和构建软件组件的能力,并编写技术文件为它(包括规格)。您能够-至少在技术上-领导其他人(所以,程序员),但不一定是团队(有绒毛……)

  • 一个工程师的岗位,通常意味着你是一个开发谁拥有特定类型的程度,一些工程方面的知识,并能够设计一个系统的(如:软件组件的组合/一起,形成一个整体的软件实体模块) 。基本上,您会看到更宽广的图景,并且能够设计和解释它并将其分成较小的模块

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

我可能真的不知道,有些国家可能有类似的区别。

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

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

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

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

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

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

尽管如此,一切都是趋势问题。最近,有一个水平开发团队,团队中的每个人都是高级软件开发人员(是的,大写,因为这使我们感到特别,不是吗?),这是很常见的,而没有年龄的实际区分(在我看来,这很公平)意见),而没有太多区分技能(呃……)和责任的能力(现在,这已经不是很好了,仅仅因为公关嗡嗡声而已)。

这也是有时只是一种习惯势力和特定于行业的文化和行话。嵌入式软件生产的更多职位使用软件工程师的头衔。通常是因为这可能意味着您在该领域也将始终必须在一定程度上处理硬件,因此您显然要处理生产和生产的整个“系统”的其他方面。不仅其中的位变得疯狂。另一方面,您不会真正看到术语“工程师”在财务软件生产职位中使用。这是因为该行业是从其前任的一个模仿发展而来的(例如,嵌入式工程扎根于汽车工程),或者是因为他们只是想给某个职位更多或更少的信用/权重。

并且一定要确保每个人都不会迷失方向,然后您会发现其他两个标题混在一起(例如“ Software Development Engineer”或“ Testing Software Engineer”!),然后其他人都强调与其他领域的疯狂桥梁(想一想“软件架构师”,以及“软件架构”如何成为无耻的词汇盗用)。并保持他们的到来:发布工程师,变更开发经理,构建工程师(当然还有ffaaarrrrrr)。有时只是简单的“工程师”。

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

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


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

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

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

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

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

81

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

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

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


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

15

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

对于那些无法在简历中说出有意义的话的人来说,这些都是营销术语,例如以前职位中的实际角色(不仅仅是职务)。

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

底线:每个人都有自己的看法,“什么才能使优秀的员工用代码工作”,有些人喜欢将这样的技能与这样的标题联系起来。

你需要做什么?招聘广告应描述所需技能,简历应说明候选人的经历细节。


10

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



3

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

但是,没有真正的集合定义,因此人们可以根据标题知道您的工作或经验。

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

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


3

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

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

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

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


3

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


2

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

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.