前言
最近在和领导闲聊的时候,聊到了一些关于编程思想方面的东西,让我受益匪浅。尤其是有一个问题让我印象深刻。而且对于这个问题,在过往的面试中也被问了几次。我就把我以往自认为不错的回答重新说了一遍。谁知领导听完,竟然笑了起来,这着实让我有点摸不到头脑。
你是什么级别的程序员?
对于这个问题,相信各位在以往的面试中,应该有被问过的吧。很明显这个是一个开放式的问题,没有标准的答案。我是这样回答的:
我觉得我是一个中级程序员。为什么这样说呢?其实我对于初级的定义是能干活。对于安排的任务能顺利完成,并解决出现的一些bug。但是对于技术呢?可能停留在使用层面,没有做到知其然而知其所以然。
目前的我,完成日常的工作已经不是问题。对于某些技术也有一些深入的了解,能设计一些架构,所以我觉得我是一个中级程序员。那作为高级程序员来讲,需要对技术有更加深层次的一个理解,同时还需要有一个强大的架构设计能力,来应对不同场景的业务的一个考验。
领导
听了你说的这些啊,很明显你的划分是侧重于技术方面。按照你说的,就好像会CRUD并且会使用一些工具,比如说Redis,RabbitMq就是初级程序员。然后又学习了其他的组件,并了解了一些原理,就变成了中级的程序员了。学的东西多了,就变成高级程序员了。
按你说的这样,那我把要学的,都列举下来。一个一个学完,就成了高级程序员。要是这样的话,那高级程序员应该有很多。 很明显在我们这行,高级的程序员还是少数。你认为的高级程序员,在我这里可能只是个合格的程序员 。并不是能说是一个高级程序员。
领导:SpringBoot是一个优秀的框架是吧?
我:这个是的,巴拉巴拉说了一堆的优点。
领导:那开发SpringBoot框架的程序员,应该是个高级程序员吧?
我:是的。
领导:那么,他为什么是个高级程序员呢?
我:呃呃呃呃呃!
领导:
一个合格的软件,并不是一蹴而就的。就以我们做的东西来说,是我们这个团队用一行一行的代码建造起来的。当我分配工作的时候,会将任务根据复杂的进行排序,然后在根据你们的能力来进行分配。比如说,把一些简单的工作,交给实习生去做。然后把复杂一点的,交给经验丰富的去做。当人员发生变动的是时候,其他人也能快速接手。
领导:那么问题来了,如何能让其他人快速接手呢?
我:这个。。。。。
领导:很简单,要是所有人写的代码都一样,看别人的代码就像看自己的代码。这不就解决问题了吗?
我:是的。
领导:那么问题又来了,如何让所有人写的代码都一样呢?
我:我们可以用alibaba开发的idea的插件扫描代码,制定相应的代码规范,并进行实施。
领导:我们制定的规范,你遵守了多少呢?
我:遵守了一部分,有一部分没有遵守。
领导:你看这不就破坏了嘛,让代码风格不一致了?
我:额,这个确实是。
领导:alibaba的插件也好,公司的开发规范也罢,只能进行少量的约束,没办法实现强约束,你可以选择遵守,也可以选择不遵守。而且问起来,为啥不遵守。你们能说出一大堆的理由,比如说,项目赶,时间短。
我:哈哈哈。
领导:那么有没有什么办法来实现强约束呢?
我:这个。。。应该有吧。
领导:是什么呢?
我:呃呃呃!这个不知道,尴尬一笑。
领导:这个东西就是框架。
框架(framework)是一个框子——指其约束性,也是一个架子——指其支撑性。是一个基本概念上的结构,用于去解决或者处理复杂的问题。
领导:为什么这样说呢?就以你写代码来讲,应该不会出现忘记写;
这个吧。
我:这个肯定不可能,IDEA会提醒,并且编译都过不了。
领导:这就对了,不按照规则写,直接给你报错。如果我们把定制的各种开发规范封装成一个框架,让你们去使用,形成强约束。这样你们写出来的代码是不是就一样的了。这也就是我们封装框架的原因。想要啥,都能加上去。毕竟开源的框架,面向的是绝大数人,不能面面俱到。
我:哦原来如此,学到了学到了。
我:那你是如何划分程序员的等级呢?
领导:初级的程序员能根据自己掌握的技能完成相应的工作,然而中级程序员呢除了能完成工作,还能让别人快速的接手自己工作。高级程序员就是把初级变成中级。
总结
初级的程序员能根据自己掌握的技能完成相应的工作。中级程序员除了能完成工作以外,还能让别人快速的接手自己工作。这也就意味着,写出的代码可读性要好,要保证代码可读性,就需要付出各种的努力。比如说,命名合理,进行相应的抽象,模块划分等等。高级程序员就是把初级变成中级。
说起来很简单, 但是实现起来却很困难,封装框架只是其中的一种方法。你要问我还有啥方法,我也不知道,因为我不是一个高级程序员。按照我目前的认知,要想成为一个高级程序员,不仅要从技术的方向去考虑问题,还要更多的从人的角度考虑问题。
结尾
很感谢你能看到最后,那么问题来了你是一个什么级别的程序员呢?
如果觉得对你有帮助,可以多多评论,多多点赞哦,也可以到我的主页看看,说不定有你喜欢的文章,也可以随手点个关注哦,谢谢。