六个故事,如何从头开始重写代码

重新审视这个古老的问题:应该重新编写应用程序,还是“软件开发人员可能犯的最严重的战略错误”? 事实证明,使用成熟的代码库时,有两个以上的答案选项。



“源代码似乎生锈了 !” -乔尔·斯波斯基(Joel Spolsky)

大约二十年前, Joel Spolsky在他的史诗文章“ What You Never Never Do”中上演了Netscape重写浏览器代码库的活动。 他得出的结论是, 永远不能从头开始重写功能正常的软件 。 他有两个主要论点:

  • 代码库中可能出现垃圾的部分通常包括有关边界情况和奇怪错误的来之不易的知识。
  • 完全变更是一个长期的企业,其注意力不放在改进现有产品上,而后者将王牌提供给竞争对手。

对于许多人而言,乔尔的发现已成为教条。 一次他们对我产生了很大的影响。 但是在随后的几年中,我意识到在某些情况下完全重做产品仍然有意义。 例如:

  • 有时过时的代码库实际上是不可恢复的,因此,即使是简单的升级也需要在代码的其他部分进行级联更改。
  • 原始技术解决方案可能会干扰必要的改进。
  • 或者,原始技术可能已过时,从而很难(或太昂贵)雇用合格的开发人员。

当然,实际上很大程度上取决于环境。 是的,有时候逐渐重构过时的代码是有意义的。 是的,有时候将所有东西扔掉并重新开始是有意义的。

但这不是唯一的选择 。 让我们看一下六个故事,看看可以学到什么。





1. Netscape



浏览器代码从头开始被重写了三遍

Netscape从5.0到6.0的灾难性转变是乔尔·斯波斯基(Joel Spolsky)提到上述文章的机会,许多人认为这绝不应该做。

Netscape Navigator于1994年发布,这是商业Internet的早期。 两年后,该公司以30亿美元的IPO开启了互联网时代。

Netscape的第一个主要竞争对手是1996年发布的Microsoft Internet Explorer。

1998年初,Netscape仍然是领先的浏览器,但是难度很大。 Netscape是一个商业程序,售价为49美元,微软免费提供了IE,并将其作为Windows上的默认浏览器提供。



随着Netscape 4.0的发布,该公司宣布下一版本将是免费的,并将由由Mozilla创建和资助的开源社区开发。 在当时,这实际上是前所未有的举动,而Netscape如此大胆的决定赢得了很多支持者。 但是实际上,这种“社区”实际上并未实现。 首批浏览器开发人员之一Jamie Zawinski 解释说

事实是,Mozilla项目涉及大约100名全职Netscape开发人员和大约30名自由开发人员,因此该项目仍由Netscape完全拥有。

该团队得出的结论是,外部开发人员对该项目不感兴趣,包括由于代码库中的混乱:

原来代码太复杂且难以更改,因此人们没有做出贡献。这就是我们改用新引擎的原因。 更干净,更新鲜的代码库,更易于理解和加入开发。

从头开始


因此,一年后,该小组决定不发布发行版就放弃5.0,并着手从头开始开发6.0版。

Netscape 6.0的准备工作耗时两年。 即使如此,也很明显浏览器是原始的。 根据《纽约时报》专栏作家大卫·波格 David Pog)的说法,浏览器运行了整整一分钟(!),并消耗了RAM。 它缺少以前版本中的许多简单的可用性功能:

打印预览功能消失了,并且可以将站点地址图标直接拖动到书签菜单中。 同样,您无法通过右键单击将网址复制或粘贴到地址栏中。 每次开始工作时,您都必须更改窗口大小:导航器不会记住以前的状态。 但是最不愉快的缺点是您不能一键选择整个地址栏。

但这几乎无关紧要,因为在Netscape停滞的三年中,Internet Explorer占据了剩余的市场份额:


