教训6软件改写的故事

照片:凯文高贵

“如果源代码生锈的!”Joel Spolsky

近二十年前,Joel Spolsky指责网景重写代码库的里程碑式的文章你不应该做的事情

他的结论是,运行应用程序应该从来被重写的。他的论点打开两个点:

  • crufty-looking部分应用程序的代码通常嵌入来之不易的知识角病例和奇怪的错误。
  • 重写是一个冗长的任务让你从改善现有产品,在此期间竞争获得。

对许多人来说,乔尔的结论成为一种信条;我知道它对我的思想有很大的影响。

在接下来的几年里,我读了几反向投资者认为,在某些情况下,这让很多感觉从头重写。例如:

  • 有时真的遗留代码库一团糟无法修复,这样,即使是简单的更改需要级联更改代码的其他部分。
  • 最初的技术选择可能会阻止你做出必要的改进。
  • 或者,最初的技术可能被淘汰,使(或成本)很难开发人员招聘质量。

正确答案,当然是这取决于很多情况下。是的,有时候更有意义逐步重构你的遗留代码。是的,有时是有意义的一切,重新开始。

但这些并不是唯一的选择。让我们快速看看六层楼,看看我们可以得出什么教训。

(奖金:ASCII艺术总结每个故事!)

1。网景

关键:= rewrite, = dead end

网景的灾难性5.0/6.0重写是楼主的孩子“重写”,多亏了乔。

网景的导航器,于1994年首次发布,商业互联网的早期定义的。发布不到两年之后,该公司30亿美元的IPO推出了互联网时代。

网景的第一次严重的竞争来自微软的ie浏览器,1996年出版。

1998年初,网景还是领先的浏览器,但也仅限于此。网景公司的零售价格是49美元;微软免费赠予IE和航运它与Windows作为默认浏览器。

网景的4.0版本发布之后,该公司宣布5.0版本将获得免费,和开发的一个开源社区创建并由公司资助的,称为Mozilla。

这基本上是史无前例的,和Netscape赢得了很多善意做一个大胆的举动。它的发生,社区并没有真正实现。Jamie Zawinski浏览器的最早的开发人员,解释了:

事实是,由于这一事实贡献者Mozilla项目包括大约一百名全职网景公司开发人员,和大约30兼职外人,项目仍然完全属于网景。

研究小组得出的结论是,外部开发者的一个原因不感兴趣,导致他们的开源项目,现有的代码库是一个烂摊子:

代码太复杂和crufty很难修改,这就是为什么人们不贡献…这就是为什么我们改用新的布局引擎。清洁,新设计的代码库,所以理论上说,是人们更容易理解和贡献。

从一张白纸开始

所以一年后该集团决定放弃他们的工作在5.0没有释放,并从头开始6.0版本。

两年过去了,Netscape 6.0终于发布;甚至毕竟时间很明显,它仍然没有准备好发布了。根据纽约时报的评论David Pogue,过了一分钟才启动(!)和占据内存。和它缺少一些简单的可用性特性,前几代的浏览器:

打印预览功能,是能够拖一个网站的地址栏图标直接进入书签菜单。你可以不再复制或粘贴网址在地址栏,单击右键。你必须调整浏览器窗口每次你开始冲浪;导航不记得你怎么了你最后一次运行程序。最惊人的缺陷,但是,是你不能突出整个单击地址栏。

这不要紧的。在Netscape站着不动的三年,Internet Explorer把所有剩余的市场份额:

重新开始的时候,网景失利很快微软的ie浏览器。当新的浏览器终于发布了三年后,这是车和缓慢;与此同时网景公司的市场份额已经减少到几乎没有。(图改编自维基百科。)

正在进行重写时,1999年,美国在线收购网景在交易价值100亿美元。

仅仅两年Netscape 6.0发布后,网景公司团队在AOL被解散。

Mozilla,网景的开源社区创建,将继续发布Firefox浏览器在2002年之后另一个重写。Firefox确实从微软手中夺回一些市场份额。

但网景公司业务已经死了。(羞愧的讽刺脚注,微软最终将获得的网景后的知识产权2012年与美国在线。)

