经过这一小段时间的折腾,觉得新手最大的坑就是“误以为可以零基础”。
大家罗列下自己觉得开始学 rails 之前必须会的东西呗?
比如,我就觉得对外行来说,掌握一个编辑器(textmate/sublime text)的使用很重要。
哈,怒水的一个贴……
html、css、javascript、jquery。动态网页原理,asp 和 php 入门教程开篇都有介绍,但 rails 假设用户都懂这个了。
技术社区还有个流传甚广的误区:“精通从底层入手,懂了底层就懂了应用层了”,于是乎,为了精通 JAVA 去啃 C 语言,为了精通 C 语言去啃汇编。因为潜意识里觉得 JAVA 是 C 语言开发的,C 语言是 JAVA 的爸爸,汇编是 C 语言的爸爸,懂了爸爸,就懂了儿子了。于是 ruby 也被当成了 rails 的爸爸
#2 楼 @gaicitadie 同意你的关于底层和应用层的观点,写 ruby 不需要懂 c,即使 ruby 底层是 c 实现的。但你的这些类比不成立。ruby 和 rails 之间的关系不是你说的底层和应用层的关系。
找几个有 web 开发经验的人,只给他们 rails 文档,让他开发几个应用,看会出现什么问题就知道学 rails 需不需要会 ruby 了。
有了这些就差不多了。我推荐学 Rails 前花时间学下 Rack 和 Sinatra, 可以让新手对 Ruby 开发 Web 有个很好的基础。再有就是 Rails 本身的东西了
编辑器,git, javascript, jQuery, 部署,测试,面向对象,深度理解 Ruby,Passenger, Rails 里面的 asset pipeline, coffeescript, sass, haml, 等等这些都是坑。ruby-china 上面的大多数帖子对新手都是坑。
掉进坑里直接的后果是爬不出来耽误时间,但更重要的是让新手灰心,觉得这东西太麻烦了我还是回去做我的 PHP 吧。学习这个东西,没有人是因为没钱了,或者没时间了而不学了;绝大多数是觉得太难了,不好玩了,学不懂。学习 Rails 三个月,还是不能独立开发一个简单 App, 肯定是会有挫败感的。
新手上手的时候最重要的是要知道两件事:1)怎么避免坑 2)怎样最大化进步感
这两点新手不可能自己做到,所以我一直在强调导师的重要性。
#5 楼 @gaicitadie 拦路虎往往并不是高级特性,都是一些很基本的问题,你可以翻翻新手问题里的帖子,看看哪些问题高级?
真正开发也是一样,实际的核心代码花费不了多少时间,浪费时间的是 debug,是对细节的调整,ruby 不熟悉就会在小问题上浪费大量时间,甚至没办法继续编码。
这也是开源平台的一个特有的情况,就是技术点碎片化。 因为很多都是不同的人贡献的,所以,每个小东西都需要学。 不像当年 M$做一个 IDE,大家就用这个就够了。 我就在 rspec 上面卡了很久。 直到看了 codeschool 的那个课,上面总结的太好了。 顺利通过。
我也是误以为零基础,然后发现看http://huacnlee.com/blog/how-to-start-learning-ruby-on-rails/ http://readful.com/post/12322300571/0-ruby-on-rails 这些新手导航,开始学 Ruby on Rails Tutorial Learn Rails by Example 和 Web 开发敏捷之道这些东西,但是发现看不下去,自己只是死板地照着书上一步步做,很多东西并不理解,然后就暂时放下了。
每个人的基础都不一样,Rails 开发似乎要求掌握 Web 开发的各个方面。而一本 Rails 的入门书显然不可能让新手全部学会,最多用一章带过。
于是决定一步步先学点基础,之后再看 Rails。个人到现在还是小白一个,以下只是我的学习计划,不知道合不合理?请前辈指点。
Ruby
随便翻翻书,熟悉一些高级特性,写一些脚本,写一些几百行的小程序,尝试写一个 Gem The Ruby Programming Language Metaprogramming Ruby Eloquent Ruby Programming Ruby Everyday Scripting with Ruby Ruby Cookbook Ruby Best Practices The RSpec Book …
Web
用 Sinatra 写一些简单的程序,熟悉 HTTP 写简单的 HTML 和 CSS 学习 Javacript 学习 Datebase and SQL
因为是学生,时间还是很充裕的,Ruby 真的是一门令人喜欢的语言,没事情的时候学习下新的东西,也是令人开心的。
#21 楼 @happypeter 好啊。
其实选择用 Linux 的这些多半没问题。倒是很多 Mac 用户从没开过 Terminal 的,Windows 的用户还是 VirtualBox 吧,开发会真的很痛苦
#23 楼 @xiaolai 听说过没用过,很有意思。我对这个还有 Chef, Puppet 这些都感兴趣, @happypeter 有计划做这些的 Screencast 么
社区有几个 ruby 是他第一门语言的?大多数都在 ruby 之前已经熟悉多门语言,那些语言里的 OO、模块的概念跟 ruby 里的大同小异,转换语言的时候大部分知识点可以传承。但是从其他 web 框架转 rails 很多概念都是 rails 独有的。对于只用 php 写过网页或根本就没开发过 web 的 coder,如果学 rails 挨了当头一闷棍,这棍子不是 ruby 砸出来的
#11 楼 @xiaolai 支持去上 @knwang 的课,一定能让学习曲线平滑很多。在课余时间,不知道笑来老师有没有兴趣互相帮助一下。我和 @poshboytl 可以提供你学习过程的辅助辅导,你可以帮我们 review 一下英文内容,:)
#36 楼 @xiaolai 哈。可以 GTalk 上找我,[email protected]. 或者考虑一下其他方式。
PS:其他朋友也可以加我,:)
我说说我,学习 rails 之前做过 php,了解 http,了解一点 html,css,js,用过 mysql,2 年的 linux 和 vim 使用经验,再加上大学的各种基础的东西。 最终要的是,有一颗爱折腾的心~
rails 零基础,是说 rails 本身零基础,并不代表你不需要 ruby 的语法基础,编程思维基础,html 基础,css 基础,javascript 基础,http 基础,数据库基础,xml 基础。
rails 确实不好掌握,ruby 本身水就很深,而且 rails 是做企业开发的架子,要用来做互联网就得破坏性创新,一旦成功威力巨大,所以来到本论坛的都是没淹死的
不赞同你的观点
你所谓的 Rails中的很多理念' 除了极少部分来自于除了RESTful 和 , 真没啥东西了.
剩下的理念, 几乎全部都是来自于
Ruby` (MVC, SQL 例外), 除了以上我说的部分,剩下的只有概念了,大量的概念,头晕~~
还有你 2 楼的观点,前面扯的内容和最后的论据 所以ruby也被当成了rails的爸爸
, 根本不搭调呀。为了精通 Java 去学 C 语言,为了精通 C 语言去研究汇编,这是假爸爸, 但是 `Ruby 是 Rails 的真爸爸'.
web 开发无非就是对数据库的增、改、删、读,ruby 基础的函数、OO、块这些知识对 web 开发已经足够了,元编程虽然 rails 用的很多,但是用 rails 开发 web 基本上用不到。
前几天看到个讨论怎么实现连减的帖子,各种简便的实现方式精彩不断。但是这种技巧对 web 开发的效率提升几乎为 0。有时间去思考那个还不如思考一下怎么布局一个论坛、一个商城,去思考怎么规划各个模块,怎么实现业务逻辑。这些东西才是 web 开发真正的价值,虽然实现这些东西都需要写 ruby 代码,但是可以认为与 ruby 无关。再打个比方,语言学家不一定能写出优秀的小说,甚至写不出像样的小说。
会有新人在困惑,为什么我写不出 ruby-china 呢?为什么写不出 iteye、twitter、微薄?甚至写一个网站都不知道怎么开头,他们困惑的时候会找这样的帖子寻找答案。如果从精通 ruby 去寻找突破口,那么可能会离 web 越来越远,迷上了磨刀,却对砍柴失去了兴趣
会写代码不一定能做好的项目,是有基础知识的积累的,比如算法,数据结构,操作系统,数据库,这些必须有相应概念,如果做高性能系统,还需要了解各种流行架构,cache 系统,分布式系统等等,光单纯的程序员竞争力是不够的
web 开发哪儿有什么 0 基础,html,css,session,cookie,http 协议等等不说精通,至少要真的很明白,好在这些知识都是通用的,rails 受大家欢迎也是因为其视图模板可以用 html 来写,在我看来比 asp.net 是漂亮多了
我倒是觉得,新手不要太介意自己“什么也不懂”,教程上看不懂的东西,要么暂时跳过,要么就先死记硬背下来,走完整个教程,逼着自己去写一个完整的应用出来(即使大部分内容都看不懂,靠 Google + 复制粘贴 + 靠谱的提问也能做到),然后再慢慢深入学习各方面的知识。
想当年我在 VB 和 Delphi 里拖控件的时候,连什么叫变量都不知道,第一次用 C 语言写代码时完全不懂 malloc 的使用,在 N 次 trail & error 之后程序才成功地编译 & 运行……
BDD 一般指的是 Behavior Driver Development 的了。我说的 Browser Driven Development 是半开玩笑的。除非 prototype 非常简单,业务也非常直白,写些测试还是需要的,尤其涉及到钱。
不过意思还是这样的。程序员和创业者的思路是很不一样的,而“程序员创业者”这个职业只是在最近几年才开始形成小气候,而大部分人也是在摸索中前进的。所以看互联网 Start up 里面真正由程序员做出来的总体比例其实并不大(但是少数成功的一般都会做的很大)。经验要积累,所以创业要趁早啊。
其实 rails 并不是适合 没有一点 web 开发经验的人,一个 asp 开发者都比一个精通 ruby 的人 要好的很,因为至少他知道 web 原理,加上一点 元编程的知识 就可以开始 rails 了。