📜  软件开发人员和软件工程师之间有什么区别吗?

📅  最后修改于: 2021-10-19 08:14:48             🧑  作者: Mango

软件行业最大的争论话题之一是……软件工程和软件开发之间有什么区别吗?有些行业和技术人员认为两者是一回事,有些则认为不同。在过去的几十年里,这两个术语完全搞砸了。行业或雇主无法区分这两个术语。

软件开发人员和软件工程师之间的差异

好吧,我们不会根据个人看法来决定这一点。我们将分析一些事实、例子、工作职责和其他相关术语来得出结论。如果你想让我们清楚地了解一切,那么让我们首先讨论谁创造了“软件工程”这个词。
玛格丽特·汉密尔顿……是的,这位女士创造了“软件工程”这个词。根据汉密尔顿的说法, “当我第一次开始使用这个短语时,它被认为非常有趣。很长一段时间以来,这是一个持续不断的笑话。”

让我们看看与现实生活中的例子的差异

示例 1:将开发人员视为专业厨师。他必须准备可口或美味的菜肴,了解并针对客户的口味。现在,他将采用一种创造性的方法,使用适合其客户口味的资源来准备美味的菜肴。软件开发人员将采用相同的方法来交付高质量的软件,使用他的软件工具或资源了解客户的期望。

示例 2:现在考虑一家酒店,其中 3 家餐厅依赖于一个厨房。这个厨房的主厨就像一个软件工程师,有责任在每家餐厅提供相同质量的食物,就像经营一家餐厅的专业厨师一样。因此,这个厨房的主厨将管理所有餐厅,而不会影响任何一家餐厅的菜肴质量。

示例 3:在工业中,软件工程师可以被视为一个 musher,他将软件开发人员作为代码狗连接到他们的雪橇上,并推动他们走向胜利,以完成跨越冰冻北极的项目。现在您可能已经非常清楚地了解了两件事……一是软件工程师在比开发人员更大的范围内解决问题,另一个是……软件开发人员在软件工程师完成项目中扮演着重要角色。

什么是软件工程?

在软件工程中,工程师应用科学知识、工程原理或工程科学来构建新系统或以高质量、按预算和按时解决实际问题。所以他们着眼于大局,并承担整个软件开发生命周期或任何现有问题的责任。他们需要为大量的人提出一个通用的解决方案,而不是为特定类型的客户提供特定的解决方案。

因此,软件工程师需要检查科学知识、数学和独创性。软件工程师会检查为技术、社会和商业问题开发解决方案。软件工程师还需要检查考虑到实用性、法规、安全性和成本所施加的限制的系统设计。软件工程师负责管理开发任务。

考虑一个方程6÷2(1+2)=x 。现在,工程师不再需要给出解决方案 1 或 9 或其他解决方案,而是需要在高层次上理解方程,因此这个数学问题缺少括号,如果操作顺序完全改变,这对于决定首先需要执行哪个函数很重要结果。因此,他们希望提出一个解决方案,即由于歧义无法求解方程而在工程中,不能存在歧义。

什么是软件开发?

您可以将软件工程师视为架构师,将软件开发人员视为木匠。在软件开发中,主要关注的是制作事物的艺术。软件开发人员利用他们的创造力、模式和实践来构建事物,并将重点放在开发项目上,作为整个软件开发生命周期的一部分。他们不必像软件工程师那样依赖任何工程原理或科学方法的基础。软件开发人员与图形设计师、产品经理、高级经理、客户代表和其他团队成员密切合作以构建特定项目。软件开发人员负责构建承担开发任务的事物。
在拥有一些行业经验后,软件开发人员开始管理系统的多个部分。因此,软件开发人员可以通过获得经验和扩大他们的职责范围来成为一名软件工程师。

所以你可以从上面的描述中总结出两件事……

软件开发人员和软件工程师之间的区别

要了解这两个术语之间的明显区别,将从程序员开始讨论,然后我们将逐渐转向工程师。

先来看一个程序员端

程序员是可以用计算机可以理解的语言与计算机交谈的人。计算机程序员翻译或编码计算机要遵循的指令。您可能会对程序员说“让我成为一个网络库,以便在 C# 中获取 HTML 页面”。程序员在这里要做的是,他会一点一点地完成这个任务,他会发送报告。因此,程序员的工作仅限于为网络编写代码并将其交还给请求它的人。所以程序员没有太多的责任。如果您要求程序员从某个位置检索文件,他将为此编写代码,完成任务,仅此而已。程序员必须做一件事,无论他/她被分配做什么。当您开始编码时,您的旅程将从成为一名程序员开始。

现在让我们转向开发人员的角色

开发离编程不远了。作为程序员,您可以扩展您的工作职责并成为一名开发人员。假设有人要求您构建软件。现在构建软件不仅仅是在一个简单的软件上工作(制作网络库是一个软件)。您需要考虑网络部分,您可能必须与服务器一起工作,您可能还必须与前端或后端一起工作。因此,作为开发人员,您需要处理所有软件部分,这意味着完整的软件结构。您还需要了解如何链接所有不同的软件部分。因此,软件开发人员了解他正在制作的产品的结构。

现在终于转向工程师角色

最后,让我们扩展软件开发人员的角色并转向软件工程师的角色。当您向软件工程师请求构建软件时,他/她需要考虑使用不同技术的服务器、网站和应用程序。现在软件工程师将管理整个开发任务并将它们分配给开发人员。一个开发者负责服务器,一个负责网站,一个负责应用程序。软件工程师需要确保所有这些东西都可以相互通信。因此,软件工程师比软件开发人员负有更大的责任,因为他负责构建产品,使最终用户或客户一切正常。简而言之,软件工程师将所有任务外包给软件开发人员。

现在您可能已经清楚地知道程序员如何转变为软件工程师的角色来扩展他/她的职责。他们的薪水也各不相同。软件开发人员的收入将高于程序员,软件工程师的收入将高于开发人员。

结论:我们可以说,开发人员的工作开始于与客户交谈,了解他们的需求,然后设计和开发满足客户需求的应用程序的不同组件。他从头到尾管理整个项目。
软件工程师可以完成开发人员所做的所有事情,但要考虑比开发人员更大的图景或视图。他们负责管理完整的架构。

软件开发人员与软件工程师