赢得这场战斗,微软在浏览器技术的投资撤出。Internet Explorer 6.0在2001年发行,并没有得到另一个升级为另一个五年有些人把这视为深思熟虑的策略为了防止网络推进作为应用程序的平台。

教训

人认为重写不是一个灾难从长远来看,因为项目最终导致了壁虎引擎和Firefox浏览器。

但是我们都不得不忍受多年的停滞在web技术IE6的没完没了的,令人窒息的垄断当我们在等待新的浏览器获得牵引;最终结束了IE6时代并不是Firefox,但Google Chrome。

无论如何,手头的问题不是是否重写网络很好;是否它是一个很好的决定从公司的角度做出的决定。网景的滑入枝节问题并非完全由于重写-法院同意微软故意滥用其垄断地位。

但重写肯定是一个因素,最终的结果是破坏公司价值数十亿美元和成千上万的裁员。所以我要同意乔尔这个重写的净影响是灾难性的

2。Basecamp

在2000年代早期,芝加哥网页设计公司37 signals创始人附近建造了一批追随者杰森炸DHH的影响力和反向博客

他们最初吸引了我的注意,当我还是一个网页设计师,一系列的不请自来的重新设计的网站像谷歌和PayPal37个更好

37 signals的设计联邦快递的运输形式(左)仍然比真实的东西,将近二十年过去了。

2004年,他们把一个项目管理工具他们已经开发了供内部使用发布的,它作为一个saas产品Basecamp

这是一次当订阅软件仍然是新鲜事物。项目管理工具是在包装盒子与标准价格标签和手册,和都是关于建模关键路径和生成复杂的甘特图。

Basecamp售价50美元一个月,呼吸新鲜空气,与它的一些超级简单的界面及其关注沟通。

快进几年,Basecamp一百万快乐的用户,每月检查滚动,杰森和大卫开始焦躁不安。

我看见大卫告诉这个故事业务的软件几年前的会议。他不仅说他相信Joel Spolsky重写软件公司会杀死,但是有一个自以为是的元素敏捷运动的启发:

[我]完全与卓越的软件的想法。…代码是无限的可塑性。遗产是无限的价值。你可以改变任何东西,任何的软件,可以重写代码。…如果软件是很难改变的,这是你的错。你是一个糟糕的程序员,你只需要学会更好。

他所谓的“七年脂肪”后,虽然,他们陷入了困境,与技术债务

金手铐

他们开始被注意到在他们的肠道缺乏热情。他们不仅没有动力工作在他们的旗舰产品,但是他们没有使用尽可能多的产品。

他们有很多关于如何使产品从根本上更好,但成千上万的人建立自己的工作流Basecamp,每个改变他们破坏很多很多的人。改变的障碍不是crufty代码库,这是他们的用户。

他们专注于保持现有的客户基础是快乐冻结产品,并防止它们吸引新客户。这不是立即的问题业务,但它构成长期威胁。DHH使用的隐喻试图保持一个漏水的水桶满:

你可能会堵塞漏洞,你可能会修复bug,你可能会升级的所有特性现有客户抱怨,没有水逃,但一些水总是逃脱。客户从他们的工作,他们离开你的软件即使他们喜欢它。但是你可以欺骗自己,“嘿,这桶不仅仅是半满的。这只是一个小洞向外渗漏,是完全自然的。”But, if you just keep that on for long enough, the bucket is going to end up empty.

问题的一部分是,你听到从你现在的客户,但你不要听到你未来的客户:

人出现在2011年的Basecamp主页,选择不买,因为我们的想法不再足够betway娱乐官网好,你多久认为我们收到他们吗?从来没有。我们听到这个广泛的现有客户基础非常希望我们继续这些小孔堵塞。

他们开始看到有利可图的产品为一组金手铐:

数量有一点是为了确保所有用户你已经还快乐。这笔钱一直每个月进来,新的检查,新的检查,检查。太好了。但是,你必须坚持你的手臂向前,说,“好吧,我永远不会改变我的软件了。”

提示:他们从头重写Basecamp,结果很好。花了一年左右,新注册人数翻了一番后立即释放Basecamp 2。

他们做了两个有趣的事情,我想,做了这个工作。

