it-swarm.cn

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

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

102
grokus

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

79
Nicole

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

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

  • 程序员职位通常是雇用用来生成计算机程序代码的专业人员之一。这意味着您知道如何编写代码,可以了解算法遵循规范。但是,就责任而言,它通常会停在那里。

  • 开发人员职位通常被认为是程序员职位的超类型。它包含相同的职责,plus设计和构建软件的能力组件,并为为此编写技术文档(包括规格)。您具有能够-至少在技术上-领导其他人(因此,程序员),但不一定是团队(有绒毛...)

  • engineer职位通常意味着您是具有特定类型的学位,有些具有工程知识,并且能够设计系统(例如:组成一个完整软件实体的软件组件/模块的组合。)基本上,您看到了更宽广的图片,并且您能够设计和解释并将分开)分成较小的模块

但是,所有这些都是有争议的,正如我所说,在美国/英国国家/地区没有法律规定,我知道。也就是说,在法国,您只能称自己为如果您来自工程学校(工程师委员会或类似的机构认可),则为“工程师”。您不能说自己拥有“工程师学位”,但可以说自己具有“工程学位” ”,如果您所学的学科属于工程学和技术学的范畴。

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

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

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

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

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

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

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

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

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

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

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

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

130
haylem

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

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

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

81
Jer

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

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

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

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

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

15
Ken Egozi

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

10
GrandmasterB

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

8
darreljnz

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

3
JB King

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

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

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

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

3
James Black

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

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

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

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

3
Khelben

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

2
Siamac Nikoo