现代软件开发是癌症

2021-08-09 11:20:02

等待。在你说点击诱饵之前,让我们关注癌症的定义。它是一组涉及异常细胞生长的疾病,有可能侵入或扩散到身体的其他部位。现在,让我们用软件和工业等词代替疾病和细胞生长。在过去 15 年左右的时间里,自从第一个软件泡沫破灭并且开发人员意识到他们需要一种新的赚钱方式以来,软件语言和开发学科的发展就出现了令人震惊和不受控制的趋势,所有这些都旨在支持并维持自己。一种具有前所未有传播力的生物体。癌症。在测试 Fedora 25 时,我第一次体验了 Wayland,当我访问官方页面并阅读宣言时,我才恍然大悟。在这里,我们有一个新框架,创建它的目的是使开发人员更容易开发它。什么。以前,当我摆弄 systemd 并试图解决由一堆复杂的代码产生的问题时,一种非常相似的情绪爆发,除了成为一堆复杂的代码之外,没有其他目的没有人可以调试,但是对于喜欢写Python的人来说写Python或一些类似的废话更有趣。火狐,同样的事情。我们有一个浏览器,它正在尽一切努力使自己成为一个不同的浏览器。现在,它正在改变它的结构,即扩展机制,以便我们得到一个与旧框架完全不兼容的新扩展框架,而且它会疏远所有现有用户。哦,是的,用户。据称应该从所有这些软件游戏中受益的目标受众。没有了,不会再有了。 Windows 10,Linux Mint 18.1 Serena,更多触发我疲惫不堪的灵魂。新的东西出来取代旧的东西,除了残废,要花很多年才能达到旧软件的成熟程度,然后又被砍掉,发布一个新的残废版本,循环再次开始.这个列表是无止境的。技术(包括软件)的目的是让生活更轻松、更高效、更安全、更愉快。达到目的的手段,而不是目的。我们使用的任何东西都可以帮助我们满足原始需求。例如,浏览器是知识和娱乐的门户。该软件旨在让我们快速有效地访问网页,正确显示它们,并防止在我们的系统上无根据地安装新软件。就这样。而已。但不是。如果你全面看,这不是你得到的。当然,有一个强大的商业元素,当然,但大部分源于这样一个事实,即浏览器需要强大的开发和没有人真正想要的新功能。

这是一个典型的生物体需要进食的案例,这样它才能变得更好,从而可以喂更多的食物。但是如果你仔细想想,浏览器不需要它们一半的功能,它们的添加和开发只是因为编写软件的人想要确保他们有工作安全和额外的控制权。韦兰,同样的故事。对其存在的论证是毫无意义的。在服务器端,99% 的时间你根本不需要图形环境,所以这与那里的庞大行业无关。在家庭设置中,旧框架做得很好,从用户的角度来看,一切都很好。普通人不知道或不关心是什么为他们的盒子提供动力。这是优秀产品的标志。它是透明的。但是现在,我们有 Wayland - 和 Mir - 并且多年来,我们将处于测试阶段的状态,直到开发人员完成游戏,如果有的话,之后他们将找到另一个借口来创建另一个框架并重新开始,对待整个世界作为他们自己娱乐和利润的一个大沙箱。或者也许只是娱乐。毕竟,当编写代码是你的激情、你的工作和你的目标时,你永远不会真正完成,对吧。 Linux 中的 init 系统也是如此,比如 systemd。简而言之,系统应该快速启动并进入工作会话。我们在 2010 年左右有了这个,使用 init.d 启动时间缩短到仅仅 10 秒。没有缺陷,没有错误。即使在商业领域,使用 init,我也不记得有任何重大问题。然后,突然间,我们有了一个包含一亿个模块的新二进制文件,在过去的五年里,这种不稳定、半生不熟、无法调试的废话是大多数 Linux 发行版的支柱。 systemd 框架的侵入性和普遍性也影响了用户空间的稳定性,这是它本不应该触及的东西,而且几乎所有 Linux 桌面质量问题都与 systemd 的引入相吻合。当然,开发仍在继续,没有充分的理由,只是为了达到我们五年前拥有的稳定性、成熟度和功能性水平。有人通过编写复杂的代码来解决一个不存在的问题,从而为自己赢得了大量的月薪。这种趋势在整个行业都很普遍。所有新的软件框架都非常复杂。所有的编排机制都是功能和流行语的垃圾盛会,没有任何关注最终任务。你从容器之类的东西开始,但它们太复杂了,它们需要一个调控器。所以你最终得到了一个抽象机制,但是网络层很烂,或者它不成熟。所以别人开发了一个基于软件的虚拟网络框架。然后,又有三家公司创建了自己的编排工具,而且碎片化太多了。这需要一个新的框架来管理所有其他框架。都是因为最初的实现很糟糕。这是寄生行为的典型案例。事实上,现代软件开发可以这样总结:就像 Sense & Sensibility,只有更好。当然,整个 dot-com - 或者我应该说 dot-io - 软件狂热是如此有利可图,以至于每个人都赶上了潮流,这是一列现在以 1,450 公里/小时行驶的子弹头列车,每个人都在紧紧抓住,以免他们的利润消亡。这也导致了一群白痴涌入软件世界,现在他们有了特殊的词和短语来打动其他白痴,让他们相信这个数字宗教。