首先,他们没有试图重建他们已经有确切的产品——因为他们有新的想法关于如何解决他们最初着手解决的问题。

我们是否真的那么自大的认为想法我们在2003年仍将是2011年最好的想法?而被指责我的意思是,我很傲慢,但我跑出蒸汽在2008那一个。

所以他们提出Basecamp 2作为一个全新的产品,没有保证这将是向后兼容Basecamp经典。很多东西是新的,其他的东西都不见了,很多事情都是完全不同的。

这一决定给他们一个自由度。自由会激发人的斗志,激发人类做更多的事情。

不支持原始产品的每一个用例也买了他们很多时间。例如,原始Basecamp允许用户主机文件自己的FTP服务器。切削特性——和其他类似,有可能使商业意识,但没有任何更有可能向市场推出新产品在合理的时间内。

日落是有害的

但所有这些成千上万的现有用户?所有人大声抱怨当他们的奶酪被拿走?

这就引出了第二个有趣的事情,这是他们没有日落他们现有的产品

大卫·布什在“夕阳”软件的概念:

有人想出了这个美丽的地方委婉称为日落。…我们叫杀软件“退役”。…所有的用户可以坐在海滩上,他们可以看到所有的数据消失。它是美丽的!

唯一的人相信“日落”人称之为“日落”。没有用户实际上是经过一段时间的日落真的回来,说,“哦,那是美丽的。“他们回来,说:“他妈的!我把多年的工作在这个东西!…现在你要日落我?”

他指出,当你强迫用户打包搬家,这是当你在“史上最糟糕的战略失误”:因为你把你的整个循环的客户群,让他们考虑是否要继续使用你的软件或者干脆搬到别的东西。

“Basecamp甚至实际上我想要的东西吗?如果我们将我们所有的废话了,也许我可以把它在其他地方。如果我有包装起来放进盒子,装上卡车,我可以发送卡车穿过市区。这不是一个大麻烦。最大的麻烦是打包所有的大便。再次去Basecamp还是别的地方,这不是重大的决定。”

大卫比较莱卡M3 Basecamp经典:自1967年以来还没有生产,但徕卡仍致力于支持和修复它,只要他们的业务。(照片Dnalor 01)

相反,Basecamp致力于“尊重他们的遗产”:他们使它容易升级,但没有要求他们离开Basecamp经典。不仅如此,他们致力于继续举办,支持和维护Basecamp无限期经典。

意外的是,四年后,他们做了一遍:Basecamp 3在2015年被释放重写的,一些功能,一些补充说,很多事情发生了变化。就像之前,旧版本的用户可以很容易地升级,但如果他们愿意,他们可以继续使用Basecamp经典或Basecamp 2”到互联网”。

Basecamp日落3不会任何东西。不是Basecamp的当前版本,而不是经典,Basecamp的原始版本。这些适合你吗?太棒了!请使用它们直到互联网的结束!我们要确保他们快速、安全,总是可用的。

但是,但是,但是这不是贵吗?不是那么难?安全呢?遗留代码库呢?是的,什么呢?照顾客户升级——即使他们不感兴趣在我们的时间表,我们所做的。

教训

就我个人而言,我发现这个模型真的鼓舞人心。

每个重写允许Basecamp重新审视产品设计决策和建立他们希望他们已经建成了前面的时间。

对于用户来说,这是两全其美:不喜欢改变的人得不到他们的奶酪移动;但人在撞击你的产品的局限性和一个新的工作,希望更好的熟虑的应用程序。

不得不无限期维持多个版本的产品并不是没有代价;但正如大卫说:

它不是免费的。为什么你会期望它是免费的吗?当然这是有价值的,所以它不是免费的。但它是值得做的。

3所示。Visual Studio & VS代码

关键:= hipster cred

微软VS代码以达到其他平台上的开发人员。

你必须记住,很长一段时间,在微软的工作世界是一个非此即彼的命题。如果你使用Visual Studio,你在。net工作,反之亦然。这把软件社区分成两大,主要是相互排斥的营地——每个人的损害。

很酷的孩子接触

开始改变甚至在史蒂夫·鲍尔默年——还记得一个巨大的交易时ASP。净团队决定不改造jQuery!

