疯狂java


您现在的位置: 疯狂软件 >> 新闻资讯 >> 正文

开发者和工程师的区别?


 

   

  在行业中,“软件开发者”和“软件工程师”这两个术语可以随意互换使用。

  如果招聘信息中写的是招聘开发者角色,你去了以后,其实也可以面试工程师角色。

  那么最终究竟哪个更重要?

  职称为什么很重要?

  对于初学者来说,两者的区别没那么大可能是一件好事,因为这样就可以使求职界限变得不是那么分明,也更容易找到工作——在写这篇文章的时候,澳大利亚有超过1200位“软件开发者”以及1500位“软件工程师”。

  如果你已经身处该行业之中,试图往上攀升,或者希望能够找到另外一份职位,不想再从事编码的工作,那么评估接下来哪些步骤可行也是很重要的。

  毫无疑问,Reddit上的这篇帖子会引发很多争议,有人认为没有区别,甚至付诸实际行动,将自己的职位名称给改了,该用户说道:“我的招聘合同上写着我的职位是‘软件开发者’,但有一天,我把网站上自己的职位改为了‘工程师’。这事好像发生在2年前,直到现在压根就没有人注意到这点。”

  最重要的是,这种情况还将会只需很长一段时间。随着软件的进步,技术和工程角色的数量将只会增长。就业部预测,到2019年信息和通信技术(ICT)行业将会新增14,600个新角色,所以我们认为是时候寻求这两者之间的差异了。

  雇主怎么说

  我们决定和两位领导交谈,正面讨论这个话题,并试图从讨论中得到一点见解。我们联系了Tribal Melbourne的技术主管Aaron Sempf以及Big Red集团首席技术官Brett Raven。

  Aaron Sempf

  Aaron是一名很有素养的工程师,具有结构化系统和软件的开发背景。最近一直在建立自己的团队,他在寻找新员工时,研究了其他公司发布招聘信息时给出的招聘角色。在与其他公司的行业招聘人员和同行交谈时,他发现自己对开发者和工程师角色之间缺乏了解。

  Brett于2017年初加入RedBalloon,帮助推动产品的重新构建,并推进技术路线图。从那以后,他跳槽到了Big Red集团,为Redii和其他集团公司提供技术指导。

  Brett在大学的专业是计算机科学(他自己也不是“工程师”),但在Lux集团和RedBalloon等公司领导过强大的工程团队。

  开发者或工程师

  “开发者和工程师这两个角色之间有一个本质区别。”

  Aaron:大多数时候我觉得“职称无所谓”,但开发者 和 工程师这两个角色之间还是存在着根本区别。

  工程师

  在开发生命周期中,可以根据角色和执行任务的不同可以很轻松地将两者区别开来。

  但是由于通信环境正在不断发展创新,也逐渐以用户为中心,而且所有的JS框架、标记预处理器、语言和应用程序框架都使得浏览器和移动设备可实现的范围变得越来越大,因此要想真的区分工程师和开发者之间的区别,还是有点困难的。

  传统意义上的工程师或工程技术人员,都是一个可以凭借其基础教育和培训能力,能够运用科学方法来分析和解决工程问题的人。

  简而言之就是说工程师可以通过工程原理的教育,然后具有了一定的根本基础,然后通过应用工程概念来创造解决方案。

  开发者

  而开发者不像工程师那样经过科学方法和工程原则基本原理的培训,开发者更倾向于在工作者阅读书籍或者博客,或专注于开发生命周期的特定方面的课程,使自己变得更有思想。

  尽管到目前为止,我只是说明了工程师和开发者之间存在着教育、应用方法和模式的差异,实际上在团队中他们的角色也是不同的。

  在填补工程师角色或开发者角色时,我在招聘时判断的特性可能完全不同,然而我给予这两者的任务或测试是相同的,但以不同的方式进行评估。

  通过解决不同的技术知识问题是获得关于专业水平和领域的基本指标的简单方法,但这是技术分配和模糊问题,真正将工程师与开发人员区分开来。

  我最喜欢一道简单的数学测试,这个测试经常让人变得混乱,6÷2(1 + 2)=? …每个人必须提供一个答案,并解释他们是如何得到这个答案的。

  这个测试可以反映每个人的教育基础。我得到的最常见的两个答案是1和9,候选人需要解释出如何得到这个答案,这样才更具有说服力。但是真正能区分出谁拥有数学或科学基础,谁不具有,通常是能给出第三种不常见的答案。

  “由于模棱两可,这个等式是无法解决的”。与提供这个答案的人进行讨论,结果表明,他们不是没办法解决这个问题,而是从更高的层面来理解方程式。

  在技术评估中,开发者可以将真正的创造力更多地体现出来,比如给定的输入和期望的输出测试,候选者必须编写逻辑来接受给定的输入并提供预期的输出。在这样的测试中,开发人员如何运用他们的逻辑就可以反映出他们的“代码人格”。

  没有所谓的正确或错误的答案,只要能达到期望的输出,解决方案就会归结到个人能力,即在给定的框架内将指令转换为解决方案的能力。

  在一天结束的时候,如果想证明我可以进行创新型思考,并为模块化问题开发逻辑解决方案,这非常适合于通信行业的Web开发,这种人可能更接近于开发者。

  另一方面,如果我想证明我可以运用科学和工程原理来创建一个更高层次的总体解决方案,而不是描述许多模块的工作原理,那么这种人可能更接近于工程师。

  作为工程师的开发者

  “我更喜欢使用’Junior’,’Mid’和’Senior’作为限定词的分类,将开发人员和工程师视为可互换的。”

  Brett Raven

  Brett:我也觉得“职称不重要”,现在科技领域中很多角色之间的界限都是很模糊的。至少在过去十年中,每个人都可以听到开发者,程序员(/分析师),工程师,编码员等等的术语。

  传统定义似乎随着最新的趋势而变得模糊和淡化。在过去的五年或更长的时间里,编写代码或为学习代码而支付的人数已经爆炸性地增长。

  不同类型的类别

  我可以看出,“开发人员”和“工程师”之间唯一真正的区别就是在任务,目标或业务问题上横向思考的广度。在我的职业生涯中,我更愿意使用“Junior”,“Mid”和“Senior”作为限定词的分类,将开发者和工程师视为可互换的。

  我的意思是,我希望高级开发人员能够全面地有所表现和思考。他们应该运用一切本质上的科学或工程方法,并且每分钟考虑一下工作的架构和附带效应。我期望初级开发人员执行给予他们的任务和实现,关注他们需要知道什么,而不是知道所有事情。我期望中级开发人员开始考虑代码的影响,而且仍然执行分配给自己的任务,并开始更深入地考虑体系结构和业务需求。对于我来说,这是一个专业发展的问题,它决定了手头任务的广度和细节(或相反的战略影响),而不是角色名称背后的细微意义。这是关于个人和他们的能力,而不是传统意义上的工作描述。

  两者的比较

  Aaron用术语总结他的理论,“开发者是负责实现的。开发者只需要把他们的才能集中在单一领域,一个特定的任务,或者一个特定的环境中,不需要关注“大局”。 而工程建筑师,需要关注“大局”。工程师可以担任开发者角色,但是工程师的核心重点在于架构,设计和规划。

  可以做一个简单的比喻;从事于机械工作并不代表你就是机械工程师,同理编写代码也不代表着你就是软件工程师。

  然而,Brett认为,“与记者和编辑比较,机械师和机械工程师的类比可能更适合软件开发。前者能够凭借多年的经验和扎实的业绩,学习他们在工作中的更广泛的技能。 机械师通常没有机会学习实际建造他们知道如何修理的机器所需的必要纪律(例如数学,物理学,材料等)。

  结束语

  说实话,这个总结太困难了。现在你应该很清楚如果不结合发布者的背景而想要单纯的区分哪种角色意味着什么是一个多么大的挑战了吧。

  所有答案都有一个共同之处,就是职称似乎并不重要。

  索尼互动娱乐公司的软件工程师Jason Roos可能总结出了最好的建议,他认为这取决于你自己所信仰的东西:

  “‘工程师’一词通常意味着某种设计过程是有条不紊的“建设者”,其中包括有意识地应用既定的模式和原则。

  当然,有些开发者是满足这个意义的。然而,实际上,正式的标题没有任何意义。软件工程不是一个被许可的行业,公司经常利用这个事实和标题的价值,把它作为一种附带的福利给他们的员工 - 不管个人的方法如何。

  话虽如此,我并没有把自己称为“软件工程师”,因为我的老板告诉我可以(即使那是我的头衔)。我这样做是因为我相信自己是一个人。我这样做是因为我尊重这个词的内涵,因为我每天都在努力达到这个意思。

  如果有人有同感,那么在我的书中,他也是一个软件工程师(不管他的名片上有什么)。”

  所以,如果认为你现在的职称是不正确的,其实对雇主来说,他们根本就不在乎。但是,如果这对你来说很重要,那就把你的情况跟老板说。

  如果你正在寻找新的角色,请确保你很清楚你想要涉及的那个行业,然后很简单,只需要向招聘你的人问一个问题,在这个角色里面你的核心工作是干什么的就可以了。

  如果一切都失败了,而你还执意如此,不要担心 - 有人说2060年软件工程师就会被淘汰了。