跳转到主要内容
Chinese, Simplified

大多数人认为程序员软件开发人员)和软件工程师软件架构师是一样的。尽管这些差异在大公司中是显著的,但大多数人认为这就是语义,而在小公司中他们是正确的。

还有一个问题是高级(senior )软件工程师首席(principal)软件工程师,或者员工(staff )软件工程师首席(principal)软件工程师之间有什么区别。

主要区别在于首席(principal )工程师的水平略高于高级工程师,高级首席工程师有能力从事工程开发的前沿工作,被视为所在领域的领导者。

区别之一是首席(principal )工程师向高级管理层报告,而高级(senior )工程师则向所在部门的领导报告。首席工程师是专家,他们的成功直接关系到他们实验室的形象,因此他们可以影响公司的形象和声誉。虽然高级工程师以其技术专长和工程理论的应用而闻名,但首席工程师与他们领域内的开拓性开发有关,可以证明理论或开发新理论。

Big Company

大公司和来这些角色的正式的方法

软件架构师

软件架构师是一个软件开发专家,他做出高级设计选择,并指定技术标准,包括软件编码标准、工具和平台。

                                                                                                    --------维基百科

他拥有所有来自较低职位的经验,对做某事的最佳方式有着清晰的见解。

通常,软件架构师,例如,Go开发人员是经验丰富的人,他们了解如何构建好的软件。他得到了软件需求,并给出了如何得到最终解决方案的图表。也许他甚至会编写一些代码作为软件工程师和开发人员使用的基础。

软件架构师有时甚至参与硬件环境架构的设计。但是,大多数情况下,他们只关注代码的方法论。

想象一下建造一座房子;简单地说,软件架构师就是选择房子的形状和材料并绘制房子蓝图的人。

软件架构师的一些职责是:

  • 向涉众报告软件需求
  • 设计文档和高级产品规范
  • 为软件工程师和软件开发人员提供架构蓝图,他们应该遵循
  • 遵守时间表和截止日期
  • 测试最终产品,以确保其符合要求,并确保其功能完整。

成为软件架构师所需的教育和经验:

  • 计算机科学硕士学位
  • 在软件开发和项目管理方面有丰富的经验
  • 领导能力和组织能力
  • 有分析的心态,能随时看到细节和大局
  • 较强的沟通和表达能力
  • 5-8年软件工程师专业经验。

软件工程师

软件工程师是将软件工程原理应用于计算机软件的设计、开发、维护、测试和评估的人。

维基百科

软件工程师利用算法原理解决现实世界中的问题,并与上面的人进行协调。

一个软件工程师将拥有高效开发软件的专业知识。他们知道解决每个问题的正式方法是什么,并一步一步地遵循。这样,他们就可以关注可重用性、可维护性和正确性

当遇到问题时,软件工程师不仅会“让它工作”,相反,他会寻找最佳实践,使解决方案高效并可维护以扩展。

在美国,软件工程师的平均年薪是106044美元。

简单地说,是指一个人阅读了房子的设计图,却决定了建造房子的最佳实践。

软件工程师的一些职责是:

  • 通过评估分析、问题定义、需求、解决方案开发和建议的解决方案来确定操作可行性。
  • 调查问题区域
  • 遵循软件开发生命周期
  • 保密信息
  • 通过设计、开发和安装软件解决方案来开发信息系统。

成为软件工程师所需的教育和经验:

  • 计算机科学学士或理学硕士
  • 五年专业软件开发经验
  • 应用程序体系结构和设计模式
  • 在整个软件开发生命周期中担任技术领导的经验
  • 具有开发分布式/可扩展系统和大容量事务应用程序的经验。

什么是首席(Principal )软件工程师?

一个首席(Principal )软件工程师通常是一个非常高级的个人贡献者。他们可以通过自己的经验和资历来行使技术领导权。他们的项目对于一个10人的团队来说通常太大了。他们的目标更一般,如“提高现金流”或“规模100-1000倍”。通常,在高级工程师之后,您会花更少的时间编写代码,而更多的时间做不同的事情,如改进流程、架构监督、指导新的工程师以及与其他业务部门的接口。

你可能会问,在美国,首席软件工程师的平均年薪是152929美元。

软件架构师vs软件工程师?

