想学编程?这样开始
英文原文:Want to learn to code? Start here,编译:@张飞alex
去年九月我写了一篇挺受欢迎的博文,叫 《想学Rails? 这样开始》。 许多读者看完文章后,当面或用Email向我提了大量问题;也有很多人真正投入到了Rails学习中。我也很自豪地向很多人推荐了这篇文章,因为其中的内容真的具有可操作性,并且对读者真的有帮助。从那之后到现在,我的编程功力又长进了几个甲子,于是又有了下面这篇文章,记录我对“如何学编程”的再次思考。
这篇文章是写给那些真心要编程的人看的——那些憋着一股狠劲儿,一定要做出个什么真东西的人;而不是那些“听说编程好玩”的人。在我看来,这些人都不太可能真的整出个像样的东西来。
1. “只用晚上、周末的业余时间学习”很不靠谱
无论从我个人经验,还是众多访谈的结论来看,只用晚上和周末等业余时间来学习编程是十分糟糕的办法。断断续续的学习方式,你的脑子根本没机会养成编程式的思维方式,你很难把之前学习的内容捡起来。一定要把你的时间尽量多的利用起来。
一种改善的方法是参加“编程训练营”之类的项目;你不但要花整整九周时间,还要花费一笔不小的学费。这些付出可以对你有所约束,督促你学到东西。你必须全情投入,否则钱和时间就打水漂了。
2. 忘掉 Codecademy.com
“我用 Codecademy 学会编程了!”
不知道有多少人这么说过了。但是如果持续的观察六到八个星期之后,这些人就都歇菜了。
我告诉你们为什么用Codecademy学习不长久:
- 你永远只是在浏览器里、在Codecademy网站里编程;学到JavaScript、Python、Ruby的语法是挺好,但是从课程里你也只能学到这些;其实这些你从别处也都能学到。
- 你不会学到如何搭建开发环境。就凭你在Codecademy学到的那点儿东西,哪怕你只想做一丁点儿的小项目,你都不知道该从哪儿开始。
- 对于只有一点点编程经验的人来说,搭建自己的开发环境是很有挑战性的一件事儿。你需要自己把这件事儿搞定。
3. 做一个真正的、你想做的项目
在你想做的项目里,先找一个小的来做。我做的第一个项目叫做“今日所学”。软件里只有一个文字输入框,你每次输入一些文字,软件按照时间降序来显示输入内容的列表。仅此而已。
你的第一个项目一定就是一坨屎。但是它是完整的项目,而且是你完成的。这才是最牛逼的地方。
4. 你的代码要建立在你之前做过的项目之上
我每天写代码,我都会把当天所学的一两个知识点放进去,这样我下一次编程时就会写的更好。你会不断的从你的代码库里引用老代码,或从网上扒来的代码。一旦你真的懂了这些代码,你就能把它们用起来。
5. 别拷贝粘贴别人的代码!
Tommy Nicholas去年12月写的博客里也提到了这个观点。只有你把代码敲出来,你才能真的学到东西,你才能发现你对某些代码还没弄透,也希望你去google一下你的疑问,这样才能学到越来越多的东西。
6. 别在别人面前得瑟“我在学编程呢!”,除非面对一个高手,你要求教。
开始学编程之后,你要为自己找到一两个编程老师带着你学,但别学了一点就在那些不会编程的朋友面前穷显摆。
我一直相信,如果你把想做的事儿说了出去,那事儿就永远只能停留在你嘴上了。所以除非对方是你可以请教的老师,不然就闭上嘴,低下头,老老实实编你的程。
空谈误国啊!
7. 编程就是失败无数次后弄清为什么。很痛?很挫败?很正常。
编程就是要重复的犯错误,犯重复的错误,弄清楚错在哪儿,再改正错误。下次再碰到相似问题(你一定会碰到的),你就会想起之前蹂躏你的那些代码和你的对策,吃N堑,长一智。
当然,搞定编程的成就感也会让你爽到内伤。“那东西是我想出来滴!”的快感是我活着的动力!我为之着迷!但获得快感的路也灰常艰辛。不断寻找你的动力,不断前进!
8. 别再纠结应该学什么,开干!
我一朋友的朋友总是没完没了的问我各种磨唧问题。他试图在正式开始前看清所有可能会搞不定的地方。
这是一种最操蛋的学习方式。正确的方法是:选门语言(Ruby 或 Python)、买本刚出版的书、把自己当个白痴、立马开始学!立马开始第一章!有必要就把第一章再看一遍!你根本没法想象有多少知识是你不知道的!不过没关系,你会慢慢都搞明白的。大家都是这么过来的。
祝你好运!