TE
科技回声
首页24小时热榜最新最佳问答展示工作
GitHubTwitter
首页

科技回声

基于 Next.js 构建的科技新闻平台,提供全球科技新闻和讨论内容。

GitHubTwitter

首页

首页最新最佳问答展示工作

资源链接

HackerNews API原版 HackerNewsNext.js

© 2025 科技回声. 版权所有。

Who builds a house without drawing blueprints? (2015)

19 点作者 mxschumacher将近 5 年前

9 条评论

doctor_eval将近 5 年前
I don’t actually disagree with anything in the article, but comparisons between software and buildings - especially buildings - leave me cold.<p>There is almost nothing actually in common between software and buildings. You can’t move a house as a matter of course. You can’t modify a house in a few keystrokes. You can’t just copy a house or delete it. You don’t generally consider how a house will evolve over time. A house has a limited number of possible states, and a trivially low number of entrances and exits. The analogy is so poor that it’s difficult even to make analogies about how bad an analogy it is.<p>I have thought for a long time that building analogies are horribly ill suited to software. Perhaps better than nothing, but only barely. Software is a thing unto itself and I just find these analogies make we want to run away screaming.
评论 #23487066 未加载
评论 #23487185 未加载
评论 #23487266 未加载
评论 #23487342 未加载
评论 #23487924 未加载
评论 #23490427 未加载
评论 #23487635 未加载
Pinus将近 5 年前
When building a house, there is a considerable difference in effort between making detailed construction drawing and building the house, so it makes sense to make a detailed construction drawing.<p>In software, there is effectively no difference between making a detailed design and actually writing the program, so it becomes a lot harder to know where to stop drawing and start building.<p>I guess that many of us have, at some point, thought we had come up with a good design, after spending lots of time on it, only to find that it stumbled on some detail when we actually tried to implement it. This makes it tempting to think &quot;If I must work this out in detail anyway, I might as well do it in code. That way, if I get it right the first time around, I will be done!&quot; Unfortunately, it also makes it tempting to stick with a design after it has proven to be a mistake, because of the sunk cost.<p>(edit: grammar.)
Gravityloss将近 5 年前
It does feel that a lot of buildings were designed with very little effort and are just a random arrangements of components and some patch work to make it passable. There are so many weird solutions, especially in newer buildings.<p>Far too few entrances and exits. Doors opening the wrong way, or extra doors or short stairs you have to pass through. Random looking window sizes and placements. Or no windows. Or no windows to the side with the best views, instead all facing a close by building. Having to walk around a lot for basic oft repeating functions - ie stairs or elevators that feel like they are installed backwards.<p>I did some hobbbyist 3d shooter level design in the past, and played a lot of custom maps. You could see the high level &quot;flow&quot; and vision of master designers when playing their maps or looking at them in the editor. Less experienced mappers might have some good individual ideas but the whole would usually not be so coherent.
StavrosK将近 5 年前
I liked the article and tried to look into TLA+, but the documentation is off-putting at every turn. There is no HTML documentation, you need to download a ZIP of a book. Opening the ZIP, it&#x27;s not just a single PDF, it&#x27;s a bunch of PDFs (many a page or paragraph long) that the table of contents hyperlinks to. This makes impossible to skim the documentation.<p>Looking at some examples, it looks like TLA+ uses non-ASCII symbols which are then maybe mapped to ASCII? As such, you need to remember lots of obscure sigils, and I couldn&#x27;t find a high-level intro of how it works.<p>It sounds very interesting, but the documentation could be made much more helpful. Lamport comments that &quot;people nowadays don&#x27;t read, so I made a video course&quot;, but I&#x27;m not surprised people don&#x27;t read if reading is <i>this</i> hard. (I personally dislike video courses because you can&#x27;t skim them and would much prefer HTML documentation).
评论 #23488046 未加载
评论 #23490472 未加载
eitland将近 5 年前
&gt; Architects draw detailed plans before a brick is laid or a nail is hammered. But few programmers write even a rough sketch of what their programs will do before they start coding.<p>Is the second sentence here true in any meaningful way?<p>Usually when I start on a personal project that is bigger than a oneliner or a script and more novel than a web page I&#x27;ve been thinking about it for weeks and have made a few sketches of the architecture and key data models and even then I start with a rough outline of the code ready to throw it away.<p>I don&#x27;t think everyone does like me but it would surprise me if most professional programmers doesn&#x27;t make some kind of sketch before starting on a project..?<p>Either I&#x27;m really unusually professional (I don&#x27;t think so) or this article has a weak starting point.
imtringued将近 5 年前
The building analogy doesn&#x27;t work because the situation is completely reversed. Building commercial software is much cheaper than designing it. Constructing a building is much more expensive than designing it.<p>Specifications are expensive and since designing software is risky the specification forces you to take the entire risk upfront. Lots of projects stop after a failed MVP to cut losses. You can&#x27;t do that with a well thought out specification.<p>There are obviously well studied areas of computer science where the opposite is true. Compilers, databases and simulations benefit from a good design but this is precisely because of their well studied nature. The only way to get an edge in the commercial world is by doing something nobody else did before. That often means nobody, including the creator of the software, knows what the best design is.<p>This commonly results in an &quot;idiotic market leader&quot; effect where a product with obvious flaws (say mongodb) somehow manages to dominate a market.
pintxo将近 5 年前
My TLDR:<p>&gt; 1h of up-front thinking about the problem and your solution can save you days of refactoring, testing, debugging. The author proposes writing specifications as good way of up-front thinking.<p>Authors own conclusion:<p>&gt; There is nothing magical about specification. It will not eliminate all errors. It cannot catch coding errors; you will still have to test and debug to find them. (Language design and debugging tools have made great progress in catching coding errors, but they are not good for catching design errors.) And even a formal specification that has been proved to satisfy its required properties could be wrong if the requirements are incorrect. Thinking does not guarantee that you will not make mistakes. But not thinking guarantees that you will.
评论 #23487035 未加载
评论 #23487201 未加载
dang将近 5 年前
Discussed at the time: <a href="https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=9287426" rel="nofollow">https:&#x2F;&#x2F;news.ycombinator.com&#x2F;item?id=9287426</a>
yonixw将近 5 年前
Just like with real estate agents, most times they oversell and charge more just because some new paint. Same with software, dozen of times I planned out a solution just to find that a component does not support a case or have a bug. Thankfully we can just &quot;Fail Fast&quot; in software. So we should use it.