作者:skura,来源:雷锋网(leiphone-sz)

作为程序员,你身边的同事有工作 6 年的中级程序员,也有工作 3 年的高级程序员。你可能会很疑惑,初级、中级和高级开发人员之间的差异究竟在哪里?

你是初级、中级或高级开发人员,不仅仅取决于你的编程经验有多少年。初级开发人员甚至可以比高级开发人员年纪更大。归根结底都是由技术决定的。这并不意味着高级开发人员必须是全栈的专家,但可以肯定地说,高级开发人员远比初级和中级开发人员熟练。

但是,高级开发人员与中级和初级开发人员的区别不仅仅在于编码技能。那么他们到底有什么区别呢?

知识

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

了解软件开发中应该如何做是很重要的。但是仅仅知道这些东西并不能使你成为一名高级开发人员。知识储备并不是开发者之间最大的区别,它只是其中一个因素。

编码

不管大多数人是怎么看待编码的,但它并不只是与计算机的通信。编码是与人通信和指导计算机工作。最终,代码被编译成 0 和 1。

代码必须对将来使用它的其他开发人员来说容易理解。一个以前从未见过这些代码的新团队应该能够运行代码并处理新特性或进行错误修复。这就是初级开发人员和高级开发人员之间最大的区别所在。

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

如何辨别初级开发人员?

初级开发人员缺乏经验。有些人刚刚毕业,开始了他们的第一份全职工作。初级开发人员的心态通常是让代码工作就好。可以正常工作的软件和优秀的软件在他们看来是相同的。

编写简洁的代码是困难的,这是初级开发人员做不到的。初级开发人员通常会编写花哨的代码。你可以通过一行古怪的代码和过于复杂的抽象来识别初级开发人员。初级开发人员往往会用这种方式炫耀自己的技术,试图让其他开发人员知道他们编码有多好,这是错误的。

那么高级开发人员呢?

当查看高级开发人员的代码时,你可能会想:这就是全部吗?剩下的代码呢?高级开发人员编写简洁、简单甚至是愚蠢的代码。这是开发人员在编程方面所能具备的最重要的品质之一。高级开发人员遵循 KISS 原则:保持简单,愚蠢(Keep it simple, stupid)。

高级开发人员和初级开发人员思考代码的方式是不同的。高级开发人员编写代码的时候将考虑可维护性和可扩展性。这与初级开发人员的思维方式完全不同:高级开发人员考虑的是必须使用代码的人员,而初级开发人员只是考虑让代码在计算机上工作。

不仅仅是编码技能

除了编码技能,还有其他一些因素可以告诉你他们是什么类型的开发人员。

一般来说,初级开发人员执行最简单的任务或影响较小的任务,他们不做任何架构设计。中级开发人员也没有设计解决方案,他们只是执行任务,与初级开发人员的不同之处在于,只要他们被分配到相对常规的任务,他们就可以在较少的监督下完成这些任务。高级开发人员可以完全自行开发应用程序。

这并不意味着高级开发人员一路上没有任何问题。每个开发人员每天都有很多问题,这点不会改变,对于高级开发人员来说也是如此。

其中的区别在于,高级开发人员知道如何提出正确的问题以及如何处理这些问题。中级开发人员可以在相对常规的任务中提出正确的问题,但在更复杂的任务中需要帮助。

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

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

你不应该期望初级开发人员可以直接提出正确的问题。由于初级开发人员缺乏经验,他们需要经验更丰富的开发人员的指导。初级开发人员需要获得必要的资源或被大力推向正确的方向。

进入下一个层次

我们都想提高自己,成为一个更好的开发人员。但是你该如何行动来达到下一个层次呢?

初级到中级

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

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

此外,您应该熟悉实践知识,了解体系架构、性能、安全性等,缩小达到中级所需的知识差距。

中级到高级

从中级到高级可能相当困难。一些开发人员将在整个职业生涯中都停留在中级水平。

高级开发人员知道哪些可以做哪些不应该做,这些都是过去犯过错误积累的教训。

如果你想进阶到高级,你必须准备好承担那些没有人知道如何解决的任务。你知道的应该比如何完成工作多得多。

作为高级开发人员,你工作的一部分是帮助经验不足的开发人员。当其他开发人员不知道如何做某些事情时,你是他们的后备力量。

高级开发人员有他们自己的技术栈,而不仅仅是编码技巧。你需要了解在所在公司中使用的所有工具和应用程序。

结论

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

与初级开发人员相比,高级开发人员编写的代码更简洁,并且具有不同的思维方式。但区别不仅仅是编码技巧,知道要问什么问题以及如何跟进这些问题是至关重要的。只有拥有丰富经验的高级开发人员才知道如何进行开发,不管是在什么情况下。

作为初级开发人员如果想要成长,你应该专注于编写简单的代码并经历多个完整的开发周期。要从中级开发人员进阶到高级开发人员,你应该专注于学习,而不仅仅是完成固定的日常任务。你应该主动承担最艰巨的任务,成为技术小组的主管。高级开发人员的另一个职责是为经验不足的开发人员提供帮助。

最后,用 Martin Fowler 的一句话作为结尾:「任何傻瓜都能写计算机能理解的代码,优秀的程序员编写人类能够理解的代码。」(Any fool can write code that a computer can understand. Good programmers write code that humans can understand)

正文结束

推荐阅读 ↓↓↓

1.不认命,从10年流水线工人,到谷歌上班的程序媛,一位湖南妹子的励志故事

2.如何才能成为优秀的架构师?

3.从零开始搭建创业公司后台技术栈

4.人才迁徙潮,2019年互联网各梯队排名重组,最适合程序员去的互联网公司有哪些?

5.37岁程序员被裁,120天没找到工作,无奈去小公司,结果懵了...

