骑士和冰冰同一年大学毕业,两人果断投入人潮涌动的程序猿大军,过了2年,骑士还在原来的公司,薪资只小幅度的涨过 1 次,还不到一万。而冰冰则开始承担模块乃至系统工作 ,不仅薪资比刚毕业时翻了几倍,未来的职业规划和成长路线也日益清晰明确。
骑士陷入困惑,明明是从同一起跑线出发的两个人,为什么2年后差距这么大?
真相是,编程能力的成长线路规划不清晰,作为程序员,最重要的始终是编程能力,编程能力的成长主要有这么几个部分:
1、编程能力初级:会用
编程,首先都是从学习编程语言的基本知识学起的,建议在刚刚开始学一门编程语言的时候,看看编程语言自己的一些文档就好,不要上来就去看一些高阶的书(你也看不懂还累个半死)。
除了看文档以外,编程是个超级实践的活,所以一定要多写代码,只有这样才能真正熟练起来。
2、编程能力中级:会查和避免问题
在写代码的过程中,出问题是非常正常的,怎么去有效且高效的排查问题,是程序员群体中通常能感受到的大家在编程能力上最大的差距,解决问题能力强的通常容易得到很高的认可。查问题首先要掌握的是一些基本的调试技巧和工具,例如在Java里有JDK自带的jstat、jmap、jinfo,不在JDK里的有mat、gperf、btrace等。
另一个层次就是懂原理。你懂不懂原理决定着你排查问题的思路和速度。
更深一层的就是避免问题,这里也是造成程序员们之间很大的差距的地方。
推荐大家尽可能在这个时期,多刻意的去培养下自己这两个方面的能力,成为一个能写出高质量代码、有效排查问题的优秀程序员。这也就是骑士和冰冰差距拉开的重要节点。
3、编程能力高级:懂高级API和原理
这个阶段,也是有多年工作经验,经历更多项目之后才能理解的,越往后的提升往往越艰难,例如学习高级API,以及排查问题的过程中,知道编程语言的运行原理是非常重要的,会对自己编程能力有质的提升。
小结:
在编程能力的成长上,没有什么捷径。个人非常赞同1万小时理论,只有练习够了才能掌握永远都是真理。同时,一个好的公司环境和成长氛围也的加分条件,如果在中级、高级阶段,进入大厂遇到大神指点,与更多更优秀的人才一起共事,会好非常多。
那么,在如今这个互联网语境下,如何才能选择一条好的赛道呢?0-2年这个成长至关重要的节点,又有什么可以帮助到你呢?