这是成为CEO萨提亚Nadella为微软明确吸引开发人员的主要任务在“围墙花园”。

但随着茱莉亚Liuson, Visual Studio所说的副总裁这一集的更新日志播客:

我们没有任何为整个类的开发者——现代丝网的,Node-oriented开发者,JavaScript——我们没有和你谈谈。你是一个开发人员从未能够吸引我们,。

所以VS代码的动机是打破这种障碍,说“其实,你知道吗?我们有可以用的东西。”

Visual Studio是一个重量级的产品在每一个意义:它可以安装需要半个小时以上的时间。它支持各种复杂的用例依赖企业客户。所以就不会有意义使用Visual Studio本身作为起点,微软试图吸引其他平台添加特性。大概的想法使Mac或Linux版本的Visual Studio是行不通的。

所以微软开始从头没有保证向后兼容。

不从零开始,实际上:微软周围已经有了一些重要的部分,如浏览器摩纳哥编辑器。因为VS代码是一个节点。js应用程序(用打印稿和电子),他们可以利用丰富的JavaScript的生态系统。

VS代码是开源的,轻便、快速、可扩展;——令人惊讶的是微软的产品——它成为酷孩子选择的编码环境。

VS代码成为JS潮人选择的文本编辑器。(图来自JavaScript的调查,2018年)

这两个产品还积极发展,并没有迹象显示微软打算日落Visual Studio。

教训

网景的经验形成鲜明对比,微软成功地建立一个活跃的开源社区在VS代码。这个社区有增加内部开发团队的努力。

在GitHub上所有的开源项目,Visual Studio代码数量排名十三的星星,巧合的是,Linux下方!

当然,并不是每个人都有一个商业模式,将支持完全开放采购他们的核心产品。

但如果开源是发展战略的一部分,它可能是值得比较这两个案例研究发现微软所做的不同,所以导致这个社区蓬勃发展。

另一个乘数:微软还装备VS代码的坚实的扩展模型,结果写了近10000扩展社区。

最后一个外卖从VS代码故事是事情在过去的几年里,从根本上改变了的方式比以往更容易和创建原型软件

尽管所有的绝望地想到了今天的工具集的复杂性,但事实是,JavaScript生态系统已经发展在过去的几年里为可重用的期待已久的乐土,模块化的开源代码。在这方面,这是一个史无前例的时间。

4所示。Gmail &收件箱

关键:=日落

介绍为Gmail收件箱,原是一个精简的选择为Gmail用户体验设计专注于真正重要的。它从来没有走近特性与原Gmail平价,引入新功能包,把电子邮件和消息打瞌睡之际。

一些人,包括我,兴高采烈地采用收件箱。我总是认为Gmail收件箱是一个预览最终会成为和忍受缺乏Gmail的一些细节,并期望他们会最终让它到收件箱。

两个接口,一个服务

Gmail收件箱和使用相同的后端。他们基本上只是为相同的服务,不同的用户接口,你可以来回切换。这有优点和缺点:如果收件箱失踪了一个特性(比如假期自动回复)你总是可以回到Gmail和做你需要的。但有一些不可避免的命运时,来回切换。

一段时间后,收件箱停止改善,很明显,谷歌不再投资任何资源。果然,四年之后推出,谷歌宣布将夕阳的收件箱

我起初很生气,但在花一点时间与Gmail的最新版本,我发现许多我最喜欢的功能从收件箱被移植到原来的产品:智能应答,悬停动作,和内联附件和图片。Gmail收件箱的多个收件箱是一个足够好的替身的包。

但不是所有在:打盹,例如,成了多少人的关键部分处理邮件;收件箱的消亡使他们孤立无援。

教训

收件箱了Gmail团队的一种方法实验没有扰乱工作流功能对于绝大多数的用户没有选择切换。

通过承诺在两个版本使用相同的后端不过,Gmail硬限制自己的创新能力

谷歌有很多批评,再次,关闭一个受欢迎的服务。当然,谷歌今年产品所有时间,所以我们期待什么。

在这种情况下,谷歌的原始消息收件箱让我们相信我们得到早期看Gmail的未来。DHH会说,这不是一个美丽的黄昏;对很多人来说它吸回到旧的产品,和失去收件箱的创新工作流程。

