前不久,一个技术 party 上有人问我:“我学习 Rails 已经2个月了,但仍是对整个开发流程缺少清晰的了解,我应该怎么学呢?”这不是个别现象,在 ruby-china.org 上也常常有人发帖,说本身学习了 1个月、2个月、半年了,仍是不太清楚 Rails 的不少细节,不知道应该怎么学。前端
看到这样的提问,我第一反应是他/她们对本身的要求是否是过高了?程序员
我从没有什么 Web 基础开始直接学 Rails 框架,到找到一份 Ruby 程序员的工做用了2年半。此后在正职工做上编程1年半,自由职业编程9个月。如今我考虑开发什么的时间已经比要怎么开发多了,这个过程用了4年半。编程
若是平均天天有效利用时间是3小时,至今已经接近了5000小时的量,按照10000小时到专家的理论,我还有另外一个4年半要学习,我感受这个估算仍是比较准确的。ruby
我固然不是只学习一个工具,同时也学习前端、UI 设计、运维……但不会前3年学开发,后3年学设计分得这么清楚。有时我又会看看跟已有知识彻底重合的工具,好比 Python 和 Nodejs,以避免错过什么。总的来讲,到如今的程度用了4年半,以为本身学得慢的朋友,能够以此做为参照。框架
大学毕业之后最让我失望的一件事,就是发现本身不是天才。我身上没有特殊才能,跟大部分人同样,这多么令我沮丧!运维
世界上确实有些天才,像是 26 岁得到 Best Hacker 称号而后去开赛车,或是 21 岁环游世界同时成为 O'Reilly 的做者。而我只能坐在小房间里面作一些不知道有没有人须要的软件,看来“奇迹”是不会发生在我身上的了。工具
我常常犯低级错误,例如花一个下午发现一个拼写错误引发的 bug,或者花一两天时间搞明白一个问题,兴奋事后又沮丧,为何花了这么多时间在这些浅显的问题上。学习
那么,既然我不是天才,就不要用天才标准要求本身了。花多少时间都好,解决一个问题就是一个收获。再也不只看着那些天才,而是把昨天的本身做为竞争对手,今天比昨天有进步,那么这一天就是有意义的。笨人有笨办法,一步一个脚印往上爬。spa
能解决问题不是由于天资聪颖,而是由于已经花时间实践过了。若是有什么问题还解决不了,那是由于实践得还不够。.net
万事开头难,对于技能学习也适用。起步的时候,不懂的地方太多,每解决一个问题都会引出不少新问题。随着知识面的增大,接触到的新知识也会随之增多,你会感受本身永远学不完。
但随着知识积累的增多,吸取知识的速度也会加快,你会逐渐成为“花一个下午看文档了解基本用法”俱乐部的一员。这不须要什么魔法,你只要遇到一个问题,解决一个问题,效率天然会提高。我如今每半年学到的新知识的价值都等于过去学到的知识价值总和。
因此在入门阶段感到焦虑时,请从容的接受它,而且坚持下去,每一个人都有这个阶段。若是你以前已经有一、2年的编程经验仍是感到焦虑,那是由于以前的视野过小,如今就是踏入新天地的好时机,不要原地踏步。
当你拿出几个月前的代码,发现本身写得超烂的时候,那么恭喜你,你进步了!
课时观念在真实世界不适用,在学校里之因此能够一个学期学习好几门课,是由于只须要学到应付考试的程度,这种知识是不可靠的。真正掌握一项技能,须要长时间的实践,或者说,须要终生学习。
没有人告诉你要走什么路线,何时前进,何时中止,一切都取决于你本身,志向决定高度。但也正是这么多的未知和可能性,产生了这么多的乐趣。