我的20年职业生涯:全是技术债

编译 | 刘雅梦、核子可乐、凌敏
那些年,写过的代码终将成为技术债?
1992 年,Ward Cunningham 在敏捷宣言中首次提出了“技术债”概念,主要指有意或无意地做了错误的或不理想的技术决策所累积的债务 。随后,《重构》一书的作者 Martin Fowler 基于 Cunningham 的比喻,创建了一个“技术债务四象限”,包括:

  • 鲁莽 / 有意:“我们没有时间去设计”;
  • 谨慎 / 有意:“我们必须现在交付,之后再处理因为追求速度所产生的结果”;
  • 鲁莽 / 无意:“什么是分层?”;
  • 谨慎 / 无意:“我们现在知道应该怎么做了” 。
前段时间,Reddit 上有关技术债的话题再次引起程序员的广泛讨论 。用户 spo81rtyOP 表示,“大多数软件的实际使用寿命也就 5 到 10 年 。即便软件能幸存下来,完全由过时技术栈编写这一现实也会让它的路子变得很窄 。这就是软件工程师的真实命运 。”
创业公司 CTO Matt Watson 则直言,他过去 20 年的职业生涯全是技术债 。
Watson 13 岁开始编程,22 岁时创办了自己的第一家科技公司 VinSolutions,实现了 3000 多万美元的 ARR,并于 2011 年以 1.5 亿美元的价格将其出售给 AutoTrader 。离开 VinSolutions 后,Watson 创办了一家名为 Stackify 的公司,为软件开发人员提供应用程序监控 。此外,Watson 还在菲律宾创办了离岸开发公司 Full Scale ,以支持他的 SaaS 公司 。Watson 透露,Full Scale 已发展到拥有 300 多名员工 。
Watson 在博客中提到,当他听到有人说“我们正在快速开发 MVP,同时最大限度地减少技术债”时,他只是笑笑,因为他知道,最终所有东西都会变成技术债 。Watson 在博客中介绍了自己的 20 年职业生涯发生的变化,他悲观地表示:“如果时间足够长的话,你的所有代码都将被删除 。”
1“如果时间足够长,你所有的代码都将被删除”
那些早被遗忘的技术和过时的编程语言
Watson 的职业生涯始于 Visual Basic 6 的开发 。从 1999 年到 2003 年,Watson 构建了多个不同的应用程序 。后来,Watson 又花了很多时间进行经典的动态服务器页面(ASP)开发,自己也成为了在 Inte.NET Explorer 6 和 Netscape Navigator 制作兼容网站的专家 。
但在今天来看,Visual Basic、ASP、IE6 和 Netscape 都是早已被遗忘的技术了 。
与此同时,在过去的 20 多年里,很多编程语言也都“失宠”了,比如 Perl、Delphi、Fortran、FoxPro、ColdFusion 。也许这些古老的编程语言还存在某些应用程序中,但大多数情况下,还应用这些编程语言的公司必须要对旧的应用程序进行现代化改造,并将其淘汰 。如果你用这些过时的编程语言构建程序,最终的结果可能只有重写,因为很难再找到使用这些语言的程序员了 。
在 21 世纪初,人们认为 Adobe ColdFusion 是最热门的产品,但在今天呢?Ruby on RAIls 也可能走上 Adobe ColdFusion 的老路,它已经失宠了,并且很难找到使用它的开发人员 。曾经 Ruby on Rails 独有的东西,现在也可以在其他语言中使用了 。
Watson 表示,编程语言来来往往,开发人员不希望学习工作中不需要的技能 。同时,开发人员跳槽的速度也很快,他们总是希望自己的简历上有一些热门的新东西 。
曾辉煌过的 ActiveX、JAVA Applets、Flash 和 Silverlight
Watson 最初开发的一些应用程序使用了 Internet Explorer 6 中的 ActiveX 控件 。当时,需要用它们来做打印和其他一些非常不安全的黑客工作 。PDF 在当时并不常见,用浏览器打印简直就是一场噩梦 。
Java Applets 也曾辉煌过,但它运行缓慢,并且在电脑上安装正确版本的 Java 总是一团糟 。Watson 称自己永远不会忘记处理 Java 小程序网络防火墙的噩梦 。“我一点也不怀念它们,幸运的是,它消失了 。”
此外还有 macromedia/Adobe Flash 。当时 Flash 游戏层出不穷,许多软件都是用 Action 在 Flash 中构建的 。现在,一个名为 CheerpX 的产品允许使用 WebAssembly 运行旧的 Flash 应用程序 。
微软曾推出一个名为 Silverlight 的 Flash 竞品 。对于 C# 开发人员来说,这实际上是一个非常棒的框架 。Watson 的公司也曾用 Silverlight 构建了一些非常棒的东西 。不过后来,苹果在浏览器中放弃了对 Flash 和 Silverlight 的支持,从而终结了它们 。
下图是十多年前,Watson 在 VinSolutions 中使用 Silverlight 构建财务计算器的屏幕截图 。Silverlight 现在早已不复存在,他们用 Java 重写了它,但 Watson 认为,新版本没有旧版本酷了 。


推荐阅读