有关编程的一个恼人的地方是,就算看书之后觉得自己掌握了,真正写的时候还是经常会出错。它只能通过实践来掌握,所以需要很多耐心。当你被折磨得想要放弃的时候,或许可以换一种角度,以此为契机挣脱过去那么多年的学院派教育。想一想吧,我们在学校里待了那么长时间,几乎所有的学习路径都是「先阅读,再应用」或者「只阅读,不应用」,是时候体验一下如何在应用中学习了。
面对批评:
有些人做出想要的东西之后就已经很满足,但有些人可能会想要展示一下自己的作品并获取一些意见。因为业余,所以当专业程序员看到这样的作品之后可能会非常不屑,甚至大肆批评。这个时候不要自卑或害怕,因为他们对作品的了解都是片面的。他们只是一味拿专业的技术标准来衡量,不清楚你只是想做出一个东西,不清楚你只是业余时间在做,不清楚你在整体上的考量和妥协。作为这个作品的创造者,你才是专家,如果按照他们的要求,你可能永远都做不完。
之所以提到这一点,是觉得业余爱好者大都是自己一个人慢慢自学,被打击一下说不定就完全放弃了,那样实在可惜。对于专业程序员的批评,如果有用就记下来,下次不要再犯就好,没有必要气馁或者把之前的东西重写一遍。从无到有实现了自己的创意已经很了不起,不需要对专业程序员有什么交代。
注意事项:
1. 不要过度关注编程语言的优劣。很多编程语言都可以达到相同的目的,选中一个之后把它用好就是了。和别人争辩哪个编程语言更好是很多职业程序员的一大爱好,是他们生活的一部分。我们是业余爱好者,只要求工具够用,不需要像他们那样一定要用「最好的」语言。
2. 用不着关注国内的 IT 红人和八卦。对学习编程和做东西没有任何益处。(补充:这条可能带了个人情绪,请自行判断,但我关注了那么久觉得确实没有任何益处。。。 >_<)
3. 不要自称 "Geek","Hacker" 或其它什么东西。当开始给自己贴标签的时候,就会试图表现得像那类人,束缚自己的同时还会做出许多愚蠢的事情。我们要做的事情很简单,就是掌握技术并做出能用的东西,没有必要给自己贴任何标签。事实上,能做出东西的人比自称 "Geek" 或 "Hacker" 的人稀有得多。
4. 利用开源代码。感谢开源事业的蓬勃发展和无数程序员的无私奉献,使我们可以学习和使用别人的代码。当需要一些功能时,可以先去找一下是否已经有开源的实现,没有必要自己从头写。
5. 先找到自己想做的东西。不要为了学习编程而学习,那样就算记住了很快也会忘掉。如果实在找不到什么想做的,可以考虑给一些公益组织义务做一个网站,锻炼技能的同时还可以关心一下社会。
6. 保持初心。业余爱好者拥有的最宝贵的财富就是初学者的心,也正是因为这份初心,才让代码质量问题变得并不那么重要。可惜的是,随着技术越来越熟练,初心会渐渐消失,做东西的时候首先考虑的不是结果而是实现方式,当初那个满脑子想法苦于不能用技术实现的人不见了,取而代之的是一个精通技术却乏味的人。所以,作为业余爱好者,应该把「完成作品」和「保持业余」作为首要目标,如果精通技术的代价是失去初心,那就不要精通好了,反正并不想以此为生。
学习资料:
由于我的工作大部分是 web develop, 所以这里给出一些不错的相关资料。如果你想要做一个简单的网站或者 app, 那么这些知识够用了。也欢迎补充好的入门资料,我会不断更新。(之所以没有推荐其它方面的资料,是因为我并没有相关的经验,不知道其中优劣。编程可做的东西非常多,比如 Arduino 硬件编程,有兴趣的可以去找一下资料,也欢迎补充。)
1. Head First HTML 与 CSS、XHTML 。在大学图书馆偶尔看到过这本书的英文版,很喜欢。本书非常适合初学者,里面很多插图,写得也很有趣。
2. A Beginner’s Guide to HTML & CSS 一个很好的在线学习 HTML & CSS 基础的网站。
3. An Advanced Guide to HTML & CSS HTML & CSS 进阶,里面还包含了 jQuery 的学习。
4. 笨方法学 Ruby. 这本在线电子书是 Learn Ruby The Hard Way 的繁体中文翻译,也是 Zed Shaw 写的 Learn XXX The Hard Way 系列中的一本,之所以推荐 Ruby 是因为我很喜欢这门语言。本书非常注重实践,全书由 52 个习题构成,当你完成这些习题的时候就已经写了很多代码了。我觉得书中后面的一些习题(比如读写文件)可以先跳过,用到的时候再去学习。
5. Codecademy 备受推崇的在线学习编程网站,而且有中文界面,非常推荐。
6. Code School 和 Codecademy 类似的在线学习网站,评价不错。
7. Learn CSS Layout 很实用的学习 CSS 的网站。
最后再次提醒一下,如果你选择了学习编程,以后很长一段时期内业余时间都会被占据,而且期间会体会到很多痛苦。但是当完成第一个作品的时候,你就会发现之前的痛苦都是值得的,它们是创造不可或缺的一部分。
后记:想要写这篇文章的时候激情满满,觉得自己在做好事,但写的过程中一直诚惶诚恐,非常担心文中业余爱好者可能面临的问题都是自己臆想出来的。毕竟在这个行业待的时间不算短,早就变成了一个乏味的职业人士。如果你是一个想学习编程的业余爱好者,欢迎留言告诉我哪些担心是不必要的,以及漏掉了哪些东西,我会及时修正或补充。
原文转自:http://www.kuqin.com/pragmatic/20130627/334617.html