6.后端开发都应该掌握的Redis基础

7.日均5亿查询量的京东订单中心,为什么舍MySQL用ElasticSearch?

8.15张图看懂瞎忙和高效的区别!

一个人学习、工作很迷茫?

点击「阅读原文」加入我们的小圈子!

工作 3 年就是高级,这就是差距啊相关推荐

  1. 读研三年与工作三年的人有哪些差距?

    ‍ 大家好,我是张巧龙,在知乎上看到一个关于这样的问题: 本人大一学生,对于考研和工作不太了解,我如果考研,目的就是为了找一份满意工作,请问本专业考研深造三年下来所学的技能与在某公司培训工作三年下来有 ...

  2. 人均8万啊,腾讯豪掷21亿股票奖励员工,爱奇艺却大规模裁员,这就是差距吗?

    腾讯又给员工发钱了! 12月1日深夜,腾讯控股发布重磅公告称,公司董事会已决议向不少于25700位奖励人士授予合共4410829股奖励股份. 腾讯奖励股票,爱奇艺却在裁员 据了解,奖励人士将包括雇员. ...

  3. 年龄计算、工作表合并、高级筛选(三)

    1.计算年龄: 根据某列的出生日期计算对应的年龄: =datedif(x,today(),"y")   %x为出生日期:today为今天日期:"y"为年:也可以 ...

  4. 你以为熬个3年工作经验就是Java高级开发了?

    到了年底了,很多公司又开始新一轮的招人了,很多人也在为年后的跳槽做准备. 如果把各大互联网公司的招聘信息拉出来看的话,基本都要求3年以上工作经验,Title也基本都是Java高级开发. 所以很多人就会 ...

  5. 申请副高职业学校计算机教师工作总结,申报中学高级教师职称个人工作总结

    申报中学高级教师职称个人工作总结 时光在流逝,从不停歇,一段时间的工作已经结束了,回顾过去这段时间的工作,收获颇丰,是时候在工作总结中好好总结过去的成绩了.想必许多人都在为如何写好工作总结而烦恼吧,以 ...

  6. figma下载_切换到Figma并在其中工作不必是火箭科学,这就是为什么

    figma下载 We have seen Elon Musk and SpaceX making Rocket Science look like a child's play. In the sam ...

  7. 程序员月入2万与5千,这就是差距!

    今天,有一个真金白银的机会摆在你面前! 你是哪种程序员? 第一种程序员: 上班8小时,收益一次.投入大量精力和时间,只有固定工资可拿. 第二种程序员: 通过方法赚钱,例如投资.理财,风险很高,对智商和 ...

  8. 揭秘神仙高校的课堂!网友跪了:这就是差距啊!

    全世界只有3.14 % 的人关注了 爆炸吧知识 疫情之下,家家闭门谢客,宅着就是做贡献了. 原本一晃而过的7天假期变得"漫长",延迟复工.居家办公:学生党们把寒假过成了暑假. 随着 ...

  9. 刺激战场大神玩绝地求生端游为何秒变菜鸟?网友:这就是差距

    刺激战场作为还原度最高的一款吃鸡手游,玩家非常多,菜鸟玩家和大神玩家也不少.但是很多刺激战场战神级别大神玩家再去玩绝地求生端游为何也会菜到不行?为什么手游比较简单端游比较难呢?今天就给大家分析一下刺激 ...

  10. 实测CC2530 OSAL睡眠唤醒时间、电流、功耗

    使用CC2530间隔10秒钟发送一包数据,所需时间.电流实测如下: 电池电压:2.97V,采样电阻11欧姆. 波形下文图: 参数如下: 1. 完成一次完整的数据交互时间为:30ms 2. 唤醒后系统正 ...

最新文章

  1. TDD与FDD技术对比
  2. 型数据保留几位小数_Python数据分析—数据框的简单操作
  3. OJDBC版本区别 [ojdbc14.jar,ojdbc5.jar和ojdbc6.jar的区别]
  4. Spring任务调度之Spring-Task
  5. nginx学习之location块
  6. jqgrid ajax reload,jqgrid“reloadGrid”动作后将数据重新加载到文本框
  7. spring mvc学习(10):eclipse的环境前maven配置
  8. [软件工程-设计模式] GRASP软件设计的模式和原则
  9. 保障金融无线网络安全从“头”开始
  10. Eclipse开发环境下,部署和配置svn的整个过程
  11. 栈的输出_TAOCP|基本算法|栈、队列与双端队列
  12. Windows使用阿里云RAM访问控制API实现自建DDNS动态域名解析
  13. python学习之函数(一)
  14. 这几个消除笔软件,值得你们收藏
  15. Android UI系列 - 布局 - 属性详解
  16. 大学生计算机安全知识竞赛题库,大学生安全知识竞赛考试题库.pdf
  17. 【P3】 对称三相负载上的相电压、相电流与线电压、线电流的关系
  18. 语音合成论文优选:Unified Mandarin TTS Front-end Based on Distilled BERT Model
  19. linux安装winehq
  20. (转)学习嵌入式必备书籍

热门文章

  1. octave c++函数中调用fortran77子程序
  2. ol2 和 bootstrap样式冲突的问题
  3. js高级编号笔记[新]-事件
  4. 如何准备面试中算法问题
  5. Ps 初学者教程,如何使用图层蒙版合成图像?
  6. 在苹果Mac中使用 CleanMyMac X 清理垃圾时频繁要求输入密码如何解决?
  7. iPad 读不到 USB,在 Mac 上如何进行 USB 格式化?
  8. 效率工具Focus for Mac,阻止应用弹窗,集中注意力
  9. 如何保护Mac的数据安全?
  10. 一些没啥意思的出题想法记录