技术更迭速度之快的 IT 圈中,有的人从业数年之久依旧是一名初级开发者,有的人仅用了一两年的时间就已升级成高级开发者或架构师,而这其中,究竟是哪一环节产生了差异,而想要升级为高级开发者又需要具备哪些基本技能?

作者 | Daan

译者 | 弯月,责编 | 屠敏

出品 | CSDN(ID:CSDNnews)

以下为译文:

初级、中级或高级开发人员之间的区别不仅仅在于编程经验的多少。有些初级开发人员的年龄甚至可能超过了高级开发人员。说到底这一切都取决于技术力。虽然这并不意味着高级开发人员必然是面面俱到的专家,但我可以肯定地说,高级开发人员的技术熟练度高于初级和中级开发人员。

如果高级开发人员与初中级开发人员之间的区别不仅仅是编程技能,那么究竟还有什么?

知识储备

显然,高级开发人员的知识储备远远超过了初中级开发人员。初中级开发人员可以通过了解设计模式、架构、自动化测试、性能、安全性等知识,来缩小与高级开发人员之间的差距。

掌握软件开发中应当完成的工作内容和方式非常重要。但仅凭掌握这些知识还不足以成为高级开发人员。知识积累不是开发人员之间最大的区别,只是其中一个因素。

编程技术

不管大多数人怎样认为,但编程实际上并不是与计算机进行交流。编程的本质是与人交流,并给计算机下达指示。最终,代码会通过编译转换为0和1。

我们编写的代码必须能够方便后来开发人员的理解。即便是一个从未见过这些代码的新团队也应该能够打开代码,然后立即开始编写新功能或修复bug。在这方面,初级和高级开发人员之间存在巨大差异。

在这个比较中,让我们先把中级开发人员置之度外,因为在编程技术的话题中,中级开发人员是一个灰色地带。很显然,中级开发人员介于初级与高级开发人员之间,可能更加倾向于高级开发。这主要与经验有关,中级开发人员参与过整个开发周期——至少一次。他们犯了很多简单的错误,并从中吸取了教训。

如何鉴别初级开发人员?

初级开发人员缺乏经验。有些刚毕业,刚找到第一份全职工作。初级开发人员的心态通常是让代码正常运行。他们认为正常工作的软件就是优秀的软件。

编写简单易懂的代码很难,这也是初级开发人员无暇顾及的方面。初级开发人员倾向于编写酷炫的代码。如果你看到某些古怪的代码或过于复杂的抽象,那么十之八九这位作者就是初级开发人员。初级开发人员希望通过这种方式炫耀自己,让其他开发人员知道他们写的代码多么好。然而,他们大错特错了。

初级开发人员过于关注代码面向计算机的一面,却牺牲了人性化的一面。

高级开发人员怎么样呢?

在翻看高级开发人员写的代码时,你可能会想:就这么多?其余的代码呢?高级开发人员编写的代码看上去简单、直接、甚至还有点愚蠢。然而,这正是开发人员在编程中应当具备的最优秀的品质之一。高级开发人员都会遵循KISS原则:保持简单和愚蠢(Keep It Simple, Stupid),换句话来说,简单就是美。

高级开发人员思考代码的方式与初级开发人员不同。高级开发人员在编写代码时会考虑到可维护性和可伸缩性。这是一种与初级开发人员完全不同的心态:高级开发人员会考虑到使用代码的人,而初级开发人员只考虑如何让代码运行。

不仅仅是编程技术

除了编程技术之外,你还可以通过其他因素判断某位开发人员属于哪种类型。

一般而言,初级开发人员所承担的都是最简单或影响较小的任务。他们不会承担任何架构设计的工作。中级开发人员也不会参与设计解决方案,他们只是负责执行任务。他们与初级开发人员的不同之处在于,他们可以在没有监督的情况下完成常规的任务。而高级开发人员则可以凭一己之力开发整个应用程序。

但这并不意味着高级开发人员在此过程中不会遇到任何问题。开发人员每天都会遇到很多问题,这是万古不变的真理,对高级开发人员来说也一样。

不同之处在于,高级开发人员知道如何正确地提出问题以及如何处理这些问题。中级开发人员在面对常见的任务时也能提出正确的问题,但遇到复杂的任务就需要一定的帮助。

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

只要没有分到需要深入知识的高难度任务,中级开发人员也能提出正确的问题。

