第1阶段:机会
你非常开心,你一直想学这个新的内容,比方说某编程语言。不管是规划还是环境所迫。总之你最终有这个机会学习了。
第2阶段:没有依据地乐观
谷歌搜索——挑选一两个自己感兴趣的教程。买资料和书,然后開始MOOC(大规模在线开放教程)。教程非常有趣,甚至还有在线REPL,可以让你玩耍,你认为你正在进步中。当然也有烦恼——手指还不熟练,但你坚持,不肯放弃。并准备向你的第一个项目进军。
第3阶段:绝望的深坑
你開始从“Hello, World”延伸开去,比如,先是将内容更改为“Hola。Mundo”这样小心翼翼的尝试,然后胆子略微肥了点。開始肆无忌惮了——于是乎,错误信息,堆栈跟踪,随机行为纷至沓来。即使不管全部的错误信息,那些能在教程中正常工作的代码。或许你亲自操刀的结果却是一片空白。你恍然发现,哪怕是一些看上去愚蠢但良性的细微区别,也会造成狂风暴雨。让你阴沟里翻船,陷入绝望的深坑。即使是最简单的任务都让你痛苦不已,你開始怀疑自己,怀疑自己事实上压根就没有编程的天分。
第4阶段:放低身段
慢慢地,通过试验和错误的洗礼,通过向同事、StackOverflow、博客寻求帮助。你開始一点一滴地积累知识。你開始懂得怎样显示数据,怎样与数据库进行交流,怎样创建接口。怎样覆盖方法。尽管你还并不能真正理解上述不论什么一个的工作原理,可是在不断掌握这些奇妙的咒语,扩充知识领域的同一时候,完毕一些特定的、必要的任务渐渐变得不在话下。对于有的咒语。你可能会用得非常顺手,甚至在一些有问题的情况下也生搬硬套,认为仅仅要完毕就好,哪怕内心明确自己这样做并不正确。调试是一种挫折锻炼。不管是由于自我认为目标已经实现,计划将时间放到其它地方。还是由于太难因此望而怯步,亦或是自诩已经掌握了专业知识从而做出了自认为理智的选择。总而言之非常多人止步于这一阶段。
第5阶段:黎明的到来
到了这一阶段。由于你已经积蓄了足够多的信息片段,于是開始可以找到它们之间的连接。你開始可以灵活应用知识,而不是像之前那样生搬硬套。你对一些基本规则開始有所谓的直觉。開始从死板地遵守向接收知识转变。
这也是一个不均衡的过程——对这方面心意相通的同一时候可能仍然困惑于还有一方面——可是你有信心一步一步地拿下,你開始享受这个过程。
第6阶段:专业
一段时间以后,你全然掌握了基本模式。開始认为编程就像吃饭那样轻松自然。你已经可以直观地了解事物的工作原理,而且在架构、编码和调试之间轻松斡旋。
一般说来你已经不必刻意地去思考问题,就像你从家里到商店去买东西——你知道怎么走,假设有一些新造的道路。你也能瞬间权衡不同的选项,并选出一条最佳的路线。
此时。碰到问题最难的应该是问题本身,而不是操作系统来支持你想要它做什么事情。
第7阶段:成就
你如今已经是一个有着多年经验的专家了。你投入的时间和精力通通有了回报。你写博客文章,助力开源项目,成为了同行中公认的专家。这俨然成为你的身份和荣誉。也成为了你的枷锁,你的所作所为须要匹配专家这个名头。突然有一天。新生事物出现了。
你内心也明确,这个新事物非常好。将会非常实用。能帮助轻松解决现有工具不足以解决的问题,将会是未来的潮流。但与此同一时候,你清楚地知道成为专家所须要付出的努力和时间。须要再次感受不足和挫折。须要去向他人求助等等,你不愿意了。你退缩了。你宁愿闭上眼睛,墨守陈规。将自己蜷缩成一团,就好像枯萎的枝干慢慢死去。
译文链接:codeceo.com/article/7-steps-learning-programming.html