程序员朋友们都知道,程序员这个职业是一个活到老学到老的职业,互联网发展如此之快,程序员无时无刻都要不断学习和提高。那么,随着程序员的技术水平不断提高,他们的技术水平在哪个层级呢?
为此,我整理了程序员技术进阶的五大阶段,看看你在哪里!
这个级别的程序员,连最基本的编程语言都不熟练,写一个常用的api都需要上网搜语法,被他们碰过的事情基本都需要重头再返工一遍,写出来的bug层出不穷,这基本算不上是一个程序员。
建议先把语法、框架玩懂,在网课上多写几个练手项目。
不过上面这句是老生常谈了,在这个阶段呢,心态其实是最重要的,初学者一定要有一种心态,就是接纳对未知问题的恐惧。
什么意思呢?
当你刚入门的时候,在编程你会遇到很多未知的问题,这是很正常的事情。遇到问题解决不了,你可能会觉得很挫败,也觉得毫无头绪,甚至改一个bug搞一天也解决不了,直接选择放弃。
我有一些同学是因为这个原因放弃了编程。但如果你真心想学编程,那请你一定要克服这种对未知问题的恐惧,问题是可以解决的,只是你的水平不够而已,相信我,总有一天你可以解决的。
这类人群基本上是从培训班或者学校刚出来,还没写很长时间业务的。
这一级别,基本算是入门了,懂计算机的基本操作,了解一些基础知识,掌握一门基本的编程语言,就是整体技术水平比较渣,他们编程经常会出现很多bug。
有时候还会遇到一些疑难问题给卡住,更多的时候是CTRL+C代码。
他们终日兢兢业业,工资却没有程序员高,只知道怎样完成任务,却不去思考原理。
在这个阶段,就不是靠写网课的那种死板项目就能提升的,一定要在实战项目中磨练,因为现在你差的是项目经验。
一定要多写业务,多总结,多问,重复遇到的问题一定要记录下来。
积累到什么层次,你就可以进阶了呢?
当你遇到一个问题,你可以在你之前记录的笔记上找到解决方案。
来了一个需求,你有一个基本的实现思路。
出现一个bug,你知道如何去debug调试,该从哪个方向找问题。
那么我们可以说,你已经算是一个上路的码农了。
这类人在公司中已经是老油条级别了,可以熟悉使用别人的轮子,遇到问题也会百度解决,大部分人经过2-3年的努力,都可以达到这个级别。
但他们只能实现一些简单的业务功能,做不了框架、组件库这种大的东西。
很多人在此阶段会遇到瓶颈,因为日常开发的东西他已经了如指掌,技术上没什么突破的动力,回家后基本也是打打游戏刷刷剧。
这其实是一件很危险的事情,因为你所在公司的环境,很可能已经落后于市面上的技术水平,如果一直停滞不前,最终会变成一只坐井观天的青蛙。
编程如逆水行舟,不进则退。
多写看底层原理、框架源码、算法、设计模式,修炼程序员的内功。特别是非科班出身的程序员,尤其要补足数据结构、算法、设计模式、操作系统等学科上的短板。
如果只能选一条,优先看算法,LeetCode上面多刷刷题,可以提高你的逻辑能力,大厂面试也会考算法。
其次是设计模式,一个好的设计模式,能让你和团队成员维护一个项目时更加得心应手。
写代码本身也是需要提前构思和设计的,写代码和写作文一样,需要有大纲,不然很容易变成"屎山"。
思考业务逻辑和代码流程,是动手前的准备工作,这上面可以花一半以上时间。
一些程序员洋洋洒洒写了几万行,删删改改,bug很多,误以为自己很忙。这都是思考不足的结果,导致时效很低。
提前设计也有方法可循。
比如通过draw.io、xwind等工具画流程图,想好每个模块实现什么功能,然后写伪代码提炼核心逻辑,把每一个测试节点安排好。
这类人已经拥有足够的实战经验,往往在开发中已经形成自己的轮子和工作流程了,也有一部分人活跃在开源网站,比如造组件库,插件库,这种人基本可以进大厂了。
大家可以看看网上一些付费课程,基本到后面的课程,就是教你手写框架源码,这本质上是一种对底层原理、框架原理的学生,可以说想到达高级程序员,必须经历这个层次。
这类程序员一般在公司都是担任着公司内最重要的编程角色,在公司内部,他们受到老板和其它程序员的尊敬,他们工作过的公司都会因为他们而有所发展。
上面说的这五年,就是一个技术积累阶段。假设本科22岁毕业,那么工作的前5年对你来说是打基础的阶段,一定保证自己的代码量、学习进度。
高级程序员在工作5年后,技术上完全可以独当一面,可以尝试“转型”,注重对自己的全面培养,全面发展。
也就是说,到了这一层,程序员就需要做一次人生方向的考虑,类似于游戏里到了二十级就必须转职。
技术专家/系统架构师这两个职位的主要区别体现在一个是对技术的深度研究,一个是对技术的广度研究。
如果你在成为高级工程师之后仍然在一个技术领域攻坚,继续研究和挖掘该技术更加深入的内容,此时可以考虑技术专家的方向;
而系统架构师的职责是在项目初期把控项目的整体设计以及解决方案的制定。
近日,在一个平台上看到一则华为员工的爆料帖,感触颇深。据悉这位员工的工作时间是早上8点到下午6点,每天准时上下班,按时接送孩子上学、放学。
周末要是需要加班的话,他一般都是利用这时间来做自我提升。非工作时间,工作电话一律不接,如果遇到有紧急工作要处理的话,得部门领导亲自出门请他。有人说他架子大,但他完全不在乎。
据悉每当部门遇到棘手问题时,产品线的其他人花了两天都没解决的问题,他半小时内就能轻松解决,一天内就能给出彻底的解决方案。据悉这位高管完全不怕裁员,因为有其他公司的人在挖他。
看过这样一个故事。
20世纪初,美国福特公司有一台电机出了问题,导致整个车间都无法正常运转。
公司调来大批的检修工人反复检修,又请了许多专家来查看,可都找不出问题所在。最后公司请来物理学家斯坦门茨帮忙,斯坦门茨在电机旁搭了座帐篷住了下来,忙碌了两天两夜。
最后他在电机旁用粉笔画了一道线,并吩咐说:“打开电机,把此处的线圈减少16匝,故障就可以排除。”
工程师照办了,电机果然运转正常了。
结账时,斯坦门茨向福特公司索要1万美元的酬金,有人立刻质疑:
“你只是用粉笔画了一条线,凭什么要1万美金?”
斯坦门茨微微一笑,转身就开了个清单:画一条线,价格1美元;但知道在哪儿画线,9999美元。
我想这9999美元,归功于他个人的知识具备。一个人的知识具备丰富,是难以用金钱来衡量,也是其他人不可比拟的。
要达到管理层的水平,首先要建立在技术基础上,根据技术线的不同分支产生的管理层发展路线。这部分的职业路线一般分两种:
1)程序员>>系统架构师>>项目经理(PM)
2)程序员>>技术总监>>CTO
从一个程序员过渡到一个PM是向前发展的一个选择,但开发人员也需要知道,要成为一个PM不单单是使用技术,而更重要的是对管理方面的认识。
一个PM主要的工作是组织团队,控制成本,管理业务,控制项目进度,与客户进行沟通,协调工作,定期进行工作报告等。所以要成为一个成功的PM更要重视组织能力,PM必须能提高团队的积极性,发挥团队所长,在有限的开发资源前提下为公司得到最大程度上的利润。
成为一个PM后,通常不需要直接接触技术开发,而着重管理的是业务发展,但PM对技术也需要有一定的了解(在下曾经为PM对技术了解的必要性写过一篇文章,得到很多支持但也惹来不少的争议)。
在这里我还是要强调自己的观点:要成为一个成功的PM最重视的是管理能力,但对技术也应该有足够的了解,因为这是与团队成员沟通的桥梁,只有这样才能与整个团队的成员有着紧密的结合,让团队成员感觉到他们自己存在的意义,从而调动团队的积极性,而不是漠视技术人员的存在。技术并非成为一个成功PM的充分条件但却是必要条件!
如果觉得自己情商不高,搞不定领导,或者觉得和人打交道非常内耗,需要很多时间恢复精力,那可能不太适合走管理路线。
注意,能不能当领导不仅仅看技术实力,有时候也看公司发展、机遇、情商、站队等,这都是不确定的事情。
对于工作的程序员来说,在大型互联网公司当一个小领导,年薪就能 40~50 万;如果你技术给力,情商也高,那么年薪百万也不是不可能。
如果你比较幸运,较早进入一个有潜力的独角兽企业,并获得股票或者期权,那么当公司上市或者被收购,你的回报可能超越别人十年的收入,甚至直接财务自由。
工作并不代表没前途,选择不同的公司和岗位,十年以后的差别是巨大的,有人财务自由,有人还是一线码农。
这种方向偏科研层面了,比如算法、数据分析等方向,这类岗位对学历也是有要求的,最后基本都是进大厂或者高校任教。
还有一种是开发编程语言的,我们也称为祖师爷。
祖师爷级别的程序员不仅仅是创造了一名新的语言,而且他的丰功伟绩名垂青史。像C语言之父丹尼斯·里奇、JAVA之父詹姆斯·高斯林等等。
他们在编程史上留下永恒的光辉,继续照耀程序员们继续前行的道路。他们的贡献创造了后世大量的编程岗位,也就是网友所说的“感谢祖师爷赏口饭吃。”
但在这里说一句令人心淡的话:中国已经属于是世界上第二大经济体同盟国,但国民生产总值主要来源于第三方加工产业方面。中国可以说是人才济济,但却在高新产业上却比发达国家落后。这几年的确看到我们国家在高新科技上有着质的飞跃,但跟欧美发达国家还有着一段距离。
所以想在中国成为尖端技术的人才,无可否定比在国外要难。依在下看来,要想成为尖端的开发者,必须对C、C++、汇编语言、嵌入式开发、WindowsAPI、LinuxAPI这些底层技术有着深入的了解。要知道JAVA、.NET……等这些之所以称为高级开发语言,并不是指它们比C、C++、汇编语言更高级,而是指它们封装了C、C++等等的功能,更适合用于企业软件的开发,使开发变得简单。但如果要开发一些底层的软件,大型的系统的时候,就必须用到C、C++、汇编等开发语言,这是成功尖端人才的一个条件。
当然程序员肯定不止以上介绍的职业发展方向,还想往前冲一冲的,你还可以尝试转战产品经理、培训师, 或是选择创业,可以建站或者做外包、工作室,直接走上人生巅峰。
这里谈一下,不太推荐的模式就是外包接单(SOHO路线),吃了上顿没下顿,也不能持续积累资源;说白了,干就有,不干就没有。
我推荐读者打造自己的产品或者个人品牌,虽然起点很低,但是它能够持续积累,最终达到不错的收益,并且这个收益可以持续很久,即使你半年不干活,买单的人也不断,这就是被动收入。
如果不想往前冲了,你也可以退居二线。
这也是不少人的选择。很多人在有了家庭以后,感觉到压力太大,人的一生并非只有事业,他们想把更多时间用于对亲人的照顾,对孩子的关心上。所以很多人会选择一份像系统分析、系统维护、高校教师、专业学院讲师这一类的工作。收入稳定,而且往往没有一线开发人员那么大的压力。
最后,实在混不下去了,建议你直接黄袍加身,咱可以转型美团外卖嘛~
最后附上一张总结图:
参考文章: c.biancheng.net/view/9434.h… baijiahao.baidu.com/s?id=173182…