你不能指望一位初级开发人员立即提出正确的问题。由于初级开发人员缺乏经验,他们需要有经验的开发人员指导。你需要为初级开发人员提供必要的资源或推动他们向正确的方向前进。

向下一级晋级 

作为开发人员,我们都希望提升自我,做越来越好的自己。那么,为了提升自己的水平,我们究竟该做些什么呢?

初级到中级

由于初级开发人员缺乏经验,所以经历几次完整的开发周期非常重要。你可以通过这种方式,遭遇大量开发中的陷阱,并学会如何在下次避免。

在写代码的时候,你应该学习如何编写简单易懂的代码。设身处地为下一个接手这段代码的人着想。你还应该学习调试的技术,因为这可以让你更好地了解代码运行过程中的实际情况。

此外,你还应该学习最佳实践,并了解架构、性能、安全性等等方面的知识,努力缩小自己与中级开发人员之间的差距。

中级到高级

从中级晋级到高级可能会非常困难。有些开发人员的整个职业生涯都处于中等水平。

高级开发人员知道哪些捷径可以走,而哪些捷径则不可以。这些都是从过往的错误中吸取的经验教训。

如果你想晋级高级开发人员,则必须准备好承担没人知道如何解决的任务。你的工作内容不应该仅限于完成任务。

作为高级开发人员,你应该帮助经验不足的开发人员。当他们不知所措时,你就是他们坚强的后盾。

高级开发人员不仅掌握了编程技术,还掌握了他们的技术栈,这也不足为奇。此外,高级开发人员还应当了解公司内使用的所有工具和应用程序。

总结

初级、中级和高级开发人员之间的差异并非全部来自多年的经验。当然,可以肯定地说,高级开发人员的技术熟练度高于初级和中级开发人员。但知识不是最重要的因素。

高级开发人员编写的代码简单易懂,而且他们与初级开发人员的思维方式不同。但这不仅仅是编程技术的问题,知道问哪些问题以及如何跟进这些问题都很至关重要。只有经验丰富的高级开发人员才掌握了这些技巧。

作为初级开发人员,你应该专注于编写简单易懂的代码,并争取多经历几个开发周期。如果你想从中级晋级到高级,则应该专注于学习,而不仅仅是完成日常任务。你必须承担最艰巨的任务,并努力成为技术栈的主人。而高级开发人员的另一个责任是成为所有缺乏经验的开发人员的坚强后盾。

最后以Martin Fowler的一句话结束本文:“任何一个傻瓜都能写出计算机可以理解的代码。惟有写出人类容易理解的代码,才是优秀的程序员。”

原文:https://medium.com/better-programming/the-differences-between-a-junior-mid-level-and-senior-developer-bb2cb2eb000d

本文为CSDN翻译,转载请注明来源出处。

【END】

Python:用一行代码减少一半内存占用!

https://edu.csdn.net/topic/python115?utm_source=csdn_bw

 热 文 推 荐 

鸿蒙霸榜 GitHub,从最初的 Plan B 到“取代 Android”?

☞CPU 是如何工作的?

☞滴滴缺席的这 11 个月,顺风车迷局如何破?

《乐队的夏天》很酷?程序员式的摇滚才燃爆了!

只需要支付0.5元就可以撤回交易?这下可坑苦DApp了……

从原理到代码,轻松深入逻辑回归模型!

@程序员,“10倍工程师”都在追这四大AI风向

常见的Hadoop十大应用误解

行!这下 CSDN 玩大了!粉丝:太良心

点击阅读原文,输入关键词,即可搜索您想要的 CSDN 文章。

你点的每个“在看”,我都认真当成了喜欢