白痴使用的最特殊的词。公司现在拥​​有快速的发布周期,而不是一年左右发布一次软件,并且他们应该坚持这种敏捷模型,以将自己与潜在的遗留恐龙区分开来。这会导致版本号快速增加并大大降低质量。但这就是事情 - 有很多版本会产生一种活动的印象,这就像是,部长,第 2 季,第 1 集,同情社会中的行政事务部,一家没有病人但有大量行政人员的医院.时间指数17分54秒。纯金:当然,敏捷模型并不真正适用于 90% 的公司,因为他们认为这与速度有关。他们忘记了一些细节,比如指派他们最好的人来开发这些产品、自律的需要、高度的自主权,当然还有能够创建具有合理里程碑的软件产品。但只要他们敏捷,他们就无法触及。因为他们敏捷。敏捷,你听到了!有人认为最好控制代码猴子并阻止它们使操作变得难以忍受。基本上是版本控制和配置管理,系统管理员负责服务器。除了他们把所有的时间都花在编写代码和调试上,而不是管理服务器上。一个美丽的悖论。敏捷 + DevOps 的同义词。如果您听到有人这么说,请询问他们是否使用 TDD,然后告诉他们您更喜欢 OpenTTD 并大笑(或拔掉他们七台显示器中的一台)。管理层最喜欢用的流行语来描述他们不知道它做什么以及它如何工作的东西。但这应该意味着 - 你是一个白痴,你不能编码,在这里,在这里使用这一行,当它运行时,它会从某个地方的服务器检索一些东西。换句话说,很多时候,HTML 命令封装在废话中。有人写了糟糕的代码,所以有人写了更多的代码来以不那么糟糕的方式管理糟糕的代码。赚取巨额资金的绝佳方式。被视为精明的最有利可图的方式,尤其是在云领域。