软件架构师为不同的业务和技术需求创建了一个计划。软件工程师阅读由软件架构师创建的计划或设计,并开始用最适合计划的语言来实现。

-------------------------------------------------Quora.com网站

软件开发人员(尤其是在更非正式的上下文中)有时被称为程序员,是创建计算机软件的人。计算机程序员一词可以指计算机某一领域的专家,也可以指为多种软件编写代码的多面手。

-------------------------------------------------维基百科

软件开发人员做什么?

软件开发人员或程序员(如乌克兰开发人员)只是简单地编写代码。他理解逻辑、循环、函数和其他基本事物的概念。他协助开发、实施和管理基于技术的业务解决方案。他编码、测试并实现配置更改,以满足功能和技术要求。

简单地说,他在装修房子的时候钉钉子,在装修的时候拆掉墙壁。

软件开发人员的一些职责是:

  • 研究、设计、实施和管理软件程序
  • 测试和评估新程序
  • 确定现有程序中的修改区域,并随后制定这些修改
  • 编写和实现高效的代码
  • 确定操作实用性
  • 制定质量保证程序
  • 部署软件工具、过程和度量
  • 维护和升级现有系统
  • 培训用户
  • 与其他开发人员、用户体验设计师、业务和系统分析师密切合作。

成为软件开发人员所需的教育和经验:

  • 计算机科学学士学位(不一定需要学位)
  • 学位学习的编程经验
  • 善于分析的头脑
  • 商业和商业意识
  • 业务流程分析
  • 书面和口头沟通能力
  • 注意细节
  • 快速学习新技术的能力。

什么是首席软件开发人员(Principal Software Developer)?

一个首席(principal )开发者是一种专家,一个工匠而不是一个熟练工。最终我认为这个角色是关于你如何编写代码,你使用的工具,以及你用来编写软件的工作实践。紧跟行业潮流,寻找灵感的大玩家:亚马逊、微软、谷歌、Github、开源项目。尽早使用和更新尖端技术,不要害怕尝试尖端技术。

在美国,主要软件开发人员的平均年薪为127761美元。此时,您可能需要考虑离岸外包的优点和缺点。

Small Company

小公司及其员工的适应性

在规模较小的公司,由于预算紧张,员工往往被要求“戴多顶帽子”,有时一个人就拥有这三种头衔。

如果你是一个企业主,也许你就是这样做的人,或者你应该这样做。在你做的事情上没有什么不同,但是在你被感知的方式上有很大的不同。

在第一次与客户供应商接触时,作为企业主,您可以介绍自己是软件架构师。他们会觉得自己很有价值,因为这样一个“级别”很高的人在和他们交谈,而且任何决定都不能被更高级别的人拒绝。所有的工作做得更快,或有时商定的取消工作做得更快。他们会知道你是老板,那里的决定是最终的。

与您的团队成员一起,您可以自我介绍为团队犯下的所有愚蠢错误负责的人(软件工程师)。你将减轻他们的压力,并建议其他人做出正确的决定。办公室里需要有一种幽默感,这样才能使身心放松。通过与你合作,他们将了解你的实际技能。

如果有人叫你编码员,你会生气吗?我当然希望你不会。这意味着他们认为你知道如何编码,并将把你视为朋友、盟友,而不是处于公司高层、与程序员必须面对的“现实世界”脱节的外星人。

一个人可以在一个给定的时间内完成所有这些操作模式。根据任务的重要性和完成任务的人的熟练程度,他们可能更喜欢一个头衔。

此外,没有任何限制,一个高级人员不能履行所有这三个角色。一旦架构工作完成,软件架构师就可以作为软件工程师参与工作。为什么不呢?这是个优势!他知道人们对他的期望是什么,他尽一切努力来实现这一点。

总结

这三种角色之间最显著的区别是决策的影响。

按照重要性的顺序,在架构级别做出的决策是至关重要的,如果发生错误,通常很难做出改变,而且代价高昂。在复杂系统中,架构错误可能会花费数年的时间。一个设计错误可能需要几次冲刺。一旦发现编程错误,就可以立即修复。

 

原文:https://ncube.com/blog/developer-vs-engineer-vs-architect

本文:http://jiagoushi.pro/node/1461

讨论:请加入知识星球【超级工程师】或者小号【it_training】或者QQ群【11107767】

Tags
 
Article
知识星球
 
微信公众号
 
视频号