微信号:csdnbigdata

介绍:CSDN分享Hadoop、Spark、NoSQL/NewSQL、HBase、Impala、内存计算、流计算、机器学习和智能算法等相关大数据观点,提供云计算和大数据技术、平台、实践和产业信息等服务.

Web 2.0 创业神器为何天生敏捷?

2019-03-06 08:39 熊节


本文选自 | 《敏捷中国史》

作者 | 熊节

责编 | linse


“我自己估算了一下,同样复杂的 Web 应用,用 Rails 做的代码量,比一般的 J2EE 少很多,大概只有几分之一。”石一楹语速很快,“代码少就容易维护呀,再加上自动化测试啦、自动化发布啦这些基础工具做得又好,开发效率真的比用 Java 高十倍不夸张呀。”


“高十倍这么厉害,那不是找到银弹啦?”


“哈哈哈……银弹不敢说咯,用着爽是真的呀。现在想要做个网站,真的不想动 J2EE 嘞,一想要配置 Spring、配置 Hibernate,提不起精神来开这个头呀。Rails 快呀,一两天就做个网站出来,不费劲呀。”


01

Web 2.0 创业神器:Ruby on Rails


2004 年以前,互联网的主要存在形式是网站。不论大型的内容网站,还是小型的个人网站和博客,大多以单向的信息传播为主,用户可以进行的交互非常有限。


2004 年底提出的 Web 2.0 概念改变了这种局面。提出这个概念的 Tim O’Reilly 认为,下一代的 Web 不再是单向的信息发布平台,而是“基于个性化微内容,提供注重用户体验、可以参与的社会化服务平台”,更是以服务形式提供给大量用户、充分发掘用户长尾需求的软件发行机制——很多 Web 2.0 的系统已经被称为“Web 应用”而非“网站”。


这些特征也就意味着,下一代的 Web 需要包含更多的业务逻辑、应对更多的变动和不确定性。因此 O’Reilly 也指出,Web 2.0 需要轻量级的编程模型,以开源、服务化、松散耦合的方式来开发软件。Ruby on Rails 正是在这个背景下诞生的开发框架。


出乎很多人的意料,Ruby 并不是一种很新的编程语言。日本人松本行弘 1995 年就发明了这种编程语言,只比 Java 略晚几个月。但是在随后几乎十年中,Ruby 的热度与 Java 可谓天差地别。有人打趣地考证,热门的编程语言发明者都有大胡子,因此没有胡子的松本发明的 Ruby 才一直不温不火。


2005 年,可能和松本蓄上了胡子有关,时年 26 岁的丹麦创业者 David Heinemeier Hansson(常被人简称 DHH)从他的创业项目 Basecamp(一个在线项目管理工具)中提取出来的开发框架 Ruby on Rails 在很短时间内风靡了整个 Web 2.0 社区,捎带着 Ruby(而非 Java)成了那一时期很多创业者的首选编程语言。


Rails 与敏捷之间有着先天的联系,第一本全面介绍 Rails 的图书《应用 Rails 进行敏捷 Web 开发》(被读者简称 AWDWR )不仅把“敏捷”二字挂在标题上,跟 DHH 合作的另一位作者 Dave Thomas 本身就是敏捷宣言的签署人之一。


两位作者开篇即强调:“敏捷是 Rails 的基础所在……这里没有繁重的工具,没有复杂的配置,没有冗长的过程……开发者所做的工作能够立即让客户看到……用户和开发者共同发掘需求、寻找实现需求的办法…… Rails 也鼓励用户与开发团队合作,一旦看到 Rails 下面能够以如此之快的速度响应变化……客户与开发团队之间的对抗将被建设性的讨论取代”。之所以能达到这种效果,其原因是“Rails 强烈要求——甚至可以说是强迫——遵循 DRY 原则……对单元测试和功能测试的强烈重视,以及对测试套件和 mock 对象的支持,又给了开发者一张可靠的安全网”。