这是EVAR最天才的发明。基本上,您将一个微型 Web 服务器嵌入到一切(最有可能是 Linux)中,然后您使用“API”连接到它,这样您就可以以数字方式控制事物。这个概念的智慧在于,它至少会在 20 到 30 年内养活整个 2000 年后的泡沫,所以我们现在还不需要面对另一场革命。物联网现实将在未来几十年内为大约 1 亿开发人员创造就业机会,并为那些做对的人带来大量现金。这就是你的问题根源。当您让具有绝对零社交和营销技能的人告诉世界最终产品应该是什么样子时。当您让软件开发人员定义最终状态时,您的世界看起来就像一个大型调试器会话。这太愚蠢和毫无意义了,看真人秀感觉就像在发明微积分。这就是为什么你有一百种毫无意义的编程语言,它们的目的只是让正在某个地方编写软件的人在椅子上感觉更舒服。用户是一个麻烦,发明使用模式来证明软件决策的合理性。一个很好的例子是顶部标签。这违背了基本的人类思维、阅读逻辑,当然还有 UI 层次结构,但是当您让《星球大战》粉丝决定事物的外观时,这就是您的最终结果。如果有的话,软件产品——好的软件产品——应该由没有受过正规计算科学教育,甚至可能没有技术技能的人设计。您希望他们专注于人类需求以及人们如何与事物互动。不是通过厨师的眼睛,他们将按钮、字段和表格视为下一次薪水的成分,而是通过寻求解决问题和满足原始需求的人的眼睛。取而代之的是,越来越多的公司因为让开发人员上市而失去了对其产品的控制权。原因是,谷歌、微软和 Facebook 是由书呆子创建的,所以每个人都认为,如果他们在相机前放置一个高光谱的人,或者让他们设计软件,他们最终会成为这个价值数十亿美元的企业集团.除了这不是它的工作原理。从本质上讲,编写代码的人只是光荣的数字焊工。他们需要连接以神秘方式书写的点点滴滴的文本,以便他们做一些有用和高尚的事情。当你让软件方法论成为你的工作方式时,坏事就会发生。让我们回到 Firefox,然后我们将更多地讨论 Linux,这两者对我来说都是很宝贵的。

Firefox 是一个浏览器。一个信息和娱乐的门户。 2011 年的某个时候,Mozilla 决定将 Firefox 更改为更像 Chrome。你猜怎么着? 2017 年,Firefox 的市场份额比 2011 年减少了约 50%。因为当您可以拥有原始版本时,为什么还要进行克隆?此外,在这六年里,Mozilla 引入了软件驱动的变化,比如顶部垃圾标签(每个标签都是一个单独的过程,谁在胡说八道)、快速的发布周期、几个不需要人类需要的毫无意义的功能,以及现在他们还打算为新的扩展机制更改扩展机制,同样是因为旧的机制太复杂且难以编码或其他东西。他们不会强迫他们的特殊雪花努力工作并创造无缝产品,而是会做完全相反的事情。他们会破坏旧的框架,建立一个新的、未定义的框架,99% 的扩展都会消失,更多的人会放弃浏览器,因为附加组件是人们坚持使用 Firefox 的主要原因。这很明显,但当你喜欢 GOLANG 时就不是这样了。应该做的事情 - 鞭策开发人员提交,迫使他们创建一个支持一切的向后兼容框架,并进行不以任何方式影响用户的后端更改。这就是产品驱动开发的完成方式。相反,您让开发人员谈论 WebExtensions - 注意愚蠢的命名约定 - 以及 API 和主题标签,我们有一个新的小写徽标,我们很酷很现代。您是否了解新的 Mozilla 徽标?查看更改的原因 - 对 URL 语言的认可。什么?如果我问我爷爷关于 URL 语言的问题,他会给我一块砖,让我去雷区玩,但之前不会因为我胡说八道而用它砸我的头。回到 WebExtensions,你有开发人员在谈论如何做到这一点。不,我不想读技术胡言乱语。我不在乎。我关心的是当我启动浏览器时,我的主要需求得到满足。如果代码更改扰乱了我的使用模型,那么它就是糟糕的代码。我不在乎是否有人需要在地下室度过 100 年才能解决这个问题,这不是我的问题。 PS 如果您想知道会发生什么,Firefox 将失去更多的市场份额,因为一旦扩展停止工作,忠实用户将更没有动力继续使用试图模仿 Chrome 的浏览器。 Linux。呃,好吧。关于Linux有什么要说的。一切。相同的功能,10 个不同的程序。 10 种不同的叉子和勺子,创造出来让人们可以在他们喜欢的时候编写代码。臃肿、复杂和自私的新音频和视频框架。更多错误,更多崩溃,性能下降,电池寿命缩短。这就是软件驱动开发的最终结果。因为对于开发者来说,这是一个可爱而多彩的游乐场。这就是他们呼吸和生活的东西。对于最终用户来说,这是业余爱好者设计的噩梦。

