文档结构  
原作者:DHH    来源:m.signalvnoise.com [英文]
CY2    计算机    2016-12-31    0评/402阅
翻译进度:已翻译   参与翻译: vincentsun (9), 苏小猞 (1)

好的软件并不常见是因为编写起来很辛苦。 在理论上,我们都知道这很辛苦。我们总在谈论那是有多么辛苦,然而当预期的情况发生,并且我们所使用的或正在开发的软件表现差劲时,我们也似乎会感到震惊(就是震惊!)。

这是典型的认知失调:接受编写软件不易的事实,但还是希望所有的软件都应该很好。

这也出于一种努力与成就成正比的公平理论。尽管困难重重,每个心中有正确意念的人,投入到工作中,都会成功。不,他们不会的,那只是幻想罢了。

第 1 段(可获 1.43 积分)

这些幻想是无害的。当我们期待好的软件很可能来自于编写过程的困难时,我们很可能会遇到不可避免的失望。更糟糕的是,如果我们觉得从我们不完美的努力中 应该获得 好的软件,我们会将不可避免的失败归咎于所有人,而不是我们自己。

对于这个令人震惊但又在预料之中的失败,我们第一个会归咎的是我们的工具。这是最容易的做法。如果你在咒骂你的编程环境时,它不会骂回来,它不会反驳你荒谬的指责。当你将你的故事分享给朋友或同事,他们作为一个了解你的好人会这样做:他们同意你。他们同意,即使你是错误的。

第 2 段(可获 1.64 积分)

由于善良和自尊,幻想的气泡继续膨胀。工具不会为自己辩护,你的伙伴又在纵容你。因此,没有方法可以扎破那个气泡。(呃,除非你上网逛逛。要是你没能实现一些陌生人的技术选择,他们总会很愿意告诉你你有多么无能。)

无论如何,这是一个序言,让我们了解这个基本但让人不舒服的真相:软件经常质量不高,因为它的创造者不是有足够能力的软件编写者。有很多编程方面的资格证,有很多能缓解的情况,以及有一个对于“有能力的软件编写者”的很广泛的定义。但接受责任是一个好的开端。接受责任是提高的第一步。

第 3 段(可获 1.58 积分)

因为不然的话:如果我责怪我的工具、流程、利益相关者或者是满月,我就能将自己免于责任,但我就没有提高的动力和对于如何提高的认识了。但如果我接受了至少部分责任,我就有一个明确的提高的起点。

我完全理解为什么我们最后会这个样子。当然我们的意图是好的。学习新东西,比如编程,是很艰巨的。冒名顶替综合症盛行。我们总有一系列原因解释为什么我们为什么希望鼓励和支持所有人尝试让脾气暴躁的电脑来舞蹈(编程)。

第 4 段(可获 1.3 积分)

对于这些意图,我们已经在令人吃惊的程度上成功了。今天就开始编程是件再容易不过的事情。从开源,到一流的书籍和教程,再到训练营,这是一个辉煌的历程。

这与编程从深度到宽度上都非常难以掌握的事实形成了鲜明的对比。有很多很多语言、概念、框架、库和工具。了解所有这些就很难了,更别提理解它们所有。这是一个多么古怪的二分法!

但这个二分法很少成为新入行者讨论的重点。我们都很迫切地鼓励编程,并解释开始编程是多么容易。因此当很多人因为其能力不足而失败时,都有点觉得被误导了。当然他们会寻找替罪羊,比如糟糕的工具或文档。

第 5 段(可获 1.83 积分)

这就是为什么有一个问题很值得我们思考:我们是不是可能给那些希望学习编程的人带来了伤害,因为我们一直宣称现在编程多么简单。是的,我们让编程更为简单,让开始学习编程不那么可怕。这是真实的进步。但“开始编程”从定义上来说,只是第一步而已。

我认为是时候更诚实地讨论一下第二、三步了。不要再预期所有开始写软件的人最后都能写出美妙的代码和可以维护的架构。他们不能。

第 6 段(可获 1.24 积分)

大多数代码很可能最后只是:代码。这些代码对于后续阅读者来说可能是令人费解的,因为对于原作者来说都很难理解。代码很难深入研究,因为深入研究与“让代码工作足够好到可以交付的程度就行”还是有很大差距的。代码非常复杂,因为系统自然熵基本趋向于一个泥球。

一些环境因素可能导致结果与上面的描述有些出入。就像有些棒球棒能将球打得更远,有些轿车转向更快,以及有些打字机听起来更怡人一样。工具绝对是相关的,只是比起我们希望新入行者相信的要少很多。

第 7 段(可获 1.38 积分)

寻找正确工具的真实原因,是正确的工具能帮助软件开发者一点点进步,最后精通编程。

现在我完全意识到我在讨论我自己的情况。作为一个工具制造者,我已经听到几辈子能听到的因为软件不好而责备编程环境的可悲的故事(有些是我自己的!)。但是这同样是我的情况,因为这是我自己的故事:我在走向精通的路上曾不断指责,直到我点燃了激发我的兴趣并改变了我的轨迹的红色火花。

这也是我观察了20年的软件制造和看别人做同样的事情得到的结论。我能看到哪些人持续进步,哪些人最终止步不前。那些因为他们埋怨环境而不去试图让环境变得更好的被解雇的人都止步不前了。那些总把他们无法做对事情的原因归咎于超现实或个人迫害的原因的人也是一样。

第 8 段(可获 2.11 积分)

我希望看到更少的人止步不前。只有你持续攀登,生命才更有乐趣。为了更可能做到这一点,你需要接受这个可能性:你将在很长时间写糟糕的软件。如果你接受了这个责任,你有可能写出在不同的或者令人兴奋的方面糟糕的软件,但更有可能会写出更好的软件。

没有任何框架甚至语言允许你跳过这个过程。只有一些框架或语言能够多少匹配你的情感,并点燃你理解所有事物的激情。找到它们,然后开始前行吧。

第 9 段(可获 1.4 积分)

我这一生都在使用、理解和通过  Rails 提高 Ruby 。 Rails 是从 Basecamp 中提取的web框架。如果你还没看过它们,可以去看一下。

 

关于作者:DHH

基于Rails的Ruby的创造者,Basecamp公司创始人兼CTO(公司前身是37signals),NYT的REWORK和REMOTE方面的畅销书作者,以及勒芒获奖车手。

第 10 段(可获 0.71 积分)

文章评论