Time will tell.
对每个决心学习编程的程序员来说,入坑前,你也许只是一个 “穿着正装在办公室里上班” 的人。
你的学习历程可能是:如同一片树叶,被各种建议拽着走,直到学完了每一个你能想象到的在线课程。
最后,虽然你成功拿下了一份软件开发的工作,但也对程序员有了新的认知:“那些看似正常的程序员们其实都是些 “反社会” 的怪人,鬼才知道他们经历了什么样的精神创伤。”
一份常见的编程学习过程:先从 Ruby 着手。很快,开始穿梭在 Scala,Clojure 和 Go 等其他语言中了。学习了 Emacs,接着是 Vim,甚至还了解了 Dvorak 键盘布局。接着又学习了 Linux,甚至还涉猎了 Lisp,以及用 Python 编过代码,后来一直在命令行驻足半年多。
下面来看一下学习编程要经历几个阶段:
阶段一:蜜月期
我们从小就听说过,编程如何如何难学,就像那些吓唬小孩的无稽之谈,最后把孩子们逼去学了社会科学一样。而另一方面,“学会编程” 运动的推广效果确实十分成功,因为它让人们相信,这一行并没有那么高的进入壁垒,而且学习编程毫无坏处。
对于进入编程这行抱有过高期望的人,真的没有办法去责怪他们。在很大程度上,这些介绍性的工具手牵手地引导我们穿越那些可怕的参数、条件语句、早期的编程语法阶段,确实给了我们很大的帮助。当我们征服了一个又一个游戏化的挑战时,自信心也开始迅速膨胀,我们觉得最终一定可以做到,这并没有什么难的,我们以为自己已经成为一个开发者了。
(图例纵轴为信心值,横轴为能力水平,虚线区间展示了蜜月期信心随能力增长而增长的曲线图)
我们以为很快就要走到终点了,但其实只是走了一部分,路才刚刚开始……
在我们深入了解到第二阶段之前,一起来看一看宏观的局面。在这篇文章里,会介绍一段典型的编程学习之旅必经的四个阶段,以及应该如何应对。我们将了解资源的密度以及所需知识的广度这两大要素是如何定义这段旅程的。
就业准备之路可以用下图曲线表示,它描绘了信心水平如何随着能力增长而变化。
(图例“编程信心与能力”:纵轴为信心值,横轴为能力水平,虚线从左至右依次分割出手牵手蜜月期、混沌悬崖、绝望沙漠、令人兴奋的上升期四个阶段,第5条虚线标志着工作准备就绪)
在过去几年间,我们采访了成百上千名优秀的开发人员,反复听到了相似的故事。而发布这篇文章的目的,就是希望大家在设计学习路线的时候,既要眼观六路又要做足计划,以绕开前人踩过的坑。
阶段二:混沌悬崖
当我们在第一阶段细数着自己获得了多少徽章与完成了多少挑战的时候,自信心和能力也在不断增长,这