Rails 社区经常提及的一个观念是约定俗成优于配置(Convention over Configuration)——这也是一个敏捷宣言风格的表述。Rails 给人留下的最直观的印象是简单、开发效率高,据称开发同等复杂度的 Web 应用,Rails 的速度是 J2EE 的 5~10 倍。


这种效率,很大程度上源于以约定俗成的形式规定了 Web 应用开发的最佳实践,从而消除了 J2EE 开发中常见的大量复杂的 XML 配置,使开发者专注于业务问题。并且 Rails 提供的不仅是开发 Web 应用功能的开源组件,还包含一套完整的开发工具与实践。这种“手把手规定怎么做软件”的风格,用时任《程序员》杂志技术主编孟岩的话来说,“令整个 Web 开发领域受到震撼”。


具体而言,Rails 以“约定俗成”的形式强烈要求、甚至强制灌输给开发者的最佳实践有几大部分。首先是架构实践,Rails 以应用脚手架的形式,规定了 MVC(模型—视图—控制器)架构和数据库存取的绝大部分技术要素,后来的版本以同样的方式规定了 RESTful 服务的风格乃至 URL 格式。然后是测试实践,Rails 规定了单元测试、功能测试、性能测试三大类测试的写法,甚至直接在代码脚手架中给出了测试样例。Rails 提供的自动化构建实践也相当完善,开发者可以完全不用修改构建脚本,用 rake 执行代码统计、测试、本地运行等常用任务。


更进一步,Rails 还提供了部署和生产环境运维的最佳实践。DHH 建议开发者“尽早开始部署……从实际的部署中找出问题,并且获得解决这些问题的经验……尽早了解用户对应用程序的想法,会对你的开发工作获得巨大的帮助”。在当时的行业环境下,这种打通开发与运维的做法是一个极具开创性的主张,完全契合了当时面临极大不确定性的创业者们的诉求


02

Rails 的应用情况


2006 年 3 月 21 日,在一次头脑风暴聚会活动中,时年 30 岁、尚在纽约大学读研究生的程序员 Jack Dorsey 提出了一个点子:提供一个在线服务,让一群人可以通过短信互相交流。当天晚上 9 点 50 分,Dorsey 和他的队友们用 Ruby on Rails 实现了这个点子的第一个原型,在刚刚开发的系统上发布了第一条“社交短信”。


这个像个小玩具一样的系统,在十年后会拥有 3 亿月活用户,并成为当年美国总统竞选期间最重要的信息源,单日发布 4000 万条与竞选有关的信息。这个系统就是 Twitter,Web 2.0 时代最重要的社交网络之一。


Twitter 的故事包含了 Web 2.0 创业神话的一切经典要素:孕育于一次头脑风暴聚会,起初只有一个异想天开的脑洞,极大的不确定性,没有缜密的验证,立即开始实现,一天之内拿出可以运行的原型,病毒式传播……Rails 给创业者们带来的不仅是一种便利的开发工具,更是一整套关于“如何在 Web 2.0 时代创业”的方法论。


这套方法论后来总结完善,被称为精益创业(Lean Startup),其核心就是通过“构建—度量—学习”(build-measure-learn)的循环,快速地把点子构建成可工作的软件、对软件的真实使用情况进行度量得到数据、并从数据中学习产生新的点子。Rails 提供了快速构建软件的可能性,把这个循环的周期压缩到了极致:在一天时间里就可以开发出可用的软件,甚至可以进行几次迭代。

这种快速开发、快速获得反馈的能力,使年轻的创业者们开始热衷于一种充满“极客”氛围的聚会活动:黑客松(Hackathon)。这个将“黑客”与“马拉松”组合而来的词,很好地表达了其内涵:黑客们聚在一起,像跑马拉松一样进行一段长时间、高强度的软件开发。


