你是什么级别的程序员?

简介: 最近在和领导闲聊的时候,聊到了一些关于编程思想方面的东西,让我受益匪浅。尤其是有一个问题让我印象深刻。而且对于这个问题,在过往的面试中也被问了几次。我就把我以往自认为不错的回答重新说了一遍。谁知领导听完,竟然笑了起来,这着实让我有点摸不到头脑。

前言

  最近在和领导闲聊的时候,聊到了一些关于编程思想方面的东西,让我受益匪浅。尤其是有一个问题让我印象深刻。而且对于这个问题,在过往的面试中也被问了几次。我就把我以往自认为不错的回答重新说了一遍。谁知领导听完,竟然笑了起来,这着实让我有点摸不到头脑。

你是什么级别的程序员?

  对于这个问题,相信各位在以往的面试中,应该有被问过的吧。很明显这个是一个开放式的问题,没有标准的答案。我是这样回答的:

  我觉得我是一个中级程序员。为什么这样说呢?其实我对于初级的定义是能干活。对于安排的任务能顺利完成,并解决出现的一些bug。但是对于技术呢?可能停留在使用层面,没有做到知其然而知其所以然。

  目前的我,完成日常的工作已经不是问题。对于某些技术也有一些深入的了解,能设计一些架构,所以我觉得我是一个中级程序员。那作为高级程序员来讲,需要对技术有更加深层次的一个理解,同时还需要有一个强大的架构设计能力,来应对不同场景的业务的一个考验。

领导

  听了你说的这些啊,很明显你的划分是侧重于技术方面。按照你说的,就好像会CRUD并且会使用一些工具,比如说Redis,RabbitMq就是初级程序员。然后又学习了其他的组件,并了解了一些原理,就变成了中级的程序员了。学的东西多了,就变成高级程序员了。

  按你说的这样,那我把要学的,都列举下来。一个一个学完,就成了高级程序员。要是这样的话,那高级程序员应该有很多。 很明显在我们这行,高级的程序员还是少数。你认为的高级程序员,在我这里可能只是个合格的程序员 。并不是能说是一个高级程序员。

领导:SpringBoot是一个优秀的框架是吧?

:这个是的,巴拉巴拉说了一堆的优点。

领导:那开发SpringBoot框架的程序员,应该是个高级程序员吧?

:是的。

领导:那么,他为什么是个高级程序员呢?

:呃呃呃呃呃!

领导

  一个合格的软件,并不是一蹴而就的。就以我们做的东西来说,是我们这个团队用一行一行的代码建造起来的。当我分配工作的时候,会将任务根据复杂的进行排序,然后在根据你们的能力来进行分配。比如说,把一些简单的工作,交给实习生去做。然后把复杂一点的,交给经验丰富的去做。当人员发生变动的是时候,其他人也能快速接手。

领导:那么问题来了,如何能让其他人快速接手呢?

:这个。。。。。

领导:很简单,要是所有人写的代码都一样,看别人的代码就像看自己的代码。这不就解决问题了吗?

:是的。

领导:那么问题又来了,如何让所有人写的代码都一样呢?

:我们可以用alibaba开发的idea的插件扫描代码,制定相应的代码规范,并进行实施。

领导:我们制定的规范,你遵守了多少呢?

:遵守了一部分,有一部分没有遵守。

领导:你看这不就破坏了嘛,让代码风格不一致了?

:额,这个确实是。

领导:alibaba的插件也好,公司的开发规范也罢,只能进行少量的约束,没办法实现强约束,你可以选择遵守,也可以选择不遵守。而且问起来,为啥不遵守。你们能说出一大堆的理由,比如说,项目赶,时间短。

:哈哈哈。

领导:那么有没有什么办法来实现强约束呢?

:这个。。。应该有吧。

领导:是什么呢?

:呃呃呃!这个不知道,尴尬一笑。

领导:这个东西就是框架。

框架(framework)是一个框子——指其约束性,也是一个架子——指其支撑性。是一个基本概念上的结构,用于去解决或者处理复杂的问题。

领导:为什么这样说呢?就以你写代码来讲,应该不会出现忘记写;这个吧。