程序员如何从初中级历练为高级开发者?相关推荐

  1. advanced installer更换程序id_好程序员web前端培训分享kbone高级-事件系统

    好程序员web前端培训分享kbone高级-事件系统:1.用法,对于多页面的应用,在 Web 端可以直接通过 a 标签或者 location 对象进行跳转,但是在小程序中则行不通:同时 Web 端的页面 ...

  2. 漂洋过海去学习,一文读懂程序员如何从初级升级到高级

    微信搜索[程序员小跃],和大家一起奔跑 Slogan:当你的才华还无法撑起你的野心时,那应该静下心来好好学习 还记得前几天跃哥的这篇推文吗?<知道吗,你和高级工程师差距巨大>这篇和大家简单 ...

  3. 高级程序员装逼指南,是高级哦!(转)

    高级程序员装逼指南,是高级哦! 下面这个才是高级版本 ;; 这是注释 ;; 0.9版本 ;; 2011年8月22日 ** 前言 ** 最近网上出了一个<程序员装逼指南>,觉得这个东西其实图 ...

  4. k8s之Pod详解(五)【Kubernetes(K8S) 入门进阶实战完整教程,黑马程序员K8S全套教程(基础+高级)】

    参考于Kubernetes(K8S) 入门进阶实战完整教程,黑马程序员K8S全套教程(基础+高级) Pod Pod的结构 每个Pod中都可以包含一个或者多个容器 这些容器可以分为两类: 用户自定义用的 ...

  5. 程序员经常去的 14 个顶级开发者社区(转)

    我们来看一下程序员经常去的 14 个顶级开发者社区,如果你还不知道它们,那么赶紧去看看,也许会有意想不到的收获. Stack Overflow 9 月份,Stack Overflow 也将迎来其 6 ...

  6. 程序员的职业选择:打工者、独立开发者、创业者

    当你励志成为一名程序员的时候,你是否有对自己的职业生涯进行规划,作为一名开发人员你的理想是什么,希望成为一名什么样的开发者,这些都是不可逃避的问题,本篇文章给大家简单介绍一下程序员的职业选择:打工者. ...

  7. 30K程序员的简述:如何成为高级开发人员

    这篇文章适用于所有在这个行业已经有了几年时间后想要在职业生涯中取得突破的开发人员,编程人员和程序员(或者你可能刚刚开始,但希望你能看到你的路径).本文适合那些有着简单愿望的人:你想成为一名高级开发人员 ...

  8. 高级程序员装逼指南,是高级哦!

    下面这个才是高级版本 ;; 这是注释 ;; 0.9版本 ;; 2011年8月22日 ** 前言 ** 最近网上出了一个<程序员装逼指南>,觉得这个东西其实图样图森破 然后在下跟微博上的一些 ...

  9. day30 | 黑马程序员Java全程笔记 | 第二阶段MySQL高级 JDBC

    01.反馈回顾 事务: ★ 概述: 逻辑上的一组操作,组成这组操作的各个单元要么同时成功,要么同时失败. 事务是一个最小的执行单元. mysql中的事务控制: 手动事务: 需要手动开启,提交,回滚开启 ...

最新文章

  1. CentOS学习笔记 - 9. docker maven编译基于gofabric8的java应用镜像
  2. linux root权限_深入了解 Linux 权限
  3. python编程超市购物系统_python实现简单购物车系统(练习)
  4. java设计模式之装饰模式_Java中的装饰器设计模式
  5. java编译找不到符号_关于久违的Javac,编译出现“找不到符号”
  6. Android远程调试的探索与实现
  7. 数据库基础知识——DQL语言(一)
  8. python 判断时间是否大于6点_python中判断时间间隔的问题
  9. ros之TF坐标转换
  10. css3美话网页元素
  11. 2016河南省第九届ACM程序设计竞赛[正式赛四]
  12. ubuntu下sopcast安装的一点笔记
  13. java版本PID放大/eTerm放大软件介绍
  14. 第二章 查询结果排序(SQL server经典实例)
  15. ios系统越狱才可以享受的100项操作
  16. linux屏幕怎么暗一点,Ubuntu 12.10 调节屏幕亮度经验分享
  17. mpegtsenc.c的源码
  18. 计算机网络 408大纲,408计算机考研大纲.pdf
  19. 【音视频】音视频自研对比
  20. [转载]Landsat(Path Row)与行政区划、经纬度对照-----转_庄启智_新浪博客

热门文章

  1. Microsoft Project学习系列(一)
  2. SQOOP抽取各类型数据库脚本示例
  3. masm汇编语言堆栈段定义了却提示无堆栈段
  4. cdc工具 postgresql_SQLServer CDC数据通过Kafka connect实时同步至分析型数据库 AnalyticDB For PostgreSQL及OSS-阿里云开发者社区...
  5. spring作用域单例和global_面试必备 | 69道Spring面试题
  6. 安装pangolin
  7. android listview标题置顶,Android仿QQ左滑删除置顶ListView操作
  8. [SQL实战]之获取所有员工当前的manager
  9. SQL实战之查找所有已经分配部门的员工的last_name和first_name
  10. 中国双槽超声波清洗机市场趋势报告、技术动态创新及市场预测