一次典型的黑客松可能从星期五下班后开始,到星期天晚上结束,历时 54 小时。参与其中的不仅有程序员,还有企业家、设计师等各种角色。他们组成队伍,在两天多的时间里几乎不眠不休,靠高热量食物和大量咖啡因保持精力,力争做出一个有趣的新网站、新 App。当时这类黑客松活动大多采用 Rails 作为开发工具,也能反映出 Rails 不仅开发效率高、而且开发体验良好,否则牺牲周末两天时间连续编程恐怕无法吸引程序员参与。


Rails 的高效在中国技术社区也引起了关注。2008 年,ThoughtWorks 在北京举办了一次黑客松活动,在周末两天时间里,帮助公益组织“乡村教育促进会”搭建了用于农村教师和志愿者交流教学经验的网站。

同一时期,国内的 Rails 社区蓬勃发展,涌现了财帮子、友播网、乐道等 Web 2.0 创业项目, 以及好几个专注 Ruby 和 Rails 的技术社区网站。JavaEye 也在这段时间改版,由原来的 PHPBB 系统改为用 Rails 开发的新系统。据范凯称,选择使用 Rails 重写 JavaEye 网站,是受到了石一楹的影响。


另一些团队在使用 Rails 接离岸外包的工作,帮助北美和澳洲的互联网企业实现他们的点子。


尼毕鲁科技的创始人杨祥吉当时就在接单北美金融服务公司的外包业务,他认为 Rails 的优势“不仅是快速高效,更重要的是优雅简洁”,并且强调敏捷(尤其是测试先行、结对开发、短周期迭代、每日晨会等实践)在此类项目中的重要性。ThoughtWorks 中国区也先后承接了来自喜达屋(StarWood)、LonelyPlanet、REA 等外国企业的 Rails 外包项目,并开发了在企业 IT 环境下支持 Ruby on Rails 的 RubyWorks 系列产品。到 2012 年前后,ThoughtWorks 在西安使用 Rails 的团队有数十人规模,可能是当时中国最大的 Rails 团队。


Rails 从核心哲学上就深受 Dave Thomas 等全球敏捷领袖的影响,引入中国时又与石一楹、范凯、ThoughtWorks 等敏捷先锋有着千丝万缕的联系,深植其中的测试驱动开发、快速迭代、持续集成等敏捷实践又通过众多创业团队和尼毕鲁这样的外包交付团队影响到更多的从业者。Web 2.0 浪潮把动荡、不确定的互联网时代真真切切地带到了中国 IT 从业者面前,让敏捷的原则和实践找到了用武之地


以上内容节选自《敏捷中国史》

扫码免费试读



GitChat 作者

熊节,现任宝尊电商成都研发中心总经理,曾任 ThoughtWorks 总监咨询师、 CSDN 技术主编。 IT 行业打拼 18 年,在金融、零售、政府、电信、制造业、全球医疗等行业的信息化建设方面有着丰富经验。


翻译了《重构》《软件工艺》《实现模式》等行业重要著作,是中国 IT 浪潮中敏捷发展的领航者之一。熊节拥有利物浦大学 MBA 学位。


插图 | 虎头锤,旅居墨尔本的老程序员,北邮博士、北大硕士,15 年编程经验。目前从事支付系统相关业务,曾转战区块链、通信行业。敏捷倡导者、手绘爱好者。


点击「阅读原文」了解中国软件工程 20 年发展脉络,与资深程序员突破技术瓶颈的故事。

 
CSDN大数据 更多文章 今日头条的推荐阅读你为什么都喜欢? Python ,AI 时代的第一开发语言! 10 分钟用 Python 搞定数据可视化! 不学设计模式,源码你都看不懂! 轻量级编程模型、Web 2.0 创业神器 Ruby on Rails&nbsp
猜您喜欢 利用CSS变量实现令人震惊的悬浮效果 程序员的武林秘籍 大数据如何玩儿?这是BAT的不同思路 Linux在线培训班招生介绍! Android探索之旅 | 开发资源大搜罗!