:这个肯定不可能,IDEA会提醒,并且编译都过不了。

领导:这就对了,不按照规则写,直接给你报错。如果我们把定制的各种开发规范封装成一个框架,让你们去使用,形成强约束。这样你们写出来的代码是不是就一样的了。这也就是我们封装框架的原因。想要啥,都能加上去。毕竟开源的框架,面向的是绝大数人,不能面面俱到。

:哦原来如此,学到了学到了。

:那你是如何划分程序员的等级呢?

领导:初级的程序员能根据自己掌握的技能完成相应的工作,然而中级程序员呢除了能完成工作,还能让别人快速的接手自己工作。高级程序员就是把初级变成中级。

总结

  初级的程序员能根据自己掌握的技能完成相应的工作。中级程序员除了能完成工作以外,还能让别人快速的接手自己工作。这也就意味着,写出的代码可读性要好,要保证代码可读性,就需要付出各种的努力。比如说,命名合理,进行相应的抽象,模块划分等等。高级程序员就是把初级变成中级。

  说起来很简单, 但是实现起来却很困难,封装框架只是其中的一种方法。你要问我还有啥方法,我也不知道,因为我不是一个高级程序员。按照我目前的认知,要想成为一个高级程序员,不仅要从技术的方向去考虑问题,还要更多的从的角度考虑问题。

结尾

  很感谢你能看到最后,那么问题来了你是一个什么级别的程序员呢?

  如果觉得对你有帮助,可以多多评论,多多点赞哦,也可以到我的主页看看,说不定有你喜欢的文章,也可以随手点个关注哦,谢谢。

  我是不一样的科技宅,每天进步一点点,体验不一样的生活。我们下期见!

相关文章
|
5月前
|
Java
Java垃圾回收器:版本差异、使用技巧与最佳实践
Java垃圾回收器:版本差异、使用技巧与最佳实践
138 1
|
4月前
|
存储 Java
浅析JAVA日志中的性能实践与原理解释问题之测试日志内容大小对系统性能的影响问题如何解决
浅析JAVA日志中的性能实践与原理解释问题之测试日志内容大小对系统性能的影响问题如何解决
110 0
|
4月前
|
运维 中间件 数据库
浅析JAVA日志中的性能实践与原理解释问题之元信息打印会导致性能急剧下降问题如何解决
浅析JAVA日志中的性能实践与原理解释问题之元信息打印会导致性能急剧下降问题如何解决
|
4月前
|
缓存 Java
浅析JAVA日志中的性能实践与原理解释问题之AsyncAppender的配置方式的问题是如何解决的
浅析JAVA日志中的性能实践与原理解释问题之AsyncAppender的配置方式的问题是如何解决的
|
4月前
|
存储
日志存储问题之日志在日常开发中可能被滥用如何解决
日志存储问题之日志在日常开发中可能被滥用如何解决
|
C# 数据库
【C#编程最佳实践 二十】日志与日志级别
【C#编程最佳实践 二十】日志与日志级别
160 0
|
Java 程序员 调度
成为高级程序员不得不了解的并发
到目前为止,你学到的都是顺序编程,顺序编程的概念就是某一时刻只有一个任务在执行,顺序编程固然能够解决很多问题,但是对于某种任务,如果能够并发的执行程序中重要的部分就显得尤为重要,同时也可以极大提高程序运行效率,享受并发为你带来的便利。但是,熟练掌握并发编程理论和技术,对于只会CRUD的你来说是一种和你刚学面向对象一样的一种飞跃。
80 0
|
算法 程序员 开发者
程序员大部分时间不是写代码,而是。。。
程序员大部分时间不是写代码,而是。。。
162 0
程序员大部分时间不是写代码,而是。。。
|
缓存 负载均衡 测试技术
到底什么级别才算是高并发
到底什么级别才算是高并发
1116 0
|
网络协议 API uml
HttpClientFactory日志不好用,自己扩展一个?
.NetCore2.1新推出HttpClientFactory工厂类, 替代了早期的HttpClient,并新增了弹性Http调用机制 (集成Policy组件)。
HttpClientFactory日志不好用,自己扩展一个?