(内容注释:在这个博客上,我通常会试着稍微控制一下我天生的亵渎程度。我不会在这篇文章中这样做)。
我写假说的主要原因是要毁掉差劲的软件。一切都很糟糕,我希望它不那么可怕。
但是,你作为黑客抛出的那个随机代码,当它做了你需要做的事情时就停止了,把它扔到了pypi上,然后又忽略了它?
完全没问题。谢谢你写了这封信。这个世界因为你这样做而稍微好了一些,你没有期望“做得更好”的负担。这毕竟不是一份工作,不是吗?我们不是付钱让你这么做的。
我自欺欺人地认为,关于假设,我可以合法地宣称的一件事是,它是高质量的。到目前为止,人们在1.0版本中报告的最严重的错误是,当给定错误的参数时,假设从正确的位置抛出具有正确类型的异常,并显示错误的错误消息。假设适用于OSX、Linux、Windows,可能是*BSD(我听说过SQLITE的一些打包问题,但此后就再也没有出现过,所以我认为一旦这些问题得到解决,它就会起作用)、Python2.7、3.2-3.4、CPython、PyPy…。它有100%的分支机构覆盖率,有文档记录,等等。基本上,就质量而言,假设几乎每件事都是正确的。
所以我已经证明了这是可以做到的,你也应该这样做,对吗?
不,那是胡说八道。我在这里告诉你,作为一个做过免费制作高质量软件工作的人,你没有必要这样做,你也不应该为没有这样做而感到难过。
想知道我在假设中是怎么做对的吗?我的意思是,对细节和高标准的痴迷有所帮助,甚至可能是必不可少的,但它们甚至还远远不够。事实上,有两件事是我做出假设的关键因素,这就是今天的软件质量:
今年,我把800小时的工作时间完全免费地放在了假设的某个地方。这就是达到这种质量水平所需要的。
我之所以能这样做,只是因为我有时间和金钱这样做。我有时间这样做,因为我有强迫症,没有家属,也没有工作。我只能因为钱而没有工作。我之所以有钱,只是因为我去年下半年的工资是我习惯的两倍,生活费是我习惯的一半,而且太沮丧了,不能把它花在任何有趣的事情上。
我能在不到800小时的时间里做假设吗?可能吧。不过,我怀疑我能在不到400天的时间内完成这项工作,如果期望我能在可行的最短时间内完成任何项目,那就太愚蠢了。
不过,假设是一个庞大而复杂的项目(如果它看起来不像,那是因为这800个小时中的很多时间都花在了使其易于使用上)。大多数项目可能要简单一个数量级。
也就是说,为了生产出高质量的软件,你只需要休息两周,实际上是免费工作。
也就是说,如果你生活在文明国家,你的假期津贴几乎是你假期津贴的一半,如果你住在美国,你的假期津贴可能会超过你的假期津贴。
你能在更短的时间内生产出高质量的软件,只在你的空闲时间工作吗?我怀疑。空闲时间天生效率较低。你累了,它是支离破碎的。一天晚上,你花了一个小时试图弄清楚为什么你的windows版本现在失败了,因为发布了新版本的pip,然后我猜你可以再花半个小时,但你的心并不是真的在里面,你基本上没有时间好好地投入其中。质量的门槛很高,障碍也更高,除了投入时间之外,你真的没有什么可以做的。
别误会我的意思。如果您能花时间,我将非常感谢您。我只是觉得如果你不这么做你不应该感到难过。
没有义务释放劳动力。你在项目上免费投入的每一个小时都是送给世界的礼物。如果这个世界回来对你说“你是个坏人,因为你不支持这件事,我需要你支持”,那么去他妈的他们。如果他们想要,他们应该付钱给你,或者自己做。
(编辑注意:当然,这并不是说您不应该要求开放源码项目上的特性。只是你没有资格拥有它们。如果你礼貌地问,那很好。如果作者接着说“对不起,不,我没有时间/我不感兴趣/确实有任何其他原因”,那也没问题。)。
注:如果您喜欢这篇文章,您可以阅读后续文章。