当前位置: 首页 > 工具软件 > Thing > 使用案例 >

thing_12

党航
2023-12-01

Code Is Design
https://97-things-every-x-should-know.gitbooks.io/97-things-every-programmer-should-know/content/en/thing_12/

Imagine waking up tomorrow and learning the construction industry has made the breakthrough of the century. Millions of cheap, incredibly fast robots can fabricate materials out of thin air, have a near-zero power cost, and can repair themselves. And it gets better: Given an unambiguous blueprint for a construction project, the robots can build it without human intervention, all at negligible cost.

One can imagine the impact on the construction industry, but what would happen upstream? How would the behavior of architects and designers change if construction costs were negligible? Today, physical and computer models are built and rigorously tested before investing in construction. Would we bother if the construction was essentially free? If a design collapses, no big deal — just find out what went wrong and have our magical robots build another one. There are further implications. With models obsolete, unfinished designs evolve by repeatedly building and improving upon an approximation of the end goal. A casual observer may have trouble distinguishing an unfinished design from a finished product.

Our ability to predict time lines will fade away. Construction costs are more easily calculated than design costs — we know the approximate cost of installing a girder, and how many girders we need. As predictable tasks shrink toward zero, the less predictable design time starts to dominate. Results are produced more quickly, but reliable time lines slip away.

Of course, the pressures of a competitive economy still apply. With construction costs eliminated, a company that can quickly complete a design gains an edge in the market. Getting design done fast becomes the central push of engineering firms. Inevitably, someone not deeply familiar with the design will see an unvalidated version, see the market advantage of releasing early, and say “This looks good enough.”

Some life-or-death projects will be more diligent, but in many cases consumers learn to suffer through the incomplete design. Companies can always send out our magic robots to ‘patch’ the broken buildings and vehicles they sell. All of this points to a startlingly counterintuitive conclusion: Our sole premise was a dramatic reduction in construction costs, with the result that quality got worse.

It shouldn’t surprise us the above story has played out in software. If we accept that code is design — a creative process rather than a mechanical one — the software crisis is explained. We now have a design crisis: The demand for quality, validated designs exceeds our capacity to create them. The pressure to use incomplete design is strong.

Fortunately, this model also offers clues on how we can get better. Physical simulations equate to automated testing; software design isn’t complete until it is validated with a brutal battery of tests. To make such tests more effective we are finding ways to rein in the huge state space of large systems. Improved languages and design practices give us hope. Finally, there is one inescapable fact: Great designs are produced by great designers dedicating themselves to the mastery of their craft. Code is no different.

By Ryan Brush

想象一下,明天醒来,得知建筑业取得了本世纪的突破。数以百万计的廉价、速度极快的机器人可以凭空制造材料,电力成本接近零,并且可以自我修复。而且情况越来越好:只要有一个明确的建筑项目蓝图,机器人就可以在没有人为干预的情况下建造它,所有这些成本都可以忽略不计。
人们可以想象对建筑业的影响,但上游会发生什么?如果建筑成本可以忽略不计,建筑师和设计师的行为会如何改变?如今,在投资建设之前,物理模型和计算机模型都经过了构建和严格测试。如果建筑基本上是免费的,我们会麻烦吗?如果一个设计失败了,没什么大不了的——只要找出问题所在,让我们的神奇机器人再制造一个。还有进一步的影响。随着模型的过时,未完成的设计会在接近最终目标的基础上反复构建和改进。一个不经意的观察者可能很难区分一个未完成的设计和一个成品。
我们预测时间线的能力将逐渐消失。施工成本比设计成本更容易计算——我们知道安装主梁的大致成本,以及我们需要多少主梁。随着可预测的任务逐渐减少到零,不太可预测的设计时间开始占据主导地位。结果产生得更快,但可靠的时间线会溜走。
当然,竞争经济的压力仍然存在。随着建筑成本的消除,一家能够快速完成设计的公司在市场上获得了优势。快速完成设计成为工程公司的核心动力。不可避免的是,对设计不太熟悉的人会看到一个未经验证的版本,看到提前发布的市场优势,并说“这看起来足够好了。”
有些生死攸关的项目会更加勤奋,但在许多情况下,消费者会因为设计不完整而痛苦。公司总是可以派出我们的神奇机器人来“修补”他们销售的破碎建筑和车辆。所有这些都指向了一个惊人的违反直觉的结论:我们的唯一前提是大幅降低建筑成本,结果质量变得更差。
上面的故事已经在软件中上演了,这不应该让我们感到惊讶。如果我们接受代码是设计——一个创造性的过程,而不是机械的过程——软件危机就得到了解释。我们现在面临设计危机:对高质量、经过验证的设计的需求超过了我们创造它们的能力。使用不完整设计的压力很大。
幸运的是,这个模型也为我们如何变得更好提供了线索。物理模拟等同于自动化测试;软件设计要经过一系列残酷的测试才能完成。为了使这种测试更加有效,我们正在寻找控制大型系统巨大状态空间的方法。改进的语言和设计实践给了我们希望。最后,有一个不可避免的事实:伟大的设计是由致力于掌握自己工艺的伟大设计师创造的。代码也不例外。
作者:Ryan Brush

 类似资料:

相关阅读

相关文章

相关问答