Answers:
招聘时,我们会寻找能够帮助我们构建系统,定义流程,创建技术规范,实施高级重构等的人员与能够帮助我们从清单中完成编程任务的人员之间进行区分。我相信您可以将前者称为软件工程师,将后者称为程序员。
这实际上取决于公司,因为我不认为有一个法律框架可以强制使用一个名称或另一个名称,或者至少我不知道该名称,这可能因国家/地区而异(例如,该术语的使用实际上,“工程师”在法国受到了严格的监管,但是“虐待”案件中允许使用变体。
话虽这么说,总体趋势是这样的:
甲程序员位置通常是一个专业的雇用以产生计算机程序的代码。这意味着您知道如何编写代码,可以理解算法并遵循规范。但是,就责任而言,通常到此为止。
甲显影剂位置通常被认为是一种超类型程序员位置。它包含了相同的责任,再加上在设计和构建软件组件的能力,并编写技术文件为它(包括规格)。您能够-至少在技术上-领导其他人(所以,程序员),但不一定是团队(有绒毛……)
一个工程师的岗位,通常意味着你是一个开发谁拥有特定类型的程度,一些工程方面的知识,并能够设计一个系统的(如:软件组件的组合/一起,形成一个整体的软件实体模块) 。基本上,您会看到更宽广的图景,并且能够设计和解释它并将其分成较小的模块。
但是,所有这些都是有争议的,而且正如我说的那样,在美国/英国国家/地区,我没有任何法律要求。话虽这么说,但在法国,如果您来自工科学校(被工程师工程师协会或类似机构认可),则只能称自己为“工程师”。您不能说自己拥有“工程师学位”,但是如果您学习了属于工程和技术范畴的学科,则可以说您具有“工程学学位”。
我可能真的不知道,有些国家可能有类似的区别。
回到软件工程师的头衔……一次,我的一位老师告诉我们的班级-正确的是- 到目前为止,还没有所谓的“软件工程”。因为对某物(例如建筑物,车辆,硬件...)进行工程设计意味着您能够设想其设计和生产的所有阶段,并能够准确地预测所需的资源,从而预测生产成本。
大多数“真正的”工程学科都是如此。当然会有波动(例如,材料的价格会随时间变化),但是理论模型(用于设计和规划)和经验模型非常有限(为了使前者几乎处于可访问的约束范围内)使您可以预测项目的终止日期及其资源使用情况。
软件的主要问题是尚不存在。我们希望以软件工程为目标,但实际上还没有。因为我们有一个非常多变和动态的环境,对项目的约束非常多变,并且在我们的过程中回想起来仍然不够成熟。当然,我们可以说我们做得更好(尽管在硬数据方面存在很大争议),但是直到60年代我们才开始这样做(早期项目实际上更接近于纯硬件计算机,因此更接近于实际工程,具有讽刺意味的是, )。尽管我们已经在过去的一个多世纪中一直在制造机动车辆,但一般而言,它已经发展了几千年,甚至已经发展了数千年(实际上在世界的某些地方确实非常擅长于此,这让您感到我们像'
我们无法准确地系统地预测期限,我们无法准确地系统地预测成本,我们无法有效地和确定性地系统地识别和减轻固有和外部的风险。我们能做的最好的事情是产生足够好的猜测值,并容纳一些缓冲区,同时尽最大努力优化流程以减少周期和开销。
但是,也许这就是工程学。这就是当有人谈论“软件工程师”时,他们应该想到并瞄准的对象。
因此,这似乎与编程例程的简单操作或开发应用程序的更高级操作很难互换。
尽管如此,一切都是趋势问题。最近,有一个水平开发团队,团队中的每个人都是高级软件开发人员(是的,大写,因为这使我们感到特别,不是吗?),这是很常见的,而没有年龄的实际区分(在我看来,这很公平)意见),而没有太多区分技能(呃……)和责任的能力(现在,这已经不是很好了,仅仅因为公关嗡嗡声而已)。
这也是有时只是一种习惯势力和特定于行业的文化和行话。嵌入式软件生产的更多职位使用软件工程师的头衔。通常是因为这可能意味着您在该领域也将始终必须在一定程度上处理硬件,因此您显然要处理生产和生产的整个“系统”的其他方面。不仅其中的位变得疯狂。另一方面,您不会真正看到术语“工程师”在财务软件生产职位中使用。这是因为该行业是从其前任的一个模仿发展而来的(例如,嵌入式工程扎根于汽车工程),或者是因为他们只是想给某个职位更多或更少的信用/权重。
并且一定要确保每个人都不会迷失方向,然后您会发现其他两个标题混在一起(例如“ Software Development Engineer”或“ Testing Software Engineer”!),然后其他人都强调与其他领域的疯狂桥梁(想一想“软件架构师”,以及“软件架构”如何成为无耻的词汇盗用)。并保持他们的到来:发布工程师,变更开发经理,构建工程师(当然还有ffaaarrrrrr)。有时只是简单的“工程师”。
希望能有所帮助,尽管这并不是真正的答案。
哦,这意味着您的新公司要么试图用新的头衔吸引您,要么他们根本不在乎头衔,否则您实际上将拥有更高的职位。唯一的了解方法就是阅读您的工作规范,与他们交谈,最后试一试,然后自行判断。我希望这是后一种选择,并且您对此感到满意(并且可能会从中获得更多现金)。;)
因此,这里有“软件工程师”,“程序员”,还有“开发人员”,“编码人员”,您永远都不会忘记“ SOA专家”
对于那些无法在简历中说出有意义的话的人来说,这些都是营销术语,例如以前职位中的实际角色(不仅仅是职务)。
在招聘广告上,区别在于人力资源人员。
底线:每个人都有自己的看法,“什么才能使优秀的员工用代码工作”,有些人喜欢将这样的技能与这样的标题联系起来。
你需要做什么?招聘广告应描述所需技能,简历应说明候选人的经历细节。
软件工程师倾向于在非常大的系统上工作,例如需要5到16年才能开发。程序员倾向于仅使用编码而不是其他的刻板印象。但这实际上取决于您工作的组织以及人力资源如何营销上述角色。它们本质上是同一件事。只是不要太在意标题,因为它是同义词。