有一句话在开发人员圈子广为流传:“初级开发人员的标志就是需要在中级和高级开发人员的指导下完成工作。”所以,我们不要苛刻初级开发人员写的代码对错严谨,毕竟每个开发人员都有这样的一个过程。据译者观察,初级开发人员往往认为自己写的代码都是高质量的;而中级开发人员认识到了软件知识会影响代码质量;中高级开发人员则认识到硬件知识会影响到代码质量;高级开发人员反而认为自己写的部分代码质量不够高,需要恶补硬件知识和编译器等相关知识……至于骨灰级开发人员,可以写出高质量代码,并能够充分考虑各种情况。本文,后端开发者 Daan 讲述了初级、中级和高级开发人员之间的区别。

作为初级、中级或高级开发人员,并不仅仅跟多少年的编程经验相关。初级开发人员甚至可以比高级开发人员年龄要大。这一切都取决于技能。不过,这并不意味着高级开发人员必须是所有方面的专家,但可以肯定地说,高级开发人员要比初级、中级开发人员熟练得多。

既然高级开发人员与初级、中级开发人员的区别不仅在于编程技能,那么到底有什么区别呢?

知识

很显然,高级开发人员比初级、中级开发人员掌握更多的知识。了解设计模式、架构、自动化测试、性能、安全性等,这是初级开发人员缩小与中级、高级开发人员之间的知识差距的好方法。

了解软件开发中的事情应该如何进行是很重要的。但是,仅仅知道这些知识并不能让你成为高级开发人员。知识并不是开发人员之间最大的区别,它只是其中的一个因素。

编程

不管大多数人是怎么想的,编程并不是与计算机进行通信。编程是关于与人类交流指导的计算机。最终,代码被编译并转为一连串的 0 和 1。

代码必须对将来使用它的其他开发人员有意义。一个以前从未见过代码的新团队应该能够阅读代码并开始研究新功能或进行 bug 修复。这就是初级和高级开发人员之间的巨大差异所在。

在这一比较中,我将把中级开发人员排除在外,因为,在编程技能方面,中级开发人员处于一个灰色地带。显然,中级开发人员介于初级和高级开发人员之间,他们可能更倾向于高级开发人员。这主要与经验有关,因为中级开发人员可能至少经历过一次整个开发周期。他们犯过许多最简单的错误,并从中汲取了教训。

如何识别初级开发人员?

初级开发人员缺乏经验。有些人刚刚毕业,正在开始他们的第一份全职工作。初级开发人员的心态通常是能够让代码工作就万事大吉了。工作软件和良好的软件对他们来说,没什么不同。

编写简单的代码其实是一件很困难的事情,这恰恰就是初级开发人员不擅长的事情。初级开发人员倾向编写花哨的代码。你可以通过古怪的代码、过于复杂的抽象来识别出初级开发人员。这就是初级开发人员炫耀的方式,好让其他开发人员知道他们编写的代码有多牛逼。其实,他们这一做法是错误的。

初级开发人员只专注于代码的计算机方面,而忽视了人性方面。

那么,高级开发人员呢?

当你查看高级开发人员编写的代码时,你心里可能会嘀咕:就这些吗?代码的其余部分在哪里呢?高级开发人员编写的代码,看上去简洁、直接了当,甚至还可能让人觉得很愚蠢。而这正是开发人员在编程时可以拥有的最大品质之一。高级开发人员遵循的是 KISS 原则:保持简洁,愚蠢。

译注:KISS 是英文 “Keep it Simple and Stupid” 的首字母缩写,意思是 “保持简单和愚蠢”,其中 “愚蠢” 不是 “傻”,它还有 “迟钝”、“不敏感”、“乏味”、“无价值” 等综合含义。另一种对 KISS 的解释是:“Keep It Simple,Stupid” 由于中间加了逗号,意思就变成了 “保持简单,傻瓜”,是一种祈使语态,带有调侃的色彩。

好的目标不是越复杂越好,反而是越简洁越好。这就是 KISS 原则。符合 KISS 原则的目标都是关键的,而非包罗万象;目标必须确定优先顺序,而关键的目标则是资源和努力的重心。总结开发人员在编程过程中的经验,大多数应用程序的设计应保持简洁和单纯,而不掺入非必要的复杂性,这样的应用运作成效会取得最优;因此简单性应该是软件开发中的关键目标,尽量避免不必要的复杂性。

高级开发人员以不同于初级开发人员的方式思考他们的代码。高级开发人员编写的代码会考虑到可维护性和可扩展性。这与初级开发人员的思维方式完全不同:高级开发人员考虑的是必须与代码打交道的人,而初级开发人员只是考虑如何让代码在计算机上工作。

