对于一些没有编程经验的人来说,一开始学习web开发会让人觉得非常困难。因为你的能力处于初始阶段(你根本不知道你缺少哪方面的知识),所以在你能够建立一个任意复杂的网站之前,你可能会认为你需要大概几个月的时间来夯实计算机方面的基础知识。

 

  其实并非如此!web开发和CS是不同的,你完全可以在没有太多计算机基础的情况下开发学习web开发。我这样说,完全是根据我自己的经验。


  六个月前,当我开始学习web开发时,我还是一个法律学校的在读学生,而且几乎不懂任何关于编程的东西?仅仅在开始学习的前几个小时了解过一些基本知识。四个月后,我收到了来自Pivotal Labs的offer,接着我离开了法律学校,搬到了旧金山。我非常的幸运地遇到了一位极为导师(从黑客学校获得的收获不能忽视),所以我不认为我的故事非常具有代表性。但是我认为这很清楚的表明那些没有计算机背景的人同样可以成为web开发者,而且它所花费的时间可能比你想像的要少。

  这篇博文是为了尝试帮助那些刚开始学习web开发的人们。这里展示了一个大概流程,这个路线图会“告诉你在初的几月里需要做什么”,它也是我开始编码所遵循的路线。


  写这样一篇博文的想法已经在我脑海里有一段时间了,只是我认为自己知之甚少,所以始终没有提笔。在写这篇文章时我还是觉得自己知道的不限,所以如果你在下面的文章中发现任何错误与不正确的地方,请一定帮我指正。


  四个部分

  这里大致列出了长短不一的四个部分知识要点,在你学习的前几个月里你需要掌握这些要点。

 

  1) web框架的基础知识(如Ruby on Rails),又名“包含网站模块及它们之间连接结构”。

  2) 前端开发,又名“如何使内容出现在正确的位置上,而且在浏览器中表现得好看”。


  3) 版本控制,又名“如何使用免费易用的软件,使程序员能够有组织地保存他们的程序版本。这样他们不用担心修改代码所带来的版本混乱,同时也能够很好地与其它程序员协同开发”。

  4) 部署,又名“如何真正地将你的网站放到互联网上”。

  我把这几个部分标记为1到4,但这并不意味着它们之间存在任何特定的顺序。你可以同时学习这些东西。

 

  第一部分:选择一种web框架,并开始学习它

 

  在这个部分所需要花费的时间很像这种模式,即“选择一种web框架”=>“大概10分钟之内”。“学习这种框架”=>“很多很多个(快乐的)小时”。

  现在有很多的web框架可供选择。而我要讨论的是Ruby on Rails,它是我所知道的好的框架,因为到处都有关于它的的资源。

  那么,什么是web框架?我的理解是这样的:有框架之前,人们在决定做一个新的网站时,往往每次都需要添加一些相同的东西到新的网站。由于这些都是一些重复无聊的工作,所以程序员开发出了框架(例如Rails),这些框架能够把很多重复性的工作移到web开发之外。人们喜欢说,Rails代表“约定优于配置”。它的意思是,假如你想按照约定的方式开发,那么Rails会使web开发变得简单。

  相关的资源:

  我刻意只选择了无数Rails/Ruby资源的一小部分来说,因为可选择的资源实在太多了。


  I、阅读 Michael Hartl’s精彩且免费的确Rails教程。一个提示:Hartl的教程虽然非常的清晰全面,但你也不可能轻松的完全理解里面的所有内容。细细地去品味它,一旦你发现一些不能理解的东西时,你一定要弄清楚。如果你发现自己只是盲目地去复制/粘贴它的代码,只是为了完成而完成教程,那么请你停下来。当遇到不懂的知识点时,立即去下面的资源中查找:


  ● Google。有些人在博客或论坛上写的内容可能正是你想知道的东西。当你遇到任何问题时首先去查找Google。

 

  ● Stack Overflow。在那里程序员回答问题的速度让人吃惊(我的问题往往都在一个小时内得到答案)。

  ● Railscasts。Ryan Bates拥有超过300与Rails相关的线上直播主题。非常惊人的资源。


  ● Rails Guides。这些真正的专业指南是由Rails的核心团队成员所写。这些里面的东西需要时间去消化理解(因为里面的大多数内容都是给有经验的程序员准备的),但是还是有一些介绍性的东西可以拿来学习。

 

  II、在进行I学习的同时,Hartl将告诉你Rails的工作原理。但是如果你不懂Ruby,那么太多的Rails会让你觉得像在变魔术。这里列出了你在学习Ruby时应该用到的一些资源,你应该按照资源列出的顺序来学习它们:


  ● 前往Codecademy学习编程的基本元素(循环,数据结构)。目前Codecademy教程是用Javascript讲的,不过没关系?反正无论如何你也是要学Javascript的,况且现在的重点主要是熟悉编码的基本要素。(强烈建议:如果你想让学习更有挑战,登录projecteuler.net,然后用自己所学的东西来解决上面的一些问题)。


  ● 阅读浏览这个的Ruby教程。当你阅读它时,打开你的终端(如Mac上的iterm),打开irb(the interactive ruby shell),并立即开始实践你正在学习的语法。(搜索“terminal”和“irb”,如果你压根不知道它们是什么。)

 

  ● 在做上述工作的同时,下载并阅读Ruby Koas。它是一系列丰富有趣的练习,这些练习涵盖了大多数Ruby的基础知识。

  ● 后,阅读Eloquent Ruby。Eloquent Ruby适合那些对编程已经达到某种程度的人,所以在你读完Koans和Ruby教程之前不要去读它。Eloquent Ruby将不仅告诉你Ruby的工作原理,还会告诉你应该如何使用Ruby(例如,Ruby程序员决定的方式是好的实践方式)。

  第二部分:学习前端的东西

  对于“前端”和“后端”不完整/不准确的定义可能会是这样的:web开发中的“后端”是指你存储和组织网站数据的地方。例如Yelp这样的网站要存储很多东西:它的用户和用户的个人资料、大量的餐厅信息、哪个用户对一个特别的餐厅做了什么评价,等等。