如果你想学习编程,做大量的练习性的项目是非常必要的。
摘录
http://kb.cnblogs.com/page/118494/
我从开发“Feross 的网站”的过程中学到了很多 HTML 知识,这次我使用了 Macromedia 公司(现在的 Adobe 公司)的 Dreamweaver 编辑器,这个东西能让我在网站的重复部分使用同一个模板。
一段时间后,我意识到,我应该让网站动起来,听说是应该使用一种叫做 PHP 的编程语言来做网站,而不是只使用静态的 HTML。于是,我花了20美元从 Amazon 买了一本书,叫做《PHP and MySQL for Dynamic Websites》,使用 PHP 和 MySQL 对网站进行了重新设计。我还给它进行了新的美化:
在中学,我在上计算机课程时做了大量的笔记。于是,在11年级时,我觉得应该把这些笔记放到网上,让那些不喜欢看课本的学生使用。我做了一个网站,叫做 StudyNotes,使用的是 PHP 和一个叫做 Joomla 的内容管理系统。我也尝试过使用 Drupal,但发现它太复杂了。
这段时间,我花了大量的时间泡在 WebmasterWorld 里,这是一个论坛,主要关于网站站长和 SEO 专家推测 Google 算法,讨论 AdSense 技巧,调试网站问题等。
关键一击
之后,在2010年夏天,当我在 Facebook 实习时,因为跟一个朋友打赌,我开发了 YouTube Instant,它是一个用来实时搜索 YouTube 视频的网站。这个网站在建成之后的10天里获得了1百万用户的访问量,YouTube 的 CEO 甚至给我发消息说提供一个职位给我,你可以从这里看到这些媒体的躁动。
继续前行
我注意到很多人使用 YouTube Instant 来听音乐视频,这让我想到了另外一种使用 YouTube API 的好方法。于是,我的朋友 Jake Becker 和我在2011年的头3个月里开发了 Instant.fm,它能让你轻松的向朋友分享音乐播放列表。通过这个项目我们都学到了很多新的东西。
继续前行
我注意到很多人使用 YouTube Instant 来听音乐视频,这让我想到了另外一种使用 YouTube API 的好方法。于是,我的朋友 Jake Becker 和我在2011年的头3个月里开发了 Instant.fm,它能让你轻松的向朋友分享音乐播放列表。通过这个项目我们都学到了很多新的东西。
在这个工程中我掌握的技术:
- jQuery
- CSS (和 Modernizr 以及 YepNope,用来解决跨浏览器问题的)
- Python
- Tornado (web framework/server)
- Git (版本控制) & GitHub
- Last.fm API
- YouTube API
- 团队合作
以及其它一些我们学会使用的东西:
- Nginx (web server)
- Supervisor (to daemonize Tornado)
- SQLAlchemy (ORM)
- Apache Ant (to build and deploy the site after a push)
动手去做!
我把从11岁就开始做的东西都不厌其烦的曝出来,目的就是要说,如果你想学习编程,你需要动手去做东西!现在就去。不要找任何借口。
做东西是最好的学习方法。
从头到尾读一遍编程语言书籍是一件很无聊的事,读到一半你就读不下去了。但,如果你想做一个项目,你在做的过程中会知道你该学习哪些知识,这是认识和掌握知识更有效的途径。
计算机课程
大学里的计算机课程是学习编程的另外一种十分有效的方法。大多数好的计算机课程都十分强调学习计算机科学领域里的重要概念和范式,而不是教你某个特定的语言。这能让那些从来没有接受过正规教育的人在自学时开阔眼界。
记得在斯坦福大学上第一堂计算机课程时(那是教授 C++ 的课程),我在想“怎么可能变量前不带$符号呢?”当时我只使用过 PHP! 我用了好长一段时间才改掉在变量前加$符号的习惯!
在软件公司工作
另外一个提高编程水平的方法就是到软件公司实习,比如 Facebook 或 Quora,最近的两个夏天我就是在这些公司里度过的。你会从那些优秀的人那里学会如何更好的编程,如何阅读和理解他人的代码,如何在大项目中进行团队合作。
还是那句话 —— 比什么方法都管用 —— 学习编程最好的方法就是做项目练习。我是不是重复这句话无数次了?
如何学会编程:
- 做练习性项目
- 看编程书籍
- 做项目练习
- 上计算机课程
- 做练习性项目
- 读编程类博客
- 做项目练习。
这就是我能给出的最好的建议。
祝编程愉快!