三、善用 GithubGithub 对于程序员来说,是一种生活方式。越来越多的公司在招聘时,技术负责人会关注求职者的 github。我所在的公司 100offer,也鼓励用户在填写简历时附上自己的 github 主页。这是 Feross 的 github:当然,为了表面好看去刷提交次数或者 star,是没有意义的。善用 github,对求职、精进自己的代码水平、扩大在同行中的影响力,都有非常好的正面作用。四、Feross Aboukhadijeh 是如何学习编程的Feross Aboukhadijeh 在自己的博客上记录了自己学习编程的经历,同时发表在 Quora 上获得了四位数的赞同。现在全文翻译如下:我是怎么学习编程的——别人常常问我这个问题,特别是在我建立了 Youtube Instant 网站并被很多媒体报道之后。在这里我决定分享我的经历。一句以概之:

我学习编程的方法,就是大量创建网站。我在很小的年纪就开始学习编程,学习的方法就是创建大量的网站。下面我将介绍几个自己创建的网站,其中最早的一个,是我在 11 岁的时候开发的。我希望读者能从我的叙述中了解到:如果你想学好编程,做大量的练习性项目是非常重要的。

学习一种技术最好的方法就是练习、练习、练习。我知道的所有优秀的程序员都非常享受编程——编程是一件让他们乐在其中的事情,所以他们大量编程,甚至常常到达废寝忘食的程度。学会如何编程——还有如何做好这件事——并不需要有超出常人的能力。只要你愿意动手开始做就行。

下面就是我如何学习编程的故事:

我的第一个网站在我十一二岁的时候,我决定给自己做一个网站。我记不清那时为什么想到要做一个网站,只记得这样我便开始做了。于是,我开始在网络上搜索关于网页、浏览器、HTML 工作原理的知识。

虽然在这过程中,我发现网上很多信息已经过时了,甚至是明显的错误(例如为 IE 和 Netscape 浏览器分别建立网站),但这个过程让我觉得非常有趣,学到了很多新知识。

尽管在网络上得到的信息质量层差不齐,我最终还是完成了一个简单的网站,我称之为Feross的网站。我用 Frontpage 开发了它,那是一个很棒的所见即所得的 HTML 编辑器。

我用很常见的语法,比如粗体和斜体对网站做修改,在编辑器里即时查看这些 HTML 标记的效果。这是个非常有效的学习方法。

这是我的第一个网站的截屏,现在它已经不存在了。这个截图不能完全反映网站的状况:事实上,网站上的每个元素都在动,有闪烁的动画,还有声音。

我在网站的每个网页上都放了不同的 MIDI 格式的歌曲,并且全是自动播放,无法把它们停下来,除非把电脑设成静音。哈,在当时这是很流行的网页设计风格。

过了几年后,我重新设计了这个网站,使它变得更美观。我在网上找了一些免费的网站模板并使用它们,还用微软的画图工具修改图片。虽然我在建立网站的过程中大量依赖现成的模板,但这仍然不失为一个学习 HTML 和 Web 浏览器的好方法。Feross的网站除了用来收集我小时候的一些视频外,没有其它用处,所以不久后我便对它失去了兴趣。

我第一个真正的项目

在我9年级,也就是我14岁的时候,我和朋友们都沉迷于在 Newgrounds 和 eBaumsWorld 等网站上观看 flash 视频和动画(这是2005年之前,那时 YouTube 还没有出现)。我每天花大量的时间泡在这些网站上,所以我熟知所有最棒的视频和游戏。

我产生了一个想法:如果我做一个网站,收集所有我喜欢的 flash 动画、视频、游戏,那真是一件非常酷的事情。于是我便做了 FreeTheFlash 网站,它是这样的:感谢我在开发Feross的网站过程中学到的 HTML 知识,同时我还使用了Macromedia 公司——也就是现在的 Adobe——制作的 Dreamweaver 编辑器,通过这个软件,我可以在网站重复的页面上使用同一套模板。

过了一段时间,我想到可以让网站动起来。我听说可以用一种叫做 PHP 的编程语言来做(动态的)网站,而不是只用静态的 HTML。