不仅仅是编程技能的问题

除了编程技能外,还有一些其他因素可以告诉你谁是哪种类型的开发人员。

一般来说,初级开发人员执行最简单的任务或影响较小的任务。他们不参与任何架构设计。中级开发人员也不负责设计解决方案,他们只是执行任务。与初级开发人员的不同之处在于,只要分配给他们相对常规的任务,他们就会执行这些任务,而无需过多的监督。而高级开发人员则完全可以自己开发应用程序。

但这并不意味着高级开发人员在开发过程中没有任何问题。实际上,每个开发人员每天都会遇到很多问题,这点是不会改变的。对于高级开发人员来说,也是概莫能外。

区别在于高级开发人员知道如何提出正确的问题,以及如何处理这些问题。当涉及到相对常规的任务时,中级开发人员可以提出正确的问题,但在更复杂的任务上就力有未逮,需要高级开发人员的帮助了。

高级开发人员永远不会迷失方向,他们知道如何以正确的行动来跟进问题。但是,这并不意味着高级开发人员不能向其他开发人员寻求帮助。有时,最好的方法就是向其他在该领域有经验的开发人员寻求帮助。

中级开发人员也应该能够提出正确的问题,只要他没有被分配到需要深入知识层面的高度复杂的任务。

你不应该指望初级开发人员能够立即提出正确的问题。由于初级开发人员缺乏经验,他们需要更有经验的开发人员的指导。初级开发人员需要获得必要的资源,或向正确的方向大力推进。

晋升下一个层次

作为开发人员,我们都想提高自己,变得更好。但是,你可以采取哪些步骤来晋升到下一个层次呢?

从初级开发人员到中级开发人员

由于初级开发人员缺乏经验,因此至少要经历几次整个开发周期,这一点是很重要的。这样一来,你会掉进很多陷阱中,并学会如何在下一次避免它们。

说到编程,你应该学习如何编写简单的代码。想想下一个将要处理这段代码的人。你还应该学习如何调试,因为这将使你能够更好地理解这一过程中发生的事情。

此外,你应该熟悉最佳实践,并了解架构、性能、安全性等。缩小到达中级水平所需的知识差距。

从中级开发人员到高级开发人员

从中级开发人员到高级开发人员可能会相当困难。有些开发人员在整个职业生涯中,始终处于中级水平。

高级开发人员知道什么可以走捷径,什么永远不可以走捷径。这些都是从过去所犯的错误中汲取的教训。

如果你想要成为高级开发人员,就必须准备好接受没有人知道如何解决的任务。但你应该知道的不仅仅是如何完成工作。

作为高级开发人员,你的工作还包括帮助经验较少的开发人员。当他们不知道如何做某些事情时,你就是他们的后备力量。

高级开发人员掌握了他们的技术栈,这可能不会让你感到惊讶。记着,成为高级开发人员可不仅仅是编程技能,还要了解你所在公司中使用的所有工具和应用程序。

结论

初级、中级和高级开发人员之间的区别并不全在于有多少年的经验。当然,可以肯定地说,高级开发人员比初级、中级开发人员更熟练,但知识并不是最重要的因素。

与初级开发人员相比,高级开发人员编写的代码更简单,并且思维模式也不同。但这不仅仅是编程技能。知道要问什么问题,以及如何跟进这些问题是至关重要的。只有那些拥有丰富经验的高级开发人员,才知道在如何在任何情况下做到这一点。

作为一个初级开发人员,你应该专注于如何编写简单的代码,并经历多个开发周期。要从中级开发人员晋升到高级开发人员,你应该专注于学习,而不仅仅是解决常规任务。你应该愿意承担最艰巨的任务,成为技术栈的大师。高级开发人员的另一个职责是为经验不足的开发人员提供后援力量。