当浏览器优化开始时,Netscape很快就输给了Microsoft Internet Explorer。 三年后,新浏览器问世了,它的错误和缓慢。 同时Netscape的市场份额下降到几乎为零(图表摘自Wikipedia

1999年,当浏览器的重新设计如火如荼时,AOL以100亿美元的价格收购了Netscape,在Netscape 6.0发布两年后,Netscape的AOL部门被清算。

由Netscape创建的开源社区Mozilla将继续存在并在2002年启动Firefox浏览器,这是另一个干净的项目。 Firefox设法让一些留给Microsoft的用户返回。

但是Netscape作为一家企业已经死亡(由于2012年与AOL的交易,微软将把Netscape的知识产权遗体埋葬)。

在赢得这场战斗之后,微软拒绝对浏览器技术进行投资。 Internet Explorer 6.0在2001年发布,并且五年没有更新。 有人认为这是故意阻止互联网作为应用程序平台的推广。

结论


有些人认为,从头开始重写不是灾难。 最后,由于这一点,Gecko引擎和Firefox浏览器最终出现了。

但是,在IE6无休止,令人窒息的垄断之下,我们所有人都不得不忍受多年的网络技术停滞,同时我们期待着一种新的浏览器,它将为整个行业注入生命。 IE6时代的结束不是由Firefox,而是由Google Chrome。

无论如何,这都不关乎项目如何影响互联网。 这是关于公司的结果。 网景之死不能归咎于这些原因: 法院同意微软故意滥用其垄断地位。 但是,当然,从头开始重写所有内容的决定是一个重要因素,并导致最终结果:一家价值数十亿美元,裁员数千人的公司遭到破坏。 因此,我同意乔尔的观点,这一决定最终结果是灾难性的





2.大本营




在2000年代初期,位于芝加哥的Web设计工作室37signals因其具有影响力且经常引起争议的博客而闻名,该博客由创始人Jason FriedDHH共同创立。

当我刚开始进行网页设计时,他们引起了我的注意,并提供了一系列文章,其中包括错误的设计示例以及如何为Google和PayPal等网站进行重新制作的选项。 该项目被称为37better




大约二十年后, 重新设计了37signals FedEx交付表格(如上)仍比实际设计要好。

该公司有一个供内部使用的项目管理系统 ,他们于2004年作为名为Basecamp的SaaS服务发布了该系统

SaaS当时还很新。 项目管理工具以带四位数价格标签和笨重手册的盒子出售。 他们都致力于建模关键路径并绘制了复杂的甘特图。 Basecamp每月的售价为50美元,其超级简单的界面和专注于沟通的功能使人们倍感新鲜。

快进几年了,Basecamp有50万快乐用户,每个月都有付款,但是Jason和David开始担心。

几年前,David在软件业务会议上讲了这个故事。 他承认自己受到Joel Spolsky的影响,并相信重写软件会杀死该公司。 另外,与敏捷运动的普及有关,有一些自满和自以为是的元素

[I]完全沉浸在先验软件的思想中……无限灵活的代码。 无限宝贵的遗产。 您可以更改任何内容,重写任何程序,任何代码...如果软件难以更改,那是您自己的错。 您是一个糟糕的程序员,因此您需要改进。

但是,在经历了“七胖年”之后,该公司陷入了困境-该问题与技术债务无关

金手铐


一切始于这些家伙注意到缺乏热情的事实。 不仅没有足够的动力来开发旗舰产品,而且他们自己并没有特别使用他们的程序。

他们对如何从根本上改善产品有很多想法,但是任何更改都会破坏成千上万Basecamp用户的常规工作流程。 问题不在于复杂的代码库,而在于用户。

由于希望取悦现有客户,因此该产品停止了开发,从而无法吸引新用户。 这并没有直接威胁到业务,但却构成了长期威胁。 DHH将情况与漏斗进行了隐喻比较:

您可以填补所有漏洞,修复所有错误,更新现有客户抱怨的所有功能-但总有一部分水会流出。 客户离开工作,离开软件,即使他们喜欢它。 您可能会被误导:“嘿,水桶装满了一半以上。 只有一个小洞,只有一个小泄漏,这是完全自然的。” 但是,如果这种情况持续存在,则存储桶将完全清空。

问题的一部分是,您经常听取当前客户的意见,但听不到未来的客户的意见:

在2011年访问Basecamp页面并拒绝购买该产品的人因为它不再适合他们:您如何看待,我们多久听一次他们的意见? 没关系 我们只听了广泛的现有客户群,他们确实希望我们继续保持这些小漏洞。

开发人员开始考虑将有利润的产品作为一对金手铐:

最主要的是确保所有当前用户都满意。 每个月都有钱,一张新支票,一张新支票,一张新支票。 太好了 但是,然后伸出手来承认:“就是这样,我再也不会更改软件了。”



剧透:Basecamp从头开始被改写,结果很棒。 用了大约一年的时间,在Basecamp 2发布之后,新注册的数量立即增加了一倍。

我认为他们做了两件事。

首先, 他们没有尝试改造旧产品 -因为他们首先想实施有关如何解决旧产品所解决问题的新思路。

难道我们以为2003年的想法仍然是2011年最好的想法吗? 是的,我被指责为自大,但是所有的精力都在2008年消失了。

因此,他们推出了Basecamp 2作为全新产品,而没有任何向后兼容Basecamp Classic的保证。 许多新事物出现了,某些东西完全消失了,许多东西完全改变了。

这一决定给予了一定程度的自由。 自由激发了人们的积极性,工作积极性更高。

无需支持使用原始产品的每个选项的需求有所帮助。 例如,原始的Basecamp允许您在自己的FTP服务器上托管文档。 开发人员删除了此功能以及其他以前有意义的功能,但现在被边缘化了。 不必要功能的这种减少使得有可能在合理的时间内将新产品推向市场。

日落被认为是有害的


但是,成千上万的最喜欢的玩具被抢走的现有用户呢? 这使我们想到了开发人员要做的第二件事: 他们保留了旧产品

David在“日落软件”一词​​上有出色的表现:

某个地方有人提出了一个美丽的委婉说法,称为“日落”……将软件销毁称为“日落”……例如,所有用户都在沙滩上-他们激动地看着自己的信息消失了。 太好了!

唯一相信“日落”的人就是那些称之为“日落”的人。 真正经历过日落期的唯一用户不会回来说:“哦,太好了。” 他们回来说:“该死! 我把多年的工作放在这里!..现在你要把我卷起来吗?!”

他指出,强迫人们打包搬家是“最严重的战略错误”,因为您迫使所有常规客户做出决定,继续使用软件或切换到其他产品。

我真的需要大本营吗? 如果您仍然必须转移所有垃圾,则可以将其转移到其他地方。 如果您需要把东西装进箱子然后装进卡车,我可以简单地将这辆卡车运送到整个城市。 没什么大问题。 最大的问题是打包所有马纳特。 以及再次移动到大本营或其他地方的位置,这是次要问题。


大卫将Basecamp Classic与Leica M3进行了比较:该相机自1967年以来就没有生产过,但Leica承诺将对其进行维护和修理直到他的日子结束(照片: Dnalor 01

相反,Basecamp承诺“尊重其遗产” :他们简化了对新版本的升级,但并没有要求退出Basecamp Classic。 此外,他们承诺将永远维护Basecamp Classic。

开玩笑是四年之后,他们又做了一次:2015年,Basecamp 3发布,再次从头开始重写,具有一些新功能而又没有一些旧功能,并且又发生了很多变化。 和以前一样,旧版本的用户可以轻松升级。 但是,如果他们愿意,他们可以继续使用Basecamp Classic或Basecamp 2,直到互联网终止。

Basecamp 3不会投放任何东西。 不是当前版本,也不是Basecamp的经典原始版本。 这些方法对您有好处吗? 好酷! 请继续使用它,直到互联网结束! 我们确保程序保持快速,安全并且始终可访问。

但是有很多“但是”。 它不贵吗? 多版本支持需要花费很多精力吗? 那么安全性呢? 那过时的代码库呢? 我能说什么 我们只是关心客户,即使他们不想按照我们的时间表进行更新。




结论


就个人而言,这种模式对我来说确实很启发。

每次更改都使Basecamp可以根据经验进行回顾和重新制作产品。 对于用户来说,这是一个双赢的游戏:保守派保留玩具; 面对系统局限性的创新者将获得新的,更周到的应用程序。

当然,无限期地支持多个版本是有代价的。 但正如大卫所说:

它不是免费的。 当然不是 这是一个有价值的产品,当然,支持不是免费的。 但这是值得的。







3. Visual Studio和VS代码



注意:时髦图标

微软制作了VS Code,以吸引其他平台上的开发人员。

您必须记住,很长一段时间以来,Microsoft都提供了“全部或全部”的服务。 如果使用Visual Studio,则必须使用.NET,反之亦然。 这将软件社区划分为两个大型的,相互排斥的阵营,这对每个人都是不利的。

吸引酷男


在史蒂夫·鲍尔默(Steve Ballmer)的岁月中,情况开始发生变化:请记住ASP.NET开发人员不发明jQuery决定变得多么响亮!

萨蒂亚·纳德拉(Satya Nadella)首席执行官的主要任务之一是与他“守卫的花园”外的开发商联系。

但是有一个问题。 这是此版本的Changelog播客中Visual Studio的副总裁Julia Lewson 所说的

我们无法提供一整类开发人员:现代的,面向Web的,使用Node和JavaScript的开发人员-我们无话可说。 我们根本无法吸引这些开发人员。

因此,创建VS Code就是为了打破这一障碍,然后说:“真的知道吗,伙计们? 我们还有一些对您有用的东西。”

从任何意义上讲,Visual Studio都是重量级产品:仅安装过程可能需要半小时以上。 它支持企业客户依赖的各种复杂用例。 因此,以Visual Studio为起点并在其他平台上的新项目中添加功能毫无意义。 显然,没有特别支持发布Mac或Linux的Visual Studio的想法。

因此,Microsoft从头开始,没有保证向后兼容。

实际上,并不是从头开始的:微软已经拥有一些重要的部分,例如浏览器中的Monaco编辑器。 而且由于VS Code是Node.js应用程序(用Typescript编写并在Electron中启动),因此他们利用了JavaScript生态系统的丰富资源。

轻量级,快速,可扩展的开源VS Code(对于Microsoft产品而言令人惊讶)已成为面向高级青年的流行编程工具。


VS Code成为JS-hipsters的主要编辑器( 2018年JavaScript调查报告中的图表)

两种产品仍在积极开发中,没有迹象表明微软打算关闭Visual Studio。

结论


与Netscape不同,Microsoft确实设法围绕VS Code创建了一个活跃的开源社区。它加大了开发人员改进产品的力度。


在所有开源项目中,Visual Studio Code在GitHub上的星数上排名第13位-巧合的是,仅次于Linux!

当然,并非每个公司都可以免费提供其主要产品。但是,如果开源是您开发策略的一部分,那么比较Microsoft和Netscape的故事是有意义的,并找出Microsoft所做的不同工作,从而使其社区蓬勃发展。

另一个重要因素:微软为VS Code提供了高质量的可扩展性模型,因此社区已经编写了大约10,000个扩展。

VS Code历史的最后结论之一是,在过去的几年中,一切都发生了巨大变化:如今,创建原型和软件比以往任何时候都更加容易

尽管对现代工具的复杂性吟不已,但在过去的几年中,JavaScript生态系统已经发展成为开源模块的真正天堂。在这方面,现在是历史上前所未有的时期。





4. Gmail和收件箱



注意:

Gmail收件箱日落图标最初是作为Gmail的另一种简约UX引入的,“着重于真正重要的内容。” 他从未尝试过匹配原始Gmail的功能,并引入了新功能:主题组(捆绑),固定的字母和待处理的邮件。

包括我在内的一些用户热情地接受了Inbox。我一直以为Inbox是一个Gmail最终演示的演示,因此我忍受了Gmail的一些细微差别,希望他们最终能进入Inbox。

两个接口,一个服务


收件箱和Gmail在同一后端上工作。实际上,这些只是同一服务的不同用户界面,您可以根据需要来回切换。这有其优点和缺点:如果收件箱缺少功能(例如,用于度假的答录机),尽管来回切换似乎很奇怪,但您始终可以返回Gmail并配置所需的内容。

但是,过了一段时间,Inbox停止了改进-很明显Google不再在其中投入资源。自然地,在推出四年后,Google宣布了Inbox落日



像其他所有人一样,起初我对这样的决定感到愤怒。但是花了一些时间使用最新版本的Gmail后,我发现许多我喜欢的收件箱功能已移植到原始产品上:智能答案,悬停操作,内置附件和图像。几个Gmail邮箱完全可以代替Inbox主题组。

但是,并非所有收件箱中的内容都已转移到Gmail:例如,人们已经习惯了“暂停模式”(暂停),如果没有它,他们实际上会遭受痛苦。

结论


利用Inbox,Gmail开发人员可以在不中断绝大多数用户工作流程的情况下试用功能

但是,由于Gmail 同一后端同时提供这两个版本,因此对创新设置了严格的限制

再次,谷歌因关闭流行服务而受到很多批评。当然,Google会 不断 关闭 项目,因此没有什么意外的。

但是在这种情况下,Google最初对Inbox的态度使我们相信,我们拥有未来Gmail的演示版。就像DHH会说的那样,夕阳下变得丑陋:许多人发现退回旧产品并失去Inbox创新的工作流程令人不快。

我认为,对于许多人来说,如果在关闭Inbox之前将其所有功能集成到Gmail中,则过渡会容易得多。





5. FogBugz和Trello



注意:

FogBugz徽章和“金钱,金钱,金钱”徽章是一个特别有趣的案例,因为这是Joel Spolsky本人的产物:它给出了“永不重写”原理与现实生活相面对的想法。

在Jira和GitHub Issues出现之前,有一个基于Web的票证跟踪系统,称为FogBugz。该系统于2000年发布,是Joel与Michael Prior建立的新的Fog Creek Software公司的第一个产品。十多年来,FogBugz一直是其旗舰产品。最初,它仅作为盒装版本出售,以便安装在自己的服务器上,但后来发布了带有订阅付款的SaaS选项。

FogBugz已变得非常受欢迎,特别是在开发人员中,以我为例,他们阅读Joel的博客并深信他的建议。我公司使用该系统已有很多年了,这在当时是一个很棒的产品。

FogBugz最初使用经典的ASP编写,可在Windows服务器上使用。当ASP.NET发布时,乔尔(Joel)解释了为什么他不急于更新

为了在Linux服务器上安装FogBugz,公司实习生编写了Thistle编译器,将经典的ASP转换为PHP。到2006年,Thistle已成长为一种称为Wasabi的专有编程语言,该语言已编译为ASP,PHP和客户端JavaScript。

山葵的奇怪故事


如今,开发您自己的专有编程语言和编译器是一种古怪的选择。因此,有趣的是看看这是如何发生的。

有一次,乔尔在他的一篇博客文章中提到了芥末有人认为这是个玩笑,所以他解释说这不是个玩笑博客博主Jeff Atwood 对此消息感到震惊:

用您自己的语言写作绝对是不可能的。这是一种有毒的解决方案,与乔尔以前的出色而强大的软件开发技巧相悖,人们真的以为他在开玩笑。

乔尔(Joel) 坚持认为,从业务角度来看,这一决定是合理的。 当然,从理论上讲,不应该发明自己的语言,但是如果您评估了做出这一决定的每一个小步骤,那么考虑技术背景和代码基础,一切似乎都是合乎逻辑的。

前Fog Creek工程师Ted Unangst在一篇名为“技术债务与追风”的大量文章中对Wasabi进行了反思,他将该过程与没有地图的旅行进行了比较:

想象一下,您在乔治亚州的萨凡纳,并且想去英国的伦敦。 您没有地图,只有模糊的方向感……您不会走直线,因为您没有船,而是前方的海洋。 但另一方面,宜人的海滩通向东北,这是正确的方向。 您沿着海滩散步,散步。 时间流逝。 您可以看到,尽管您没有直接朝目标迈进,但每一步都离目标越来越近。

最终在波士顿或新斯科舍省的某个地方,您停下来思考一下您的选择。 也许这条路不通伦敦? 在画廊的远处,您可以听到笑声:“哈哈哈,看看这些白痴。 他们看不到英格兰和新英格兰之间的区别。 给这些傻瓜一张地图。” 但这正是问题所在:您没有卡。 地图是由几乎根据定义都不知道要去的人制作的。

无论如何,另一位前Fog Creek开发人员Jacob Krall 解释说 ,该解决方案牺牲了明天的可维护性,以保持今天的开发速度。 到2010年,这笔债务的账目开始出现。

我们没有将[Wasabi]放到开源中,因此,由于我们的主要获利产品,我们独自承担了成本。这是一个巨大的依赖关系,仅此产品就需要一名永久开发人员:对于我们这个规模的公司而言,这并不便宜。 有时,编译器会诅咒一段看起来对一个人来说很合理的代码。 他慢慢地编译。 Visual Studio无法轻松地将调试器编辑或将其连接到FogBugz ...所有新员工都受到Wasabi的长期培训,而不论他们以前的经验如何。此外,我们也不是处于真空状态。 当然,在Fog Creek之外,编程语言已经得到了改进。...开发人员已经开始感到,他们的出色创意面临着我们小的Wasabi宇宙的局限性。

拐点


到那时,FogBugz已经十岁了:它是一种成熟而稳定的产品。 作为辅助项目, Joel与Jeff Atwood一起启动了Stack Overflow (很显然,当时Jeff的头脑已经治愈了)。

FogBugz正在逐渐老化。 尽管Bug跟踪器市场仍然分散,但Atlassian的Jira(在FogBugz之后的第二年问世)脱颖而出。 它已成为默认选择,尤其是对于大型公司用户。

看看FogBugz历史上的这个特殊拐点真的很有趣。 像Basecamp一样,他们有一个有利可图的成熟产品。 是的,它不再那么时尚了,也许对其进行处理并不是很有趣。 不管是好是坏,它都结合了多年的技术变革和关于如何解决一个特定问题的新思路:跟踪错误。

当然,有一个Basecamp选项:考虑所有经验,从头开始并重写FogBugz。 我想这个想法没有走太远,因为我们记得:“永远无法做的事情”,“最严重的战略错误”等等。

我最近引起了Joel为Inc.撰写的2009年文章的关注 杂志杂志 他在作者的专栏中题为“缓慢的增长是否意味着缓慢的死亡?” 它的语气完全不同于普通的自信盛况:内省地,不确定地听起来充满怀疑。 乔尔(Joel)对Atlassian的快速增长感到担忧,并讨论了市场上是否有几个参与者的空间。

我不得不思考。 我们有一个强大的竞争对手,其发展速度比我们快得多。 该公司与大型企业客户达成了大笔交易……同时,我们的产品更好,我们是一家管理完善的公司,但这似乎并不重要。 怎么了

他决定做两件事。 首先,将所有功能添加到FogBugz

2010年开发团队的任务是消除客户可能从我们的竞争对手那里购买垃圾的任何可能原因,因为有些功能据认为是他们绝对不能没有的。 老实说,我认为这不会很困难。

其次, 建立企业销售团队 。 乔尔(Joel)承认自己在这里不坚强,因此觉得这项工作不愉快。

我不知道这些措施如何运作。 乔尔(Joel) 于2010年5月在他的博客最后提到了FogBugz,并简要宣布了一个新版本。

新希望


这就是发生的事情:

在Fog Creek软件成立十周年的时候,我开始思考:为了使我们的员工再有十年的动力,我们需要开始一些新的工作。

因此,他们分为两个团队,每个团队都制作了新产品的原型。 获胜的想法是本着看板板的精神创建的, 看板板是一种经常在软件开发项目中使用的真正的脱机板:通常看起来像是在板上的列中排列的笔记。

Joel在比FogBugz更高的级别上介绍了该程序作为管理工具:

老实说,使用所有用于“项目管理”的高级软件,我永远无法正确跟踪谁在从事什么工作。作为两家公司的创始人,我在走廊上走来走去,看到数十个人获得报酬,坐在电脑旁……我不知道他们是否做得正确,还是认为重要并不重要。





在创建Trello时,Fog Creek开发人员有机会使用现代技术:

我们使用先进的技术,因此这并非没有牺牲。 我们的开发人员伤口遍布MongoDB,WebSocket,CoffeeScript和Node。 但是现在他们很感兴趣。 在当今繁忙的劳动力市场中,才华横溢的程序员为他们要从事的工作做出了很多决定。 如果您给他们提供有趣的产品...他们会喜欢它的,并且会喜欢他们的公司。

Trello从一开始就支持插件,因此第三方开发人员开始提供帮助:

插件和API的优先级最高...如果您可以提供基本的API,则切勿自己生产产品,有价值的用户...将为您量身定制。 Trello团队有一条规则,即如果可以通过插件实现任何功能,则必须以这种方式实现。

程序员当然会立即了解Trello的好处,但是该工具中没有特定于特定软件开发的内容。 Joel将Trello描述为“任何您想与他人共享列表的地方”的有用工具。 很快,Trello开始被用于连续组织所有事情:从每周的晚餐婚礼狗窝

FogBugz是面向特定市场细分市场的垂直产品,而Trello是适用于所有产品的水平产品。 乔尔认为那时雾溪的“水平运动”是正确的:

创建几乎在所有领域都有用的大型水平产品几乎是不可能的。 它不会很昂贵,因为您可以与其他横向​​产品竞争,这些产品可以吸收大量用户的开发成本。 这是高风险和高回报:这条路不适合年轻的初创公司,但对于成熟和稳定的公司(例如Fog Creek)的第二或第三种产品来说,是个好主意。

为了快速扩展到大量用户,最初免费提供了Trello。 后来介绍了一个商业计划书

2014年, Trello被选为独立公司。 三年后,它的销售收入超过4.25亿美元,用户超过1700万。 具有讽刺意味的是,买主是Atlassian,它是Fog Creek的老敌人。

同时,回国


Fog Creek继续开发另一种新产品,即称为HyperDev的协作编程环境,后来将其重命名为GoMix ,然后重命名为Glitch

同时,FogBugz系统变得模糊不清。 在2017年,有人认为FogBugz是一个愚蠢的名字,工程人员将产品重命名为Manuscript 。 一年后-就在几个月前-Fog Creek将产品卖给了一家小型公司DevFactory ,该公司立即返回了FogBugz的名称

在首席执行官Anil Dash的领导下,Fog Creek成为一家单一产品公司, 并将其更名为Glitch

结论


我对此有很多想法。

理解历史的关键在于,Fog Creek一直不太关心错误跟踪,而是关心赋予程序员权力 -从它自己开始:

主要任务:创造舒适的工作条件。 我们为员工建立了个人帐户,他们只上了头等舱,每周工作40个小时,获得免费午餐,Aeron椅子和最好的电脑。 我们与世界分享了我们的巧妙配方: 出色的工作条件→优秀的程序员→优秀的软件→利润!

基于这个“公式”,可以得出一个合理而令人鼓舞的结论:Fog Creek围绕开发商的幸福而建立了一家公司。 这影响了公司的产品及其内部“操作系统” 。 第一个产品,即错误跟踪器,是启动新产品的基础,该产品以更抽象的方式解决了类似的问题。

根据Joel的说法,Trello的故事似乎并不仅仅是寻求新业务,而是提供支持Fog Creek开发人员的动力和参与的机会 。 价值十亿美元的产品只是一个令人愉快的副作用。

但是,对于FogBugz的一切如何结束感到有些遗憾。 我不认为Fog Creek的开发商在出售前几天特别高兴。

显然,还有更重要,更大的项目:Stack Overflow,Trello和Glitch-每个项目都比FogBugz更有用,更有价值。 而且一个人不可能跟踪所有事情。 因此,我不能责怪任何人,尤其是对FogBugz失去兴趣的原因,因为它具有20年的代码基础和激烈的市场竞争。 但是忠实的用户至少找到了一个好的家,没有得到日落药!

但是,我的感性部分更希望在过去的几年中更加光荣地“荣誉”所有参与创建和使用此产品的人员。





6. FreshBooks和BillSpring



注意:秘密操作图标

这篇文章的增长超出了我的预期,但我不能不讲这个故事。 等等,会有意外的转弯。

如果你之前听过我的话


在2000年代初期, Mike McDerment拥有一家小型设计公司。 他认为会计软件太复杂了,因此他使用Word和Excel进行计费。

一切正常, 直到出现以下一种情况

关键时刻到来时,只有案件保存了重要的客户发票-我只是单击了所需的按钮。 我知道必须有一个更好的方法,因此我花了接下来的两周时间来编程一个原型,该原型将成为当今FreshBooks的基础。

Mike是一位设计师,而不是程序员,但他和两位联合创始人设法将一种足够好的工具组合在一起,好几个人每月要为使用它支付10美元。 公司花了将近四年的时间才离开了父母住所的地下室。

到该计划成立10周年(听起来很熟悉吗?),Freshbooks已成为一家盈利公司,拥有超过1000万用户和300名员工。

但是有一个问题。 到公司设法雇用“真正的”程序员时,他们已经拥有了一百万行“创始人代码”。 一位外部分析师检查了代码库并得出以下结论:

“好消息是您已经解决了最困难的任务。 您找到了建立业务的方式,并且拥有了人们喜欢的产品。 坏消息是你们不懂技术 。”

更重要的是,不可能在现有产品中实现现有思想:

我们十多年前成立了公司,世界在变化,我们从社会上越来越多的程序开发和个体企业家的需求中学到了很多...我们知道需要做出一些努力才能使FreshBooks在五年内保持最新状态。

MacDerment 熟悉传统知识,即您不能从头开始重写系统:

从头开始重写代码是软件公司面临的最大风险。 最有可能的是,您甚至不会完成该项目。 这将比计划花费更多时间,并且花费更多。 最终结果可能对客户没有吸引力。 并且不能保证新平台实际上会比以前的平台更好。 软件中的第一条规则是不重写软件。

因此,他们进行了几次尝试来清除混乱,而无需从头开始重写系统。 但是“在旅途中更换轮胎”是不可能的。

接下来发生的事情可能会让您感到惊讶


秘密创建“竞争对手” FreshBooks的想法访问了McDermint。

他在特拉华州成立了一家全新的公司,名为BillSpring。 她有自己的网站,品牌和徽标。 为了不让两家公司建立联系,他指示一位外部律师为她制定新文件。

开发团队已根据Jeff GottelfJosh Seiden的著作“精益用户体验:使用灵活的团队设计 出色的 产品”实施了敏捷开发实践:Scrum团队和每周迭代,并得到真实客户的反馈。 MacDerment要求他们像初创公司一样行事,并把他当做风险投资人:

“您有四个半月。 如果您进入市场,可以获得更多的钱。 否则,结束。”

在截止日期前几天,团队设法发布了MVP。 他们购买了AdWords关键字来吸引访问量,并在第一年为用户提供了免费帐户。 很快,客户出现了-真正产品的快速迭代周期开始了。

第一年末,BillSpring开始收费。 在某个时候,新产品收到了意外的质量评估

“一个人打来电话,要求退订FreshBooks,然后去我们的新公司,” McDermint说。 “这是美好的一天。”

不久,他们揭开了秘密的面纱,并通知BillSpring客户这是FreshBooks产品,并且他们还告知现有的FreshBooks客户即将推出新版本。

渐渐地,“经典” FreshBooks的客户被接纳为新版本,但如果愿意,他们可以总是回到旧版本。



结论


FreshBooks这个秘密项目并不便宜:据McDermint所说,他们花了700万美元,但是,仅靠自己的资源发展了十多年,他们就筹集了3000万美元的风险投资,因此有了资金。 并非所有人都能负担得起。

福布斯》 估计 FreshBooks在2013年的收入为2000万美元.2017年更新完成后,他们赚了5000万美元。虽然不知道新产品带来了多少,但从头开始编写系统显然并没有减慢公司的发展速度。

MacDerment说,开发和实现新功能的过程变得越来越快。 更重要的是,他们现在拥有可以实现最佳创意的产品。 有了这个,不怕展望未来。

此外,所获得的经验以良好的方式改变了公司的文化。 当他们假装是一家创业公司时,他们学习了如何作为一家创业公司工作。 精益用户体验实践已经传播到整个开发团队。 客户积极参与新功能的开发。

FreshBooks采取了特殊措施来保护自己免受潜在问题的影响:通过在假品牌下引入创新,开发人员可以完全重新考虑该程序并承担重大风险。 即使在最坏的情况下,它们也不会损害现有品牌。

这似乎有点极端。 也许没有必要采取此类措施。 但是,这提醒了人们赌注的严重性。



一些想法


人们普遍认为最好避免从头开始重写程序 ,并尽可能进行逐步改进。 在大多数情况下,我都同意。

但是建议表明,最终我们可以获得原始产品一系列新功能。

但是,如果要删除功能怎么办? 还是完全不同地实施某些选择? 如果经验是从根本上提出新想法的想法,该怎么办?

我从这些故事得出的结论是:只要您了解当前版本与想象中的理想很大不同 ,就不应发布新版本来替代它,而应与当前版本并行发行。

当有想法从头开始重写所有内容时,可能值得提出其他问题。 也许创建自己的竞争对手? 如果我的产品是FogBugz,那么我的Trello是什么? 如果这是Visual Studio,我的VS代码会是什么样?

如果我们将Spolsky在Netscape上的文章DHH关于Basecamp的文章进行比较,他们会达成共识:遗产具有价值。

好消息是,您无需抛弃这一价值进行创新。

Source: https://habr.com/ru/post/zh-CN441456/


All Articles