我认为将会有更少的痛苦如果Gmail已经到功能与收件箱之前关闭。

5。FogBugz & Trello

关键:= sad decline, money money money

FogBugz是一个特别有趣的案例,因为它是Joel Spolsky产品:它让我们看看never-rewrite原则扮演了一个真实的产品。

之前有Jira, GitHub问题出现之前,有一个基于web的bug跟踪产品称为FogBugz。在2000年发行,它是第一个Fog Creek软件产品,公司与迈克尔·普赖尔乔尔最近成立了;它是他们的旗舰产品十多年了。他们最初只卖包装软件安装在自己的服务器上,但后来出来主持,付费版。

它变得非常流行,特别是在开发人员,像我一样,乔尔的博客,谨记他的建议。我公司多年来使用它;它是一个伟大的产品。

经典ASP FogBugz最初编写,在Windows服务器上跑。在ASP。净,乔尔解释他为什么不急于升级

为了让人们在Linux服务器上安装FogBugz,实习生写一个编译器,名叫蓟,PHP将经典ASP。到2006年蓟已经演变成一个私人叫做芥末的本土语言,编译为ASP, PHP和客户端Jabetway娱乐官网vaScript。

芥末的奇怪的故事

现在发展中内部专用的编程语言和编译器,我们就说这是一个古怪的选择。我忍受短暂绕道。

在某一时刻乔尔芥末的描述在一篇博客文章的段落。显然有些人认为他不是认真的,和他澄清,他。这导致其他博客作者杰夫·阿特伍德爆炸头:

编写自己的语言是绝对不容苍白。有毒的决定,是完全与乔尔之前的优秀的软件开发上和理智的建议人们认为他是在开玩笑

乔尔维护这一切都具有商业意义:你当然不会发明自己的语言如果你从一张白纸开始。但如果你看看每一个决策,考虑到技术背景当时的代码库当时最后,您可以看到如何。

反思芥末在一个深思熟虑的文章题为“技术债务,附加到风”,前Fog Creek工程师Ted Unangst比较过程没有旅行地图:

想象你在萨凡纳,格鲁吉亚和你想去伦敦,英国。你没有一张地图,只是一个模糊的方向感。…你不能走直线,至少不是没有建造一艘船,因为有一个海洋。但是有一个漂亮的海滩上领先的东北部,是你想去的方向。你去。时间的流逝。你注意到你不是直接前往目的地,但你所进行的每一步,你越来越近了。

波士顿附近的某个地方,或者新斯科舍,你终于停下来思考你的选择。也许这不是伦敦。从上方花生画廊,你可以听到咯咯笑。“哈哈哈,看看这些阻碍。不能告诉英格兰和新英格兰的区别。得到这些傻瓜地图。”But that’s just the thing; you didn’t have a map. Maps are made by people who, almost by definition, don’t know where they’re going.

无论如何,雅各布·克劳尔,另一位前Fog Creek开发人员,解释了今天,这个决定交易开发速度可维护性明天-技术债务的定义,到2010年该法案开始到期债务。

我们没有开源(芥末酱),这意味着任何投资必须由我们的主要盈利产品。…这是一个巨大的依赖,需要一个全职开发人员,而不是廉价的公司的大小。它偶尔技艺高超的一段代码,是完全合理的人类。它是缓慢编译。Visual Studio无法轻松地编辑或将调试器附加到FogBugz。…所有新员工有一个广泛的学习阶段的芥末,不管他们的经验。…更重要的是,我们不是生活在真空中。编程语言是当然Fog Creek以外的改善。…开发商开始觉得自己的创意想法被受到的限制我们的小宇宙芥末。

一个转折点

在这一点上,一个十年,FogBugz是一个成熟、稳定的产品。乔尔创造了堆栈溢出与杰夫·阿特伍德项目(大概他的爆炸头有时间然后愈合)。

FogBugz不是点燃世界,并显示出它的年龄。当bug追踪器的市场还是支离破碎,Atlassian Jira——后出来几年FogBugz——已经成为默认的选择,特别是对于大的企业用户。