于是,我花了20美元在 Amazon 上买了一本书,叫做《PHP and MySQL for Dynamic Web Site》。我通过学习,使用 PHP 和 MySQL 重新设计了网站,同时还对它进行了新的美化:在我读高中的时候,我对 FreeTheFlash 网站的开发持续了2年。这是我第一次尝试做一个真正的网站。

对于一个初手来时,这个网站是成功的——在 2006 年,它获得了 60 万人次的访问,以及 300 万的页面浏览量。FreeTheFlash 让我感受到,做出一个成功的产品并看大量的人使用它,是一件多么自豪的事情。从此,我决定做出更大更好的网站。

我的第二个网站

在中学时期,我在计算机课上做了很多笔记。在我11年级的时候,我决定把这些笔记放到网上,让那些不喜欢看课本的学生使用。

我做了一个叫做 StudyNotes 的网站。在开发过程中,我使用了 PHP 和一种叫做 Joomla 的内容管理系统。我也尝试使用 Drupal,但最后发现它太复杂了。还是这一年,我为我的学校的 Key 俱乐部建立了一个网站。

在这段时间里,我花了很多时间泡在 WebmasterWorld 论坛里,这里有很多网站站长和 SEO专家,他们推测 Google 的算法,讨论 AdSense 技巧,调试网站问题等。

大量的学习和阅读

在我进入斯坦福大学后,我学习了大量的计算机课程,诸如 CS106X 和 CS107,我还提前学习了一些 CS106 课程。

我把所有的课余时间都花在阅读设计、编程、浏览器和 JavaScript 等领域的资料,平均每天 4-5 个小时。

我在读些什么?五花八门,什么都有。其中有大部分,是我敬仰的设计师和程序员写的博客。

一件意义重大的事

那是 2010 年的夏天,我在 Facebook 实习的时候,因为和一个朋友打赌,我开发了 YouTube Instant 网站,它可以让人们实时搜索 YouTube 上的视频。

这个网站在建成后的 10 天里获得了一百万用户的访问量,甚至连 YouTube 的 CEO 都表示愿意给我一个 offer。

我很清楚地明白,YouTube Instant 的成功归功于好时机和幸运。继续前进我发现有很多人使用 YouTube Instant 来听音乐视频,这让我想到了另一种使用YouTube API 的好方法。

浴室我和朋友 Jake Becker 在 2011 年的前 3 个月里开发了 Instant.fm,它能让人们轻松地向朋友分享音乐播放列表。通过这个项目,我们学到了很多新东西。在这个项目里,我学到的技术:

CSS (以及 Modernizr 和 YepNope,帮助人们解决跨浏览器问题)

Git & GitHub

Last.fm API

YouTube API

团队合作

还有其它一些我们学到的东西:

动手去做

我详细叙述了我从11岁开始做的东西,就是希望能告诉你:如果你想学习编程,你需要动手开始做!现在就去做,不要找任何借口。

动手做是最好的学习方法。

把编程语言书从头读到尾是一件很枯燥的事,常常读到一半你就坚持不下去了。但如果你打算做一个项目,你会在做的过程中明白自己应该学习哪些知识,这是学习知识更有效的途径。

计算机课程

大学里的计算机课程,是另一种十分有效的学习编程的方法。那些好的计算机课程,都十分强调学习计算机科学领域里的重要概念,而不是局限于教会某个特定的语言。这可以帮助那些没有接受过正规教育的人在自学时开阔眼界。

我还清晰地记得,在斯坦福大学里我上的第一堂计算机课(那是一堂关于 C++ 的课程)。当时我还在想变量前怎么可能不带 $ 符号呢?——因为那时我只使用过PHP :-) 我用了很长一段时间,才改掉在变量前加 $ 的习惯。在 IT 公司工作

另外一个提高编程水平的方法,就是去 IT 公司实习,比如 Facebook 或者 Quora。最近的两个夏天里,我就是在这两个公司里工作。你可以从优秀的同事那里学会如何更好得编程,如何阅读和理解他人的代码,如何在大项目中进行团队合作。

还是那句话——比什么方法都管用——学习编程最好的方法就是做项目练习。

如何学会编程:

做 side projects

看编程书

做 side projects

上计算机课

做 side projects

读编程类博客

做 side projects

这就是我能给出的最棒的建议。

以上内容来源于网络,若涉及版权问题烦请联系我们

~ 分享是一种积极生活的态度 ~