I don’t the answer to the all questions. But here I think it is just a way to avoid responsibility. If someone choses CDN “number 3” and it goes down, business people *might* put a blame on this person for not choosing “the best”.
I am not saying it is a right approach, I just seen it happens too many times.
I personally think that this kind of analogy is inheretenly wrong.
Software has very little bounds to physical world, comparing to actual architecture. Most of the bounds rise from ideas.
Toilet in this analogy cannot be moved, because it was originally decided, that it will be locked and didn’t invest in mobile toilet. Which was reasonable, but highlights lack of vision for the final product.
And this is the biggest difference with architecture. Nobody starts building a house without knowing final design.
> And this is the biggest difference with architecture. Nobody starts building a house without knowing final design.
Many houses are actually built without knowing the final design, especially in informal settlements in the Global South.
It's referred to as incremental building or incremental urbanism. What starts as simple structure (e.g. a shack) will develop over time into different more formal types of housing. It's an approach to housing that works well with precarious financial means, shifting regulatory environments, uncertain land tenure, changing household size or the lack of building supplies.
There are design patterns for "incremental building", such as mounting pipes and wires on the surface of walls, ceilings and floors instead of burying them in concrete. Being able to reorganize a simple house easily is the "final design"; what point are you trying to make?
Point is that software is much “softer” and fluid than buildings. If comparing changing wites ir rooms layout is similar what refactoring of software is like, then I am happy for experience you’ve had!
...and if you extend the "building" phase to multiple generations or even centuries it's even more prevalent. You get a very organic & dynamic environment that many would say is a slum, but is an accurate representation of most of the software I've seen.
Maybe the guy who designed that church had a clear idea of what it would look like when finished, but i doesn't look like that today!
At least 50% of debates on HN are basically: "you said that A is a good analogy for B, but you're wrong because A and B are not literally the exact same thing."
I'd say the number is at least capped at about 100 billion, but that depends on how tightly you define "person" and "place" (not even getting into the specifics of "autistic").
E.G. if you want your instances of "people" to be active, we're now capped at roughly 8 billion, since 92% of instances have already been garbage collected in this run.
I would still recommend planning a Long integer, just to get yourself some room for error.
Toilet in this analogy cannot be moved, because it was originally decided, that it will be locked and didn’t invest in mobile toilet. Which was reasonable, but highlights lack of vision for the final product.
I don't think the point is that the toilet can't be moved – it's just expensive and disruptive to do so.
Nobody starts building a house without knowing final design.
I would argue the exact opposite – literally _every_ house is built without knowing the final design! Who knows what someone is going to need or want in the future? I'm writing this from a house that was built prior to the existing of indoor plumbing!
> I would argue the exact opposite – literally _every_ house is built without knowing the final design!
The sheer number of houses that have additions, bathroom renos, kitchen renos, walls blown out, basements apartment added, second floors added etc. etc. makes their claim ludicrous on the face of it.
In software we are often taking an existing design and modifying for new requirements. The house analogy is excellent for explaining WHY one thing is easy but another is hard.
A while back, I visited a facility that builds prefabricated houses. Using CAD, they can, and do, create large and architecturally complex one-off designs, something that would not be possible without knowing not only the final (as-constructed) design, but the intermediate states as the modules are constructed, moved to the site (including ensuring that they can be moved to the site), and assembled.
I don't suppose that everything works entirely according to plan, and of course there is no way that every future change request can be anticipated, let alone accommodated in advance, but for all practical purposes, this shows that if one is prepared to do what it takes, one can start the construction of a house knowing what you are going to get and with a detailed plan for getting there.
Computational technology has a particularly broad and active leading edge where unknowns are being tackled, but even so, most software development is nowhere near that edge.
The original point about houses is that with software, similar-seeming changes can have greatly differing costs, on account of what is hidden from the users' view, and I think the analogy works very well in making that point.
>Nobody starts building a house without knowing final design.
There is a TV series in the UK called Grand Designs where people build their own houses. Nearly every cost and time overrun is down to making stuff up on the hoof. The few projects that are on time and budget are the ones that decide everything upfront.
I've watched this show, and the process - and results - look an awful lot like software development projects. Just replace the owner with a c-suite executive.
>I personally think that this kind of analogy is inheretenly wrong
Well, every analogy is inherently wrong at some level of detail. Find an analogy you think is appropriate and zoom in further and it will break.
No analogy, metaphor, or general comparison is ever perfectly isomorphic with the target. As a function of communication, the mark of a good one is if your audience understands.
Agree. I no longer use analogies from problem domains that I know nothing about (home building, bridges, vehicles, etc) to describe software. A better analogy, I think, is search through high dimensional space.
> And this is the biggest difference with architecture. Nobody starts building a house without knowing final design
I must disagree based on the number of residential homes turned into businesses, large scale remodeling, or tearing a house down to rebuild. All these fit well into the analogy.
Yea. Many places in Europe have historical city scape protection. Buildings that have been built centuries ago are being rebuilt internally all the time to fit new purposes and regulations. Not to mention extreme cases like the Kowloon walled city, that was basically a gigant interconnected amalgamation of buildings that housed 35000 people. Nobody envisioned what that would become when it started as an imperial fort, that's for sure. There are many reasons why building are remodelled to fit a new purpose without the new purpose even having existed when the buildings were first conieved.
ps. And even modern buildings suffer from this, like the projects where the requirements change all the time. Like Irelands new children's hospital, that should have cost just a couple of million Euros and balooned to billions. Construction projects are somemites done exactly like software development projects with all the fallout that comes with it. Same story with the airport in Germany (BER).
I like the house analogy, but I like to think of it as if the people building the house did not know how it was supposed to look (or function). This is mostly true, since very few developers know exactly how the end result (product/service) should look and function when the start coding.
e.g. "We did not know where to put the piping at the start, so we put it on the outside and now installing a new restroom is sort of tricky."
This is why nobody can decide if computer science is actually science, engineering, or art. It's such a vast industry that it's clearly all 3 depending on what your doing.
Ha, but to me it's why the analogy works. People don't question that we to do software without knowing final goals because, it's legit unknown, and from an external point of view the waste is not distinguishable from strait work.
The house analogy makes the waste understandable, if you accept to compare design errors with late design.
I agree—I've used the analogy in the past, but I don't anymore. The reason is: with new home construction, there's a very clear move-in date. You can make additions or renovations, but most people are not constantly changing their house.
However, in software, you need to continuously work on the product—and it's not just routine maintenance analogous to cleaning the gutters or changing the air filters. In software, it's possible to launch ("move in") before most of the rooms have been built. In software, you can use a library or API and start with a skyscraper on Day 1.
The analogy just doesn't work. It tells clients/stakeholders "this is a tough project but it'll be over someday, and you'll never have to think about construction again."
Oh, the analogy does work. Every construction needs to be adjusted at times. Sure, not as often as software, but new regulations and the passing of time is eating at the substance. After a couple of decades most buildings tend to need major overhaul and that's not much different than software. Even the reasons are similar (e.g. new building codes, energy efficiency standards, obsolote tech stacks - think asbestos and lead pipes). Especially if you live in an area where the city scape needs to be preserved for historical reasons, houses behave very similar to software - just on a different time scale.
> After a couple of decades most buildings tend to need major overhaul and that's not much different than software
Respectfully disagree. Software is like building a house, and then needing to build more rooms every month forever, and every few years having to tear it all down or completely rework the foundation.
Guess it depends on the software. I have seen enough business critical software that was built 15 years ago with the developer having long left the scene and nobody having any idea on how it works internally (much less skill to actually change something).
I had a new laptop somewhere around 2006. Vista was lagging and throwing errors constantly. I switched to beta of windows 7 and it was waay snappier and stable. On the same hardware.
Maybe your Vista installation was messed up or crusty. Did you compare fresh Vista vs fresh 7 for this?
A lot of laptops of the day that came preinstalled with Vista also came preinstalled with a lot of junk that slowed it down like Norton, AT&T, other such bloatware that ran at start-up, and people blamed it all on Vista being slow. Then later they wiped it and installed fresh Win 7 without bloatware, and hey waddaya know, it's faster.
"Steve took a chance on us and believed in our crazy dream of making computer-animated films; the one thing he always said was to simply 'make it great.' He is why Pixar turned out the way we did and his strength, integrity, and love of life has made us all better people. He will forever be a part of Pixar's DNA."
You're quoting the top two Pixar executives, and from immediately after Jobs' death as well. How about someone who isn't a millionaire?
aren't credible because they became so successful that they're now millionaire executives
Yes that's what I'm saying. The statement of two men who stood at the top of the ladder about the man who put them there immediately after that man has died is absolutely not credible in regards to judging how that man treated regular workers. At all.
A legendary animator and director, both who helped found Pixar with Jobs, aren't credible because they became so successful that they're now millionaire executives?
Jobs didn’t found Pixar; it spun out of George Lucas’ world and works and Jobs bought into it when it was several years old, even several years with the name Pixar. The Wikipedia article is self contradictory as its first paragraphs talk as of hee were a as founder, but hee was a much later major investor.
So far I haven't seen a counter experience from you about how Jobs treated the "regular workers" at Pixar, so as I see it, it's a quote from people who were close to what happened versus the absence of a counter experience.
Oh please. Googling "steve jobs bully pixar" reveals at least one story of horrible behavior directed toward regular staff members.
Jobs could be a bully, it's well documented. Pixar wasn't somehow immune to this behavior.
You've painted a utilitarian, partisan viewpoint: that the cultural and technological significance of Pixar outweighs any negative experiences of staff. The two are not easily comparable. How do you quantify them, what's the denominator? Jobs didn't have a crystal ball, he couldn't know Pixar would succeed. What was his calculus? How did he determine the trade-offs between success and bullying? Finally, cultural/tech significance is most certainly possible without putting staff through negative experiences.
I don’t the answer to the all questions. But here I think it is just a way to avoid responsibility. If someone choses CDN “number 3” and it goes down, business people *might* put a blame on this person for not choosing “the best”. I am not saying it is a right approach, I just seen it happens too many times.