3K和3w的月薪的程序员,差别在哪里?

高级程序员和低级程序员差别在哪里?

一、初级程序员在写代码,高级程序员在设计

大多数程序员在拿到需求之后,直接就开始写代码了。从而就会遇到功能越来越多然后代码就越来越复杂的情况,一个产品下来自己甚至都不知道该如何维护,一上线还挂掉了。

但是高级程序员会思考整体的页面应该如何设计,一个页面分为哪些板块,有什么事件,每个事件应该dispatch哪些action,整个模块有哪些数据放在store当中,哪些模块放在state里面。

如何提升自己的代码能力?

很多人会告诉你,去看源码,哪些很简单的函数,别人是怎么实现的?要你从效率,逻辑和注释看别人是如何设计的,并且看完要练习,光看不练的都是耍流氓。这是有一定的效果,如果你要从初级程序员升级高级程序员的必经之路。

下面说说TDD(测试驱动开发),我来推荐TDD的问题在于,现在很多程序员并没有写测试用例和重构的能力!TDD主要是在写代码之前就要写测试用例,那么在写的时候你自然而然的就会思考每一个函数和每一个模块等问题。从中可以认识到自己原有的编程方法不足,并且弥补,在养成拿到需求之后去设计代码再去写的习惯之后,就不需要再用TDD了。

二、初级、高级程序员拿到需求之后思考的问题:

我见过有的实习生,和应届生看到以前的老代码用的框架不够新,就开始吐槽,改成新的,一上线发现挂了。其实这种情况很常见,这就是初级程序员所考虑的技术问题,然而高级程序员会考虑什么?在技术的基础上,会直接想到业务需求。毕竟技术是为业务服务的;

其实看到技术不够新,我们应该去想为什么以前的人要这么写,为什么用这些东西?真是因为那时候还没有出新的东西或者是别人比你差?

我在HW的时候,负责一个版本的开发,这个版本的工作量大约是2000行左右,但是我除了做完这个功能,还将关联的功能全部掌握清楚了,代码(大约10000行)也全部看了一遍,做完这个版本后,我对这个版本相关的整套业务全部很熟悉了。经过一两次会议后,大家发现我对这块掌握最熟了,接下来就有趣了:产品讨论需求找我、测试有问题也找我、老大对外支撑也找我;后来,不是我负责的功能他们也找我,即使我当时不知道,我也会看代码或者找文档帮他们回答。最后我就成了我这个系统的“专家”了。虽然这个时候我还是做业务的,还是写业务代码,但是我已经对整个业务都很熟悉了。笔者是一个C/C++出身的程序员,学习编程有什么学习问题或者关于C/C++学习的路线的话可以私信我交流。

我很喜欢引用这个故事,其实给大家一个很好的思路。企业老板根本就不在乎你用的是什么技术,他要的只是需求实现,产品顺利上线。所以该如何突出自己?那就是重业务,在技术层面能够把业务的需求放在前面。

三、初级程序员接需求,高级程序员砍需求

一般的程序员在产品经理,运营说了一些需求之后,满口答应的去接,之后加班几天,做了很多根本没有价值的东西,还有很多重复的工作。但是真正高级的程序员,有一个自己对业务的理解之后,会说出自己的看法。

该如何判断一个需求是不是该接呢?

这也就是上一个阶段提到的,思考这个需求背后的价值。为什么要做这个东西?做了之后能有什么要的效果?如果一个产品功能最后出不来什么价值,是完全可以不要做的。或者是这个产品产生出来的价值与消耗的人力物力时间成本不匹配,那么需求也是需要商量的。

四、初级程序员解决一个问题,高级程序员解决一类问题

初级程序员完成一个项目,出现问题都是一个一个解决,按时按量的完成。但是高级程序员在做什么呢?封装几个共用组件到npm大家需要都可以来用。初级程序员常说:这个很简单,过几天给你。高级程序员:这个我以前写过一个模块,我去找找,马上给你。

有的程序员会问我,我们要上线一个功能,小程序和H5都要再写;但是我会说,我见过的程序员,写了一个可以将vue代码转化为小程序的框架,一套vue代码,不仅是H5,小程序都可以用。

打个总结

想要成为一个高级程序员,拿年薪的那种。要有思想的转变,不仅要代码写的好,做的东西需要更有用,要常常思考积极主动。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190827A0GJVS00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券