我有点着迷于这个特殊的Fog Creek历史上的转折点。像Basecamp,他们有一个有利可图的,成熟的产品。它不再是性感,可能不是非常激动人心的工作。体现,更好和更糟的是,多年的技术转移和发展如何解决一个具体的问题空间。

一个反应,当然,会做Basecamp一样:把一切都Fog Creek了解bug跟踪,重塑FogBugz,从一张白纸开始。

我猜这个想法没有去很远——“你永远不应该做的事”,“最糟糕的战略错误”,等等。

我最近看到一篇从2009年开始,当乔每月专栏写作公司的杂志。这篇专栏文章,题为“缓慢增长等于缓慢死亡吗?”,有一个非常不同的语气与他一贯自信的夸大的言辞:内省,试探性的,表示怀疑。他担心Atlassian的快速增长——想知道最后只有故障追踪一个产品的市场空间。

我不得不怀疑。我们有一个大的竞争对手在我们的市场,似乎比我们更快增长。公司关闭大处理,企业用户。更好…与此同时,我们的产品是英里,我们是一家运营良好的公司,但它似乎并不重要。为什么?

所以他下定决心要做两件事。首先,FogBugz添加的所有特性:

2010年的开发团队的使命:以消除任何可能的原因,客户会购买我们的竞争对手的垃圾,因为有一些微不足道的小功能,他们告诉自己他们绝对无法割舍的。我不认为这将是非常困难的,坦白地说。

第二,建立一个企业销售队伍。乔尔坦言,这是他不擅长的事,并发现令人反感。

我也不知道这两个计划了。乔尔最后一次在他的博客上提到FogBugz是敷衍的宣布一个小版本几个月后

一个新的希望

发生了什么是:

在Fog Creek软件的十周年,我开始思考,如果我们想让我们的兴奋,激发员工为另一个十年,我们需要一些新的东西。

所以他们分成两个团队,每个团队努力想出和原型一个新产品的想法。

获胜的想法的灵感来自于看板——物理工具,常常用在软件开发中,通常涉及便利贴在白板上分布在列。

乔尔了它作为一种工具来管理工作在更高的级别上比FogBugz允许:

老实说,所有的华丽的“项目管理”软件,我从来没有找到一种方法来跟踪谁应该是做什么。…,两家公司的创始人是开始分散走在走廊看到数十人得到报酬坐在电脑…我不知道如果他们做正确的事情,或者他们认为是重要的东西,然而,不是,实际上,重要。

在构建Trello, Fog Creek的开发人员有机会使用现代技术,改变:

我们使用尖端技术。通常,这意味着我们得到削减的手指。我们的开发人员在MongoDB流血,WebSockets, CoffeeScript和节点。但至少他们的乐趣。在当今严峻的就业市场,伟大的程序员有很多影响他们将要做什么。如果你能给他们一个激动人心的产品…他们会玩得开心,他们一定会喜欢他们的工作。

Trello也增加其内部开发团队的努力从一开始就通过启用第三方插件:

API和插件架构最高优先级。…从来没有建造任何内部如果你能暴露一个基本API和让这些高价值用户…为你构建它。Trello团队,可以提供的任何功能,必须提供一个插件的插件。

当然,程序员看到马上Trello的效用;但是没有什么特定的软件开发工具。乔尔描述它作为有用的“任何你想保持的地方列表的列表与一群人。”Trello was soon being used to organize everything from每周吃饭婚礼动物收容所

FogBugz是一个垂直产品针对一个特定的利基市场——Trello是一个水平产品,任何人都可以用任何东西。乔尔认为“水平”是FogBugz的正确在这个节骨眼上:

制作水平的一个主要产品是有用的在任何走的生活几乎是不可能的。你可以不收,因为你与其他竞争水平可以摊销的产品开发成本在一个巨大的用户数量。这是高风险,高回报的一类:不适合创业的一个年轻的,但不是一个坏主意第二或第三产品从一个成熟和稳定的公司像Fog Creek。

为了迅速扩大经营规模,很多很多的用户,Trello最初是免费提供的。支付”商务舱“计划稍后推出。

在2014年,Trello被剥离出来到一个单独的公司。三年后,拥有超过1700万用户,Trello售价4.25亿美元。具有讽刺意味的是,买方是Atlassian, Fog Creek的老对手。