我将引用 Martin Fowler 的一句话作为结束语:“任何傻瓜都可以写出计算机能理解的代码,而优秀程序员可以写出人能读懂的代码。”(Any fool can write code that a computer can understand. Good programmers write code that humans can understand.

作者介绍:

Daan,荷兰的后端开发者,密码学爱好者。

原文链接:

The Differences Between a Junior, Mid-Level, and Senior Developer

开发人员:月薪过万与年薪百万之间的差距相关推荐

  1. 开发的月薪3万以上很难么?

    java开发,月薪3万,实现也不算是太难,需要花一些时间掌握一些技术,了解其原理,高薪就是顺其自然的事情了. 学java技术,最好能按照系列一个个学,能有一套非常好的学习资料,反复看,最终效果都是非常 ...

  2. 月薪2千到年薪百万,厂妹到高盛程序员,她书写了一个女孩的史诗

    她的人生是一场真实的打怪进阶,让人在佩服之余忍不住检讨自己. --遇言姐 不久前,孙玲在公众号上更新了自己的状态-- 她在去年8月底被高盛录用,已经移居盐湖城开始新工作. 遇言姐一直都在关注孙玲这个妹 ...

  3. 同是软件测试,你年薪百万,我年薪10万,真的差距这么大吗?

    软件测试可以拿到年薪50万? 开什么玩笑? 我才月薪15K. 小伙伴看到标题是不是一开始的反应是这样的?是的话举一个小爪爪吧! 那软件测试到底能不能拿到年薪50万呢? 没有吃过猪肉还没见过猪跑吗,你自 ...

  4. 加班累到住院,到30岁年薪百万:你所谓的拼命,绝不是职场捷径

    你试过加班累到什么程度? 前段时间,网上有一张图刷了屏,有人把北上广深几栋写字楼灯火通明的实况po出来,附上时间:凌晨零点38分. 很扎心,朋友晨晨在互联网公司上班,天天就过着13h+工作时长的生活, ...

  5. 月薪过万算中产吗?别听专家忽悠,算清这8本账:你这是骂我

    有个热议:我年薪11万,可以算中产了吗?有砖家说,年薪11万,在大城市也算中产了.别听砖家的"大忽悠".中产标准,应该是以"个人追求"为标准,因人而异.年薪11 ...

  6. 初级开发人员的缺点_在您作为初级开发人员的第一年获得此建议

    初级开发人员的缺点 Are you a junior developer embarking on your software development career? 您是从事软件开发事业的初级开发人 ...

  7. Android开发人员的10大抱怨

    2019独角兽企业重金招聘Python工程师标准>>> Android受到追捧,但也有人抱怨,正所谓"萝卜白菜,各有所爱",本文就Android开发人员常挂在嘴边 ...

  8. 开发人员必备的13项技能

    原文地址:13 Technical Skills You Should Have As A Developer 如果你是计算机科学专业的学生或正在修读软件工程师或软件开发人员的课程,那么你需要掌握一些 ...

  9. python简历怎么写开发_了解如何为Python开发人员制作简历

    成为一种经过认证的专业Python编程语言在过去的二十年里取得了很大的进步.随着它在数据科学.人工智能和机器学习领域的巨大贡献,它已经成为21世纪最流行的语言之一.不断增长的创新和技术进步为任何pyt ...

最新文章

  1. 在CentOS 6.9 x86_64的OpenResty 1.13.6.1上使用基于Redis实现动态路由示例
  2. [置顶] 决策树绘图(二)
  3. 惠普8440p拆机加内存图解_惠普电脑开不了机怎么办
  4. fileviewfinder.php,Laravel在FileViewFinder.php中查找视图的错误处理程序
  5. jQuery函数attr()和prop()的区别
  6. CF914G Sum the Fibonacci(FWT模板+子集卷积)
  7. 小米四曲面瀑布屏概念手机亮相:按键、开孔、边框全部消失
  8. 第45届ICPC 昆明站 临时模板补充
  9. android 各类开源项目整理 包括 个性化控件 工具库 完整优秀项目
  10. java class文件比较_Beyound Compare中比较java字节码class文件
  11. 悉尼大学计算机硕士健康科技,悉尼大学健康科学学院
  12. 视频去水印 java_用java给视频水印LOGO
  13. 2020年10月计算机语言排名,最新!2020年10月编程语言排行榜出炉
  14. 博客整理——软件工程实践总结
  15. 【蓝桥杯单片机的备赛旅行日记系列】之国赛决赛第五届多功能事件记录器
  16. Unity shader 护盾shield的简单实现
  17. 安创安全OA——小程序
  18. Qt学习笔记(二)【软件样式及界面外观设置】
  19. 计算机视觉课程设计:基于SSD、Dlib多进程目标检测的对比研究
  20. IDEA中连接MySQL时报错:Server returns invalid timezone

热门文章

  1. 【音乐】想不起来歌名的瞎唱
  2. 第七章|7.3并发编程|协程
  3. Alpha 答辩总结
  4. 《JavaScript高级程序设计》阅读笔记(一):ECMAScript基础
  5. 学习 Linux/C/C++ 必备资料
  6. c++ doxygen 注释规范_利用Doxygen给C程序生成注释文档
  7. timeSetEvent、回调函数、CCriticalSection
  8. OCR系列——文本检测任务
  9. Oracle常见用法总结
  10. python 制作抽奖箱_用Excel函数制作抽奖箱