脉冲音频?我的声音好点了吗?不,该死。韦兰?我的图形更好吗?不,该死。系统?我的系统是否更稳定和/或启动更快?不,该死。这个列表一直在继续,一直在继续。 Windows 10。半生不熟的版本。我没有为你将在 2 年内完成的半生不熟的废话付钱。当我在 7/8 年前在 Windows 中拥有完美健全和功能强大的控制面板时,我不需要一个系统设置菜单,它会在 6 个月后等同于控制面板。发布大量小东西的整个过程通常可能会以两位数的智商给白痴们留下深刻印象,但归根结底,如果我们忽略闪亮的开放式办公室、台球桌、免费汽水和其他高科技废话,除了给别无选择的最终用户带来更多痛苦和复杂性之外,没有什么根本性的变化。幸运的是,安抚白痴很容易——只要给他们一些闪亮的东西,让他们更容易观看视频,SFW 和 NSFW 风格,以及充满大图标的可滑动屏幕,就像他们在电影 Idiocracy 中使用的那样。这就是为什么这种由软件驱动的废话可以存活下来的原因。最后,我们需要满足基本需求。然后,意识到一切都非常简单。为什么智能手机会成功?因为它们让普通人可以更便宜、更快速地做他们在 PC 上做的事情。不是我们极客喜欢的高端东西,而是普通用户的普通邮件/pr0n/音乐活动。为什么平板电脑没有成功?因为他们试图同时扮演笔记本电脑和智能手机的角色,但从未完全搞定。就此而言,上网本属于同一类别,正如我在关于计算的未来的文章中已经解释的那样,并且我还提到了高端 PC 的强劲发展。他们再次成为这样,因为人们需要权力。在同一篇文章中,我还谈到了 Firefox 没有消亡或衰落或其他什么——就在他们完全改变他们的重点和方法并毁掉它之前。基本需求。当您通过这些镜头观察技术世界时,您会意识到软件无关紧要。 Linux 桌面毫无意义,但 Android 是移动之王。微软统治了桌面,但它在手机上挣扎。所以它不是软件。这是使用模型。这是他们能满足什么样的基本需求。因此,如果您想知道为什么不允许软件开发人员做任何事情而不仅仅是编写代码,那么请查看成功的产品并尝试找出底层代码的共同点是什么。没有。软件是完全可替换的,并且必须完全透明。

这是衡量好代码成功与否的一种标准。拿任何产品来说,比如 Linux 桌面。然后从一年前拿一个。你仍然可以做同样的事情和工作负载,或者你是否需要问自己诸如哪个发行版、版本、内核、环境、库之类的问题?不,因为您无法将代码与使用模型分离,所以您知道它毫无意义,需要删除。对于过去五年在 Linux 中出现的几乎所有主要产品和框架来说都是如此。这与软件的年龄以及它是否适合现代时代无关。大多数关键的东西运行在几十年前设计的操作系统上,仍然是用 70 年代的编程语言编写的。大惊小怪的只是整个物联网的废话。真没用的东西。这不是为了让开发人员更容易 - 因为您可能天真地认为他们会有更多时间来解决用户问题。不。因为如果他们的代码有问题,他们就不能一开始就这样做,而是节省所有的时间。一旦他们用一个半成品的产品“钉”了它,他们就会感到无聊并开始着手另一个测试项目。一个活的有机体需要自我维持和成长,记得吗?当增长不受控制时,好吧。刚从大学或大学毕业的孩子们可能会对这个充满混乱和编程语言的勇敢新世界印象深刻,但归根结底,这与用户有关。如果你去找木匠要一件家具,他们应该为你建造。软件开发的类比是,他们会让你相信床比椅子好,以及代码人员如何更容易地构建和支撑椅子。那不飞。每天,我花几个小时坐在电脑前,做各种各样的事情。我宝贵的时间中有相当一部分时间花在了烦恼上,想知道我的浏览器、办公套件、桌面环境,甚至操作系统本身什么时候会突然停止工作,因为一些软件开发人员认为他们很无聊。我不知道老年人对他们的火车、收音机、长途汽车或其他任何东西是否有这种感觉,但我对此表示怀疑。今年2000幼儿园的废话该停止了。一旦软件开发淡入应有的安静背景,公司重新关注用户,我们将看到创造力、质量和乐趣的激增。当我去餐厅时,我不想 k ......