The Key To Accelerating Your Coding Skills
以上为原文地址,本片文章为一篇阅读心得分享文章。
以下我从文中单独抽出来的三个时期。
作者认为学习编程有一个转折点,我们学习语言,学习算法都应该去找这个转折点(the inflection point)。
在转折点之前我们处于跟着教程一步一步学习的阶段。在教程阶段我们只是在学习特定的知识(domain-specific knowledge),这种特定的知识仅仅是这门语言的特定的语法而已。就像所有语言都有判断和循环一样,仅仅是写出来的语句看起来不一样罢了。虽然我们需要这门语言的基本的语法知识,但是这些domain-specific knowledge并没有你想象中的那么重要( Once you pass the inflection point, these concepts will fluidly translate with just a week or two of tutorials, maybe even days!)。
When you start out learning to code, there’s a lot of information that you don’t know yet. This information is called domain-specific knowledge. Examples include: knowing how to write a loop in ruby or how to extract something from a database using Ruby on Rails. Domain-specific knowledge encompasses the protocols unique to a certain programming environment.
当你能够熟练运用教程期所学的各种知识后,你将进入转折期,在这个期间你会想独自做一些你想做的编程项目。但这时没有教程能够让你参考,你所遇到的问题你只能不断地去google,你需要解决一个又一个的问题,你编写程序的速度非常非常慢(与你在教程期相比),这时你觉得你身处黑暗。但面对恐惧的最好办法,就是............
At this point in time, you’ll feel like you’re “in the dark” when it comes to many of the things you want to accomplish. Learning how to find the light on your own is critical because you can never know everything there is to know, so you need to be able to teach yourself how to solve the problem at hand.
最后你将度过转折期,如何判断你度过了转折期呢? The final stage of the inflection point process is acceptance. Acceptance that software development is a process of continuous learning. Acceptance that the feeling that you’ve successfully learned everything just means you should start thinking about solving more complicated problems.
以下是一个web开发者
作为一个web开发者,会有两种转折点:
The web development inflection point
The algorithm and data structures inflection point
当你度过了这俩个inflection point你将会开启新世界的大们。(They hold the keys to the kingdom.) 如果你有a solid grasp on a web development framework和a solid grasp on writing algorithmically complex code in any programming language 你将天下无敌。
作者举了一个例子:While I was working at PayPal, my team hired a Senior Rails Developer who had no experience in Rails– he had been coding a lot in Python, LISP, and Perl. Within a couple of days, he was already making a big impact. And within weeks: a huge impact. He quickly rose to become the technical team lead and was one of the best hiring decisions I’ve ever been involved in.(也就是说这个人一点Rails开发经验都没有,但就是精通其他语言的web框架和复杂算法,分分钟上手Rails框架)
以下是一些tips
-
注重细节,要仔细看documentation无论是学习初期注意单词拼写还是后期方法调用的各种限制与建议。如果不细心就会各种bug。
-
从bug中学习,要知道为什么出这个bug,下次遇到就会快速解决。
-
The dirty little secret of programming ,You will never know everything you need to know to solve all your problems. Programming is a life-long learning experience.
-
For the rest of your life, go outside your limits every single day.不要一直呆在自己的舒适区里。
-
Don’t sweat the stack.今天这个语言火,明天那个语言上升快,不要心急。我们唯一的目标应该是找到inflection point 并且战胜它。
-
Become self-reliant. 不要总是等着别人投喂。如果你想知道些什么,就到人家官网去看吧,不要总是等着某某某出个视频教程。
-
如果你想查看domain-specific 方面的知识,document更适合你而不是videos。
-
如果你想更平稳的度过inflection point ,那就在教程期多做一些吧。比如做一些教程没有的练习,少看一些教程而是用document代替,用你所学做出一个小app推送的GitHub上。
-
在inflection point期的建议:
- Understand that this is a difficult process and go easy on yourself. 总之心态要好~~~
- Work consistently, but don’t overwork yourself. 不要用蛮力,不要心急,每天都去做一点,相信自己迟早会成功的!!!!奥里给!!!!