我们建造了一堆高耸的粪便

2020-06-06 20:16:39

这是在与软件错误作斗争后写于午夜的咆哮。相应地设置您的脏话过滤器。

我对软件工程的状态--具体地说,就是稳定性--感到绝望。我们似乎已经失去了这样一种认识,即计算机在那里为我们做繁重的工作。而且我认为我们从来没有相信过以用户为中心的开发工具方法。

上一次我自己开发安卓应用是…。操…。甜甜圈?。小猫咪?太久以前了。上周,我发现了一个我想修改的小型开源Android应用程序。没什么大不了的,只是换了几根弦和几张图片。

回购是3年前的事。重新开始跑步肯定不会那么难吧?哈!

正在安装Android Studio。我记得这是一件苦差事,但我只是安装了Flatpak,打开它,然后让它更新。

这太烦人了。应用程序要导入的一个库丢失。它在哪里?

东西是会移动的。我明白你的意思。但是为什么没有某种形式的自动转发呢?

但是,作为一个新的开发人员,我如何理解应用程序、工具、存储库和它们所有的怪异之处之间的复杂关系呢?在这一切中,以用户为中心的设计在哪里?

谷歌的Android Studio很复杂。它把所有的努力都放在用户身上。它一直抱怨目标太低,需要更新。它实际上并没有主动提出自己更新任何东西。它没有告诉我错误在哪里。它没有说“嘿,我们可以自动更新一些东西。以下是风险所在。想要继续吗?“。这只会让我处于不确定的境地。

为什么我们的工具不为我们做繁重的工作呢?IDE不是螺丝刀-它知道自己在做什么以及遇到了什么问题。它不需要单方面做出改变,但至少可以提出有益的建议。

这让我想起了我在20世纪90年代第一次开始学习C++时最早的挫折之一。编译器会说“第427行缺少分号”。对于这个问题,我会回答“如果你知道丢失了什么,也知道它丢失在哪里,为什么不自己补回来呢?”你这个没用的废物!“。

继续前进。深呼吸。Gradle开始抱怨我不能再用“编译”了。显然它已经被弃用了。好的。那么解决办法是什么呢?再说一次,Gradle和Android Studio都不愿告诉我。他们知道有问题,他们可能知道什么能让它工作。但他们保持沉默。因为去他妈的用户,阿米利特!?

解决办法很简单。我手动将“编译”一词替换为“实现”一词。

我这样做了十几次,都奏效了。这两者有什么不同?我不知道。我并不特别在意。我相信用一个词代替另一个词是有很好的理由的。我相信这会对某些人产生深远的影响。但对我来说,最终的结果是一样的。这款应用现在已经编译完毕。

想象一下,用户界面突然显示“从现在开始必须顺时针转!”你们都会说“去他妈的?逆时针有什么问题吗?这是我多年来的做法。“。他们都会说“伙计!顺时针方向是要走的路。这一切都必须改变。“。你会说,“伙计,你就不能把它们倒着装吗?这样我就不用改变我的行为来满足你的需要了。”然后他们会朝你吐口水。

为什么Android Studio/Gradle/随便什么都不能用“Mate-您在这里使用了编译-那不会起作用。要我自动更新语法吗?可能会没事的。“

别让我想。别让我浪费时间解决你造成的问题。

当然,我在推特上咆哮,并与来自Gradle的人进行了一系列令人沮丧的对话。推特是一个拙劣的理性讨论机制。所以我会试着在这里说得更清楚一些。

论坛上到处都是这样的人:“我不能让这个项目工作--Gradle抛出了奇怪的错误信息。帮帮我。我不明白。求求你--救命!“。

Gradle不做任何用户研究。它从不与独立开发人员、新手或经验丰富的专业人员坐在一起。它从不测试其错误消息。它不处理开发者关系。它不会在野外发现糟糕的实现,并提供有用的建议。它并没有毫不留情地专注于让用户的事情变得更容易。

Gradle专注于大型组织,几乎完全迎合他们的需求。那就够公平的了。这是他们的生意,他们可以随心所欲地经营。

安卓系统也大体上也是如此。它的开发工具专注于由训练有素的软件工程师组成的大型团队,他们都非常了解App开发的每一个深奥方面。

如果你是一名有很大支持结构的受薪员工,那就太好了。但对于小型和业余开发人员来说,这是一场噩梦。

我已经记不清有多少项目一开始就说“只需以正常的方式安装Flargnle…”哦,太棒了,为了制作一个很酷的小工具,我还需要学习另一项技术。

我以这个项目为例。我对Gradle、Maven、Android和其他所有人都非常不公平。我又累又沮丧。

但我相信您在其他部分的软件中也发现了同样的情况。你必须下载无穷无尽的库-然后陷入依赖地狱,因为v1.1与v1.2不兼容,最初的Google Code链接已经失效,邮件列表自2015年以来就没有收到过消息,作者的GitHub表明他们对最新的JavaScript框架更感兴趣,错误消息将你指向Usenet消息,最后StackOverflow的答案是“没关系,弄明白了”。

计算机的工作就是为我们做那些又累又无聊的工作。