如何成为高级程序员?

原谅我多少有些标题党了,这不是一篇教你如何成为高级程序员的行动指南。只是今天看了一篇文章,感触颇深,希望分享一下。原文地址如下:

高级程序员与初级程序员差别在哪里?

读完文章的我茅塞顿开,彷佛醍醐灌顶。其实我自己也经常思考这个问题,究竟和高级程序员的差距在哪里?可是我虽然知道了差距,但是却无从下手,不知道该从哪里改进自己。

作者列举了如下的几点,对这个问题进行了回答:

  • 初级多在写代码,高级多在设计代码;
  • 初级多在解决一个问题,高级多在解决一类问题;
  • 初级多在考虑技术问题,高级还要参与业务上的需求;
  • 初级工程师只管接需求,导致自己忙不过来,高级工程师会砍需求, 用自己得经验告诉产品这个需求不需要,告诉设计师这个交互没必要;
  • 初级工程师可能做完一个项目就完了,高级工程师可能会封装几个组件,整理一个脚手架出来。

我读这每一条都非常有感触,完完全全就是自己的真实写照。尤其是后面的两条,我真心觉得是自己和高级程序员的差距所在。

如何成为高级程序员?_第1张图片
Photo by Daniel Novykov on Unsplash

误区一:接到需求就做

很多次我都是接到需求,简单的参与了一下需求讨论会,觉得差不多可以做,然后就动手了。等到做到一半,发现踩到了各种稀奇古怪的坑之后,又开始找产品重新讨论。有时候临近迭代尾声,这种突发状况真的让人手忙脚乱。

反观我的师傅和其他一些经验较为丰富的同事,他们在参加需求讨论会的时候,就会积极的参与和产品、交互、后端之间的讨论,会事先将可能存在的风险抛出来,一起寻找应对方案。即便在讨论结束后,也不会立即打开编辑器写代码,而是通过分解任务的方式将整个功能的实现拆解成模块,再对模块进行细分的设计。这当然需要经验的积累,以及对于代码的熟悉程度。不过养成这样的习惯,能利于提前发现问题,而不是等到火烧眉毛了,发现某个功能模块实现上存在缺陷,导致整个项目都无法上线。

误区二:功能做完就完了

这个我觉得真的是理念上的差距,而不是技术上的差距了。当你有一种得过且过的心态的时候,最终的目的就是将需求做完,尽快交差。如果不是以这种应付的态度,而是一种分享的态度的话,也许我可以更多的思考思考这次开发的过程中有没有碰到什么难题值得分享?有没有哪个组件可以进行复用?我是不是可以把它的接口设计的更好一点?这些其实都是有价值的,不仅仅是实现了某个功能,更多的可能是给身边的人带来了价值。

事实上,去年除了对于分组树组件和选择器组件的优化,我很少在这方面作出自己的贡献。希望自己能在新的一年里,保有这种心态,在功能完成之后,还能再进一步地思考思考,琢磨琢磨,切莫得过且过,放走可能成长的机会。

误区三:羞耻于求助

这是文章里没有提到的一点,我觉得可能大部分的初级程序员可能都会有这样的误区:害怕开口求助,求助等于承认自己技术不行,会让别人觉得这么简单的问题根本不值得回答。

其实不是这样,问题是没有贵贱之分的,我的师傅也会经常请教我一些代码上的细节。闻道有先后,术业有专攻,没有人是全知全能的,所以有问题很正常。这时候要做的,不是将问题憋着,一直等到临近 deadline 才支支吾吾说出来,而要积极主动的去寻求可能的帮助,共同去解决问题。更何况,如果你的问题对别人也有了很大的启发作用,那何尝不是一件双赢的事情呢?


我的思考

以上是我在读完文章后反观自身的一些思考,也让自己能正视自身存在的一些问题。其实,归根结底,初级程序员和高级程序员之间最大的差别并不在技术上,而是人生的态度上。他们在面对问题时,表现得更加积极,更加乐于思考问题背后的本质,更加富有一种奉献团队的精神。

子曰:“见贤思齐焉,见不贤而内自省也。”知道了自己与他们的差距所在,要做的自然是向他们看齐啦~

你可能感兴趣的:(如何成为高级程序员?)