知乎上看到一个问题 https://www.zhihu.com/question/54572105
我是在校学生,最近在一家公司实习,公司是一个小国家的 IT 业内相对较大的公司,而这个国家这么多 IT 企业貌似使用 Ruby on Rails(RoR) 的仅有我们一家。从国内外各种技术网站/门户/社区来看,RoR 在过去的这两年完全没有人气似的,现在是 JS 的天下,不是么?所以想求证下业界人士,RoR 是不是还有前途?
最近我的感觉可以总结如下
优势 | 劣势 | |
---|---|---|
公司 | 快速搭建业务逻辑 | 难招人,进而影响构建研发体系,优秀的小众技术反倒会成为技术团队发展的瓶颈 |
个人 | 能够全面接触 Web 开发 | 隐藏了底层实现,难以做到专精;大量精力花费在以业务为重心的技术实现上,而忽略了技术深度 |
2017 年,我也打算开几样新的技术栈。
不过,关于 Ruby 和 Rails,社区里诸位怎么看?
技能多开,确实是 ruby 程序员需要的。这里推荐一下,想深入网络编程的,可以实现一个 surge for mac with enhanse mode,囊括了网络层以及网络层以上的大部分常用协议和知识点。
“隐藏了底层实现,难以做到专精;大量精力花费在以业务为重心的技术实现上,而忽略了技术深度” 如果专精才是真正的问题的话,那么完全以市场导向学技术其实不能解决问题,多学多用的过程中挖挖技术深度会更好吧。
你的 pros and cons 很有道理。
你可以找一个
行业专家认真讨论一下,让他给你指条明路,然后坚定的走下去。
与其犹犹豫豫,比如按他的路先走下去,边走边调整。
我觉得有前途。
1.Rails 并非没人气。 Google 搜索趋势- Django,Rails 和 Laravel 可以看到在全球范围内,Rails 比 Django 和 Laravel 等热门框架还热门。结合实际看到的内容,Rails 社区活跃,框架稳步发展,应用广泛,并没有没落。
包含内容丰富,初期可以学习的东西多。Rails 在一定程度内是小型 Web 应用开发的最佳实践,默认包含了前端打包、Web 安全等等内容新。手或者初级程序员如果能掌握 Rails,能到熟练运用 Rails API 解决业务、能写扩展并且能理解背后的原理的程度,在学习过程中掌握的内容其实非常丰富,并且能反哺到运用其它语言、框架进行 Web 开发的场景中。
单兵、小团队开发效率高。Rails 结合 Ruby 语言,验证原型、做小型业务效率非常高。
生态圈质量好。因为在国内的小众,导致社区氛围和资料的质量都很好。不容易接触烂书烂资料。 --- 上面 1234 是 markdown 解析错了还是我排版错了。。。 ---
结合 lz 的总结我也提下自己的感受:
公司难招人:国内圈子小这个是事实,也是在国内做 Rails 的一个大缺点。不过国内应该有少数规模小、也不追求快速膨胀扩张的公司,做自己的产品和外包、咨询业务,这种场景用 Rails 没什么不好。也不需要招很多人。上规模的企业,会从各个方面去权衡利弊,也不一定会因为难招人一棍子打死 Rails。同时 Ruby 在测试、运维、开发工具里应用还算比较多?
个人难专精:我自己接触了四五年 Rails,花在上面时间不超过 200 小时,写的 Ruby 代码不超过 4000 行(但是其实用这些 Ruby 代码产出的成果和回报还不错。。),感觉已经从 Rails/Ruby 里收益匪浅了。 学点入门花不了多少时间,并非人人学 Rails 都要成为大师。
可以肯定没有前途,因为什么语言火跟潮流行业有很大关系.你 Ruby 在再害还不是需要求(要) 职 (饭).如果公司里面有决定权的人不懂或者不想用一门技术,一切都没用. 最近再看 Java/Spring 框架. 发现怎么恶心的东西居然能得到广泛的使用.真是应了句老话.得屌丝者得天下。
语言和框架相当于一个类型的车,悍马跟丰田,各有各的用处。 编程的经验和技术才是驾驶技术。 我觉得如果没有其他语言帮忙消化,rails 也深不到哪去。 驾驶技术精湛了,开什么车只需要个适应阶段。
学语言学框架都是表面的。你要能看透这些东西背后的本质。
比如 Ruby 这个语言,你要能看到他以消息为主体的 OOP 机制,随意打开类带来的灵活性以及可能被滥用导致难以维护的问题。你要能看到大范围使用 block 带来的便捷,这样还能顺便去理解函数式风格的程序。
比如 Rails 这个框架,你要能看到背后提供的最佳实践,要去搞懂为什么曾经 Rails 几乎就是硅谷创业公司的不二选择,以及为什么后来人们离开了 Rails 而转去用别的框架了。
如果「只会 Ruby / Rails」的话,那是没什么前途。只是码代码的话,学 Java 去就好了。
前几天 Quora 上也有讨论 Rails 是否还值得学,还引得 DHH 亲自回答。见 What makes Rails a framework worth learning in 2017? 。
个人看法,高度集成的解决方案总是有市场的,默认集成了很多最佳实践,可以节省很多琐碎的决策和时间,前提是你认可框架给你的大多数解决方案。Rails 一直走的就是这条路,也总是在很积极的吸收其他好的实践,所以也不算过时。而且前端再怎么变化,其核心也是更注重展示和交互的,后端功能总得有人写吧。前端现在少有高度集成的框架,原因也很简单,各个基础组件方面都还没杀出最终的优胜者呢,还不是时候选出“最佳实践”的集大成者。
不过现在其他语言的框架都吸收了 Rails 不少优点,并且也有各自的闪光点,比如我很喜欢 Laravel 单独抽了 validator 出来在 controller 那一层校验 params 的想法,更喜欢 Ecto 的 changeset。Rails 不再是领先“友商”X 年了的选择,但对于 Rubyist 而言仍然是个好选择。这有点类似 iPhone 的现状 -- 不再是唯一的选择,但仍然是部好手机,对果粉而言更是……
@novtopro 并没有说这是 Rails 不能做的。Changeset 也有 ROM 在尝试,进一步放到语言层面来看,又有多少特性是一种语言完全没法实现的呢?这里只是举个例子说明下各家对同一个问题的不同处理思路。
#4 楼 @easonlovewan 我并没有幻想学好 Rails 之后一劳永逸。 我这里有另一个说法,只会用 Rails,连操作系统的 TCP/IP 协议栈都不熟悉,也能称得上是 Web 开发者?
有些程序员的满足感来自于打造产品,Rails 确实很能满足这点。
有些程序员压根不在乎做什么产品,他们以美好的代码为食。他们在意高性能、架构。产品只是他们打磨技能的工具,而不是最终目的。
没有好坏之分,只是个性不同。
如果你是后者,我觉得非常不适合做 Ruby 程序员。使用 Ruby 的大都是创业公司。需求之多,根本让你无暇顾及性能问题。
另一个尴尬的事实是:在 Ruby 圈,有 5 个 Ruby 程序员的创业公司的就是豪华团队了。喜欢刨根问底的人会很孤独,很难找到合适的同侪 (导师) 讨论这种底层问题。
有些人因此迷失在迷雾中,永远在很低的游戏关卡徘徊不前。从一家创业公司跳到另一家写 CRUD,接触的用户量永远低于 100 万,永远对全表扫描视而不见,每个列都建索引,永远不知道写的每一行代码的 bigO,更不会知道 1000 万用户时效率。
当然,偶尔运气好的人会有大师提点,比如黄志敏、谢文威。以及在英语流利说遇到优秀的同侪。与其凭运气,还不如选择下面的策略:在一个大的平台写 Java,比如腾讯、阿里。
你虽然一开始无法接触到核心的代码,只能写一些简单枯燥的业务代码。但是你有更多机会和真正的大师协作,疯狂向他们学习。他们在自己领域深耕细作,提点一下就够你学一个月。然后你耐心花 1-2 年进入核心代码组,再磨砺十年成为领域专家。
其次,关于 Rails。我们都没有资格说它不好。因为我们写不出框架,即使写出框架,在生产环境的表现也很糟糕。不是合格的轮子,也没资格自夸。
如果你是 web 开发者,2017 年,我依然觉得 Rails 是值得学习的框架。
过去一年我都在恶补计算机基础知识,每明白一点都感叹:Rails 在做到最佳实践时,还可以如此简洁、高可维护性。
源码里可以学到大量的知识,而且都是计算机基础知识。
比如
等等,数都数不完。
如果你想在计算机领域走的更远,却对 Rails 优秀的设计视而不见,将来也没有能力/可能性写出你的成名作。
就像 Elixir 社区最著名的 web 框架的作者曾经是 Rails 框架的核心开发者。
Maria 的作者曾经是 mysql 的核心开发者。
功不唐捐,在学习上的每一笔投入未来都会有收获。
#25 楼 @xiaoronglv 同意 Ruby/Rails 本身的价值就值得我们借鉴学习. 很多事道法相同,但是技法就可能会相互冲突. 而且很多时候技术不是其决定因素的原因,甚至很多时候公司只需要找一个能够完成工作的庸才.
别的我不知道,反正在我家厦门这边找工作真心难,对于我这样的新手来说,找份关于 Rails 方面的工作,好难,还是 Java 好找点。前途不太清楚,不过用 Ruby 的新生代程序员估计会越来越少。
离职快两月了都还窝在家里的人路过。。。这么说吧,如果你是 ruby 程序员,那么钱途和前途都有,但是如果你是 rails 程序员,大概也就能做到饿不死。。依然建议在会 ruby 的同时会一门其他语言,最好是会一门系统级,一门跨平台,一门脚本,这样基本上只要程序员这个职业还存在,就饿不死
ruby 程序员转其他程序员难吗?你能做 ruby 能用 rails 开发产品,就证明你在用最佳实践的轮子,为了使用这些轮子,你要去他们的 github 或者官网上看他们的英文说明书 (因为中文版资料满足不了)...然后你学会了程序的最佳实践,然后你学会了无障碍阅读英文资料..有了这两个技能,你找其他语言的工作真的还会有难度吗?
其实不太同意楼上的一个说法:如果你是后者 (在意高性能、架构),我觉得非常不适合做 Ruby 程序员
好的项目和优质的代码是分不开的,所谓优质不外乎对性能和架构上的精益求精。而且最近一段时间一直在做性能优化相关的业务,并且现在一些 (大批) 公司就专门招做过性能优化相关工作的 ruby 开发者。