与此同时回到牧场…

Fog Creek继续开发另一种新产品,一个协作编程环境第一HyperDev,然后GoMix,最后重新命名故障

与此同时,在默默无闻FogBugz停滞不前。2017年有人决定FogBugz是一个愚蠢的名字,和工程努力进入品牌的产品手稿。一年后,就在几个月前- Fog Creek把产品卖给一个小公司DevFactory,这回到FogBugz立即改变了名称

在首席执行官Anil DashFog Creek,成为一个单一产品公司更名为故障

教训

我有很多感受。

理解这整个故事的关键是,Fog Creek从来没有关于bug跟踪是一个让程序员——从自己的:

做一个好地方工作是我们的主要目标。我们有私人办公室,飞头等舱,每周工作40小时,然后买了午餐,Aeron椅子,和最高的电脑。我们与世界分享我们的巧妙的公式:伟大的工作条件→伟大的程序员→→利润巨大的软件!

与这种“公式”,也许我们可以建立一个连贯的和鼓舞人心的故事:Fog Creek附近建立了一个商业开发商的幸福。这是反映在公司的产品和其内部”操作系统”。它的第一个产品,一个bug追踪器,提供了一个基础推出一个新产品,解决了类似的问题适用于更广的范围。

我认为这是真的Trello起源的故事,乔尔告诉它,与其说是乔尔寻找新业务机会,乔寻找一种方法,使Fog Creek的开发商和快乐。创建一个产品价值十亿美元,这只是一个令人愉快的意想不到的后果。

我不禁有点悲伤的事物最终FogBugz,。我不想象有很多开发者幸福发生在产品的最后几天在Fog Creek。

显然所有涉及的人员有更大的鱼煎:堆栈溢出,Trello,单独和故障都远比FogBugz能更有用和有价值的;和任何一个人只能用自己的时间做那么多。所以我不能嫉妒任何人尤其是FogBugz失去兴趣,已长达20年之久的代码库和竞争利基市场。,至少它的忠实用户发现了一个很好的家,并没有得到“日落”治疗!betway娱乐官网

但情感的一部分,我希望有一个更好的方法来“荣誉遗产”的创建和使用它的人这些年来。

6。FreshBooks & BillSpring

关键:️♀️=秘密行动

这已经变成了一个更长的文章比我所想象的,但这个故事,否则我不能离开。坚持我的,它有一个伟大的转折。

阻止我如果你以前听说过这个

在2000年代早期,迈克McDerment拥有一个小的设计机构。他利用Word和Excel发票,有决定会计软件太复杂,他需要什么。

这个系统是不够好直到它不是:

我达到我的极限有一天我无意中救了一个重要的客户发票,我只是有点不耐烦地说。我知道必须有更好的方式,所以我在接下来的两周内编码将成为现在FreshBooks的基础。

迈克是一个设计师,而不是一个程序员,但是他和两个创始人设法拼凑一个工具不够好几个人支付10美元一个月的时间来使用它。花了近四年业务足够让他搬出父母的地下室。

产品的10年纪念日(这是开始听起来熟悉吗?)FreshBooks是连续盈利,与超过1000万个用户和300名员工。

只有一个问题:当他们设法雇佣“真实”的程序员,他们有一百万行代码”创始人”。外部分析师审查他们的代码库和总结:

“好消息是,你解决最困难的问题。你知道如何构建一个业务,和你有一个人们喜欢的产品。坏消息是,你们技术太烂了。

不过,更重要的是,他们有新的想法,现有产品不适应:

我们开始公司十多年前;世界已经改变,我们学到了很多关于建筑产品和服务为自己工作的人。虽然个体的专业人士和他们的团队是一个巨大且不断增长的劳动力的一部分…FreshBooks能够跟上和服务集团在五年的时间,我们知道我们需要采取行动。

McDerment有吸收传统智慧从头开始:

没有更大的风险比重写软件公司。你甚至不会完成这个项目。它会比你想象的要长。它将花费更多。当你这样做时,客户可以少喜欢它。和没有担保,通过构建一个新的平台,这是一个更好的产品。软件是一个规则数量不re-platform软件。

