四个部分
这里大致列出了长短不一的四个部分知识要点,在你学习的前几个月里你需要掌握这些要点。
1)
2)
3)
4)
我把这几个部分标记为1到4,但这并不意味着它们之间存在任何特定的顺序。你可以同时学习这些东西。
第一部分:选择一种web框架,并开始学习它
在这个部分所需要花费的时间很像这种模式,即“选择一种web框架”=>“大概10分钟之内”。“学习这种框架”=>“很多很多个(快乐的)小时”。
现在有很多的web框架可供选择。而我要讨论的是Ruby on Rails,它是我所知道的最好的框架,因为到处都有关于它的优秀的资源。
那么,什么是web框架?我的理解是这样的:有框架之前,人们在决定做一个新的网站时,往往每次都需要添加一些相同的东西到新的网站。由于这些都是一些重复无聊的工作,所以程序员开发出了框架(例如Rails),这些框架能够把很多重复性的工作移到web开发之外。人们喜欢说,Rails代表“约定优于配置”。它的意思是,假如你想按照约定的方式开发,那么Rails会使web开发变得简单。
相关的资源:
我刻意只选择了无数Rails/Ruby资源的一小部分来说,因为可选择的资源实在太多了。
I、阅读
● Google。有些人在博客或论坛上写的内容可能正是你想知道的东西。当你遇到任何问题时首先去查找Google。
●
●
●
II、在进行I学习的同时,Hartl将告诉你Rails的工作原理。但是如果你不懂Ruby,那么太多的Rails会让你觉得像在变魔术。这里列出了你在学习Ruby时应该用到的一些资源,你应该按照资源列出的顺序来学习它们:
●
●
●
●
第二部分:学习前端的东西
对于“前端”和“后端”不完整/不准确的定义可能会是这样的:web开发中的“后端”是指你存储和组织网站数据的地方。例如Yelp这样的网站要存储很多东西:它的用户和用户的个人资料、大量的餐厅信息、哪个用户对一个特别的餐厅做了什么评价,等等。
Yelp把这些信息存储在服务器上,这些服务器就是分布在不同地方的大型计算机。当你搜索“Pizza in San Francisco”,你的计算机会发送一个请求到Yelp的服务器,Yelp服务器收到后回发HTML形式的请求信息(Yelp每次都以这种方式来指示服务器的行为方式)到你的浏览器,浏览器会被渲染(例如:将HTML分离成文本和图片,然后让这些图片和文本在浏览器窗口中以正确的方式显示出来)。这后面的一部分—有关数据应该如何出现在用户窗口的指令(而不是什么数据应该被回送)—就是“前端”。
相关的资源:
●
●
第三部分:学习版本控制(如:Git)
大致地说,版本控制系统使程序员能够在任何时间点及时的保存(正式说法是“commit”)他们的代码。当一个项目结束时,一个程序员可能已经积累了数百或数千份这样的代码备份。
我之前并没有意识到版本控制的重要性。当我在写一篇文章时,我并没有把我对文章做的每一次修改保存到Word文档中。当我写代码时,情况会有所不同吗?
事实证明,答案至少是两方面的。首先,程序员写代码时往往会导致意想不到的问题。当问题发生时,我们可以很轻松地回滚到上一个正常工作的代码版本。然后,程序员经常工作于同一个项目中。在这种情况下,他们需要能够很轻松地合并他们的代码。类似Git这样的版本控制系统(目前最流行的)可以很容易地做到以上两点。
相关的资源:
Hartl会向你介绍Git,但他不会解释得太多。要了解更多,去这里:
●
●
●
●
第四部分:学习如何部署(如Heroku)
当你开发网站时,绝大多数时间你都会在你的开发环境中去验证检查—换句话说,就是在你自己的电脑上,而不是在互联网上。
拥有这样一个开发环境的理由很简单:将你的代码上载到一个远程服务器需要一定的时间(例如,上载到互联网中一个实际的服务器上)。由于你的网站正处于开发阶段,你需要不断地检查你的网站,而每次当你上载新的代码时,你都需要20-30秒去等待服务器的响应,然后才能看到新代码运行的效果,这确实很烦人。
当你觉得准备好了,你可以很容易地使用Heroku来部署你的代码(Hartl说明了怎样去部署)。这里是在Rails3环境下设置Heroku的相关信息:http://devcenter.heroku.com/articles/rails3。如果你想建立一个自定义的域名,Heroku也提供了一个延伸的教程:http://devcenter.heroku.com/articles/custom-domains。
关于此路线图的一些重要想法
以上的这个资源足够你学习几个月的,但它们不会带你走得更远。我只是希望,在学习过那么多知识之后,你能够从自己建立的项目中学习提高。下面是一些离别的想法:
选择一个能激发你兴趣的想法,并在你觉得准备好之前就付诸于实践。我甚至建议你在完成Hartl教程之前就开始你自己的项目。工作于自己的项目,是让你迷上web开发最容易的方法。
我在这里提到了一些优秀的学习资源,当你要建立一个自己的网站时,这些资源只涵盖了很小一部分知识。时刻保持查阅未知知识点的习惯,不用担心—即使是最好的程序员也需要这样做。
你会经常地遇到bug和其它一些问题。这可能会让人沮丧,但你要尽量保持冷静,并系统地去思考。记住实践是解决问题的最佳方法,同时记录下那些经常出现的bug。当问题出现时,思考问题出现的可能路径(类似这样的推理过程:OK,我的用户无法正确登录。这可能由什么原因造成?嗯…这可能是A、B或C造成的。如果是A,我可能会想到…)。写出来或者大声说出来,如果这样有帮助的话。千万不要只是坐在那里,盯着代码,并希望能够顿悟。
与其它程序员一起工作,并向他们学习。与其他人一起编码并讨论代码,我觉得这是最快最有趣的学习方式(我非常推荐结对编程)。当然,你能够做的对自己最好的事情可能是去黑客学校。
祝你好运!
—————————————-
有些评论指出,由于web开发只是编程的一个子集,本文标题用“学习web开发”取代“学习编程”可能更好。他们的观点非常对,所以我希望本文的标题不会误导人们认为web开发就是编程的全部(其实还有很多,很多我们不懂的东西)。这么理解吧,web开发仍然是编程的一个子集,所以那些学习web开发的人同时也在学习如何编程。