如何突破编程学习的瓶颈期


1.谁未曾彷徨

对于每个学习编程的工程师来说,肯定都会遇到或长或短的瓶颈期。基本症状就是:不知道该学什么、该怎样继续提高。看什么都能上手弄一弄,但好像又什么都不精通。本文谈谈笔者在不到十年的整个职业生涯中碰到的三次瓶颈期,以及是如何克服的。方法因人而异,本文只供大家参考借鉴。


2.真实的项目是什么样

这是本人在本科学习时还未实习前最好奇的一点。因为学了C++/JAVA等专业课,尤其JAVA,语法和库函数已经烂熟于心,但从来没有做过真正的项目,所以对于该学什么框架、平台、开发方法等还是很迷茫的。迷茫是正常的,但千万不要停下脚步。不知道不了解,那就上网去找资料。看看别人上传的代码是什么结构,怎样设计的,用了哪些框架。一点点的,也就对真实世界里的项目有了些了解。记得当时自己弄个Log4j都感觉很兴奋,仿佛自己的Demo专业了很多。这样再等到真正实习时,那就如醍醐灌顶般,一下就有了清晰的认识,然后就能够大踏步提高。

顺带再补充一点就是:对于还未毕业的同学,看经典好书是非常重要的。因为这时的你还未养成根深蒂固的习惯,就像张白纸。所以,看什么样的书对你未来的发展和习惯养成是有决定性作用的。在这一点上,笔者感到非常幸运,在本科阶段认真看了两本书:《JAVA编程思想》和《代码大全》。尤其是后者,看过之后,以后再做不管是大项目还是小模块,都会使你不断思考到底代码怎样写会更好。这种追求完美的精神,甚至代码洁癖,是一个合格的、负责的工程师应该具有的素质。


3.代码的世界其实很大

随着经验的增长,在各种项目中“走马观花”多年后,最初的新鲜感就会变成一种枯燥和重复。虽然JAVA的世界不小,但可能接触的项目中能用到就那么些。做过几个雷同的项目再往后就变成了机械的重复,很多同学可能都有过这种感觉。这时就要“自力更生”:能用上的技术发散开学,用不上的技术自己闷头学。所谓发散地学,就是比如项目中用到了某某技术,那就自己搭搭环境学学,再找找类似技术的资料扩展一下,其实很简单的。而用不上的技术呢,就要自己判断是否对自己提高有帮助或者未来会火起来。这一点就要考察大家的技术嗅觉了,辅助的帮手有像Thoughtworks的技术雷达等。时刻保持关注和学习的状态,自己才能不落伍。

按照这种方法,光是你最喜欢的语言比如JAVA的生态圈就够你好好学习一阵子了,更别说其他周边的语言和工具。个人觉得,刚毕业的几年正是精力最充足的时候,可以把学习的面铺的尽可能广。打开自己的技术眼界,同时通过多种角度触类旁通,这样对你工作中最常用的技术和框架也会有新的认识。笔者在这一迷茫期学习了不少“乱七八糟”的东西,比如PHP、Shell、Windows图形编程、C、算法甚至Lisp,感兴趣可以看看以前的博文。


4.真正经典的永远不会过时

职业生涯到了三年、五年这两个坎儿时,可能会再次碰到瓶颈。这时的工程师已经算是个“老手”了,能里能外,是项目中的主力。通过前些年的积累也有了比较广的知识面,与人谈论起来也都略知一二。这时自己要想办法继续提高:一是夯实基础,二是做某一领域的专家。因为技术的世界实在太大了,哪怕想要每个分支都只蜻蜓点水地学习一下,也是不现实的。正所谓,“吾生也有涯,而知也无涯。以有涯随无涯,殆已”。所以就要瞅准一个大方向深挖,然后再进入某几个小分支中,争取成为那一方向的专家。而说到这,要想成为专家,其实秘诀就又回到了第一点:夯实基础。

什么是编程的基础?Coolshell上的这篇《程序员技术练级攻略》说的全在点子上。可以说这篇文章中列举的思想指引了笔者第三年到五年这一阶段的技术学习方向。调整了新技术和老技术的学习比重,把更多时间放在基础知识的反复学习和理解上。事实证明这也是正确的思路,笔者从第三年开始进入了知识储备的“井喷期”,曾经积累的一切都爆发出了能量,进步的速度前所未有的快。这是本人之前确立的学习路线,可以参考一下:《程序员修炼之路》。


5.触碰到编程的本质

在职业生涯的第六个年头,因为无法突破新的瓶颈期,笔者选择了全职读研学习。这条路可能借鉴意义不大,因为时间成本和风险都是不小的。但也正因如此,这个选择所带来的东西可能会影响后半辈子。在经过了一年的学习后,终于有种要触碰到编程的本质的感觉了。目前正在整理这部分的东西,等到整理好了会逐步分享给大家,希望能对各位同学有帮助。关于这一路的见闻和收获,可以先看看笔者之前的几篇:

  • 而立之年说离别
  • 入学一月谈
  • 算法学习的新阶段
  • 留美CS学习的第一学期总结
  • CS研究生学习阶段必读书籍
  • 十年之后重学C语言
  • 关于算法,那些你不知道的事
  • 深入数据库理论:查询语言
  • 操作系统内核的绝佳学习材料——JOS

6.条条大路通罗马

通过前面这些笔者的亲身经历能够看出,程序员职业生涯的不少一部分时间都会有迷茫。其实,相比克服瓶颈期的方式方法,能一直保持上进的心才是更重要的。如果你能一直向上而生,你早晚都能找到自己的出路。而这种心态不是哪篇文章能够教你的,热爱则努力,做自己喜欢的事就可以了,不必强求。

更多推荐

如何突破编程学习的瓶颈期