所以他们做了一些试图收拾残局而不重新开始;但是发现它不可能改变轮胎行驶的车辆上。

接下来发生的事情可能会让你大吃一惊

认为McDerment终于击中FreshBooks秘密创建一个“竞争对手”。

他加入了一个全新的公司,名叫BillSpring,在特拉华州。新公司都有自己的URL和自己的品牌和商标。小心翼翼地防止这两家公司联系,他有一个外部律师起草新服务条款。

开发团队采用了这本书精益UX:设计与敏捷团队伟大的产品通过杰夫Gothelf杰克来自作为他们的指南,和实施敏捷实践scrum团队和每周迭代与实际客户进行复习。McDerment告诉他们想自己创业,自己是他们的风险投资家:

“你有四个半月。如果你在市场上,我们会给你更多的钱。否则,我们出去。”

团队设法想出一个MVP在最后期限的前几天。他们买了Google AdWords发送新站点的流量。他们提供免费占了第一年。不久他们实际用户,他们开始迭代快速抛光产品。

第一年的时候,他们开始充电BillSpring客户。在某一时刻的新产品以一种意想不到的方式进行验证:

“一人叫我们取消FreshBooks告诉我们他们要这个新公司,“McDerment说。“这是一个美好的一天。”

不久之后他们解除保密的面纱:他们让BillSpring顾客知道产品现在FreshBooks,让现有的FreshBooks客户都知道,一个新版本即将可用。

渐渐地,“FreshBooks经典”的客户被邀请尝试新的升级,但他们没有,他们总是可以迁移到更熟悉版本,如果他们想要的。

教训

FreshBooks的卧底重写并不便宜:McDerment估计他们在该项目花费了700万美元。经过十年多的引导增长,他们刚刚筹集了3000万美元的风险资本;所以他们有现金。并不是每个人都能花那么多钱。

《福布斯》估计FreshBooks曾在2013年2000万美元的收入。2017年,升级完成后,他们获得了5000万美元。他们不会说多少的增长来自于新产品,但重新开始肯定似乎并没有减慢公司的增长。

McDerment报告说,他们能更快更容易地添加特性。更重要的是,他们面对未来的产品,抓住了他们最好的想法。

超出了他们的既定目标,他们发现,体验改变了公司文化——一个好方法。时间假装创业使得他们表演更像是一个启动。他们的“精益”实践尝试蔓延至整个工程团队。客户密切参与新功能开发。

FreshBooks对此强力免受潜在的重写的缺点:通过创新在一个信口开河的品牌,开发人员感到了自由完全重新思考事情,冒更大的风险。这样,可能出现的最坏情况是,他们会到达另一个死胡同;至少他们不会破坏现有的品牌。

这一切都有点极端,或许它没有必要去长度。但这是一个提醒风险的严重程度。

一些想法现在

周围的传统智慧重写软件,一般情况下应该避免而进行不断的改进,除非真的是不可能因为某些原因。

我同意这一点,就其本身而言。

不过,这个建议假设,最终目标是与原来的产品+一些新特性

但是,如果你想删除功能吗?或者如果你想彻底解决一些用例不同的路吗?如果你的经验与产品为给你一个全新的思路方法?

我的外卖从这些故事是这样的:一旦你学到足够的当前版本之间有一定的距离你的产品产品你能想象的最好的版本,然后正确的方法你的软件替换为一个新版本,但是构建新的东西旁边- - - - - -没有扔掉你所拥有的。

所以如果你思考你是否应该重写,你应该看看你的产品,问自己:也许我应该创建自己的竞争对手?如果我的产品是FogBugz, Trello是多少?如果是Visual Studio, VS代码看起来像什么?

如果你重读Spolsky的文章在Netscape和DHH的文章Basecamp并排,你会发现他们同意一件事:你已经创造了有价值的。

好消息是,你不必扔掉价值为了创新。

- - -

- - -

得到了媒介的应用betway娱乐官网

一个按钮“App Store下载”说,如果点击它会使你的iOS应用程序商店
说一个按钮上,谷歌玩,如果点击它会使你的谷歌商店
草Caudill

草Caudill

人类的软件。全球发展。城市。巴塞罗那。RPCV。创始人@DevResults。

Baidu