Hacker News new | ask | show | jobs
by ranting-moth 1081 days ago
Using a house analogy, I don't hate other people's houses. I hate it when other people blow a hole in the side of my house to put in a new window.

They blasted a hole through two walls because it was the quickest way. Then just taped some plastic over the second hole. The project manager said it's still summer and we don't really need that wall at the moment.

I know who will have to fix the wall when the winter comes and I'm not looking forward to it. There's nothing in it for me and I'll get asked why my wall wasn't OK in the first place?!

6 comments

A follow up analogy is more typical in my experience. The foreman says that we should reinforce the walls. The PMP certified 6 sigma ninja Project Manager insists that the reinforced walls aren't necessary because no one is going to put anything on the wall. We will revisit the wall later when we the city tells us to enforce new wall codes.

No more than 6 months later a contractor tried to add a shelf to the unenforced wall. The contractor was never aware of what was in the wall and assumed he could find a stud. What he thought was a stud was actually the stud finder pinging on a water pipe. The construction workers didn't have time to run any tests with stud finders so they just wired everything up at the behest of management and hit the wall a few times with a rubber mallet to see if it held up. The project was behind by a week already due to the plans getting to the job site late.

He pounds in the nails, hits the water pipe, collapses the wall and floods the house. The on staff construction crew lose their jobs, the VP gets a promotion for showing they did something about this egregious error, and they are replaced with contractors.

“All of this has happened before, and all of this will happen again” - Six, BSG.
Filching from Nietzsche, scriptwriters are lazy bums.
Either that or they were aware of what they were doing and left the extreme irony of what they chose to repeat as a kind of Easter egg for anyone familiar with the source.

Just kidding, they're lazy.

Pieces of art are repurposed all the time, I am sure Nietzsche took it from somebody living even further back in the past.
Ecclesiastes 1:9

“The thing that hath been, it is that which shall be; and that which is done is that which shall be done: and there is no new thing under the sun.”

Love Ecclesiastes, hands down the best bit of poetry in The Book.

Also "Of making many books there is no end, and much study is a weariness of the flesh" way before it exponentiated to the moon ...

Honourable mention to "For everything there is a season", as sung by The Byrds.

Plus ca change, plus c’est la meme chose
“What happens once will never happen again. What happens twice will surely happen a third time.”
The eternal return of the same :)
By that logic Nietzsche was also a lazy bum.

https://wikipedia.org/wiki/Eternal_return

"The PMP certified 6 sigma ninja project manager" had me rolling
this is also not a good analogy because building codes will often just require 20" O.C or 16" O.C studs and those are in the plans- drafted by a person that designed the home (self, architect, drafter). Reinforcements for shelves or cabinets are also part of the code for kitchen walls. Those are not to be expected in every location in the house.

The framers are locked into the house plans as far as stud distances and special framing members that are specified. County inspections will make sure that's all there.

House construction is far, far more standardized and strict that programmers coding crap code. It's not a good analogy.

  > House construction is far, far more standardized and strict that programmers coding crap code. It's not a good analogy.
the way i took it was that in home construction what they describe is completely absurd and yet that is how most businesses do software, so the contrast there drove the point home (no pun intended)
"programmers coding crap code" vs. builder building crap houses. Both exists and both are very real.

In many ways the builders are even worse because they can usually hide the faults with caulk and paint if you want. Problem becomes evident when things start to leak or rot. That can be later but been causing damage in the meantime.

I'd say it's a pretty good analogy, the details aren't perfect, but it gets the point across.

https://www.youtube.com/watch?v=FfEX6GUxfZM

Here's an example of an arguably good builder who had one team install a in-wall tank toilet, then another team drills right through the tank causing a leak. The repair work essentially meant ripping out everything and doing it over, even though there should have been mitigations in place to prevent it and having the plans/documentation available to everyone.

While construction has more standardization, planning, and inspections, it still relies on implementation and is going to have failures.

No analogy is good when you dissect it to pieces. Being perfect encapsulations of reality is not the point of analogy, they are simply there to increase understanding.
In the same tone:

Someone put fake shutters on the sides of the windows - the wrong size at that. This was accepted as a good solution because no one tried to close them. Would be impossible anyway, because there are no hinges.

This happens more often than it might seem.

You don't hate other people's houses until you're forced to live in one of them.

Then, I agree on the point of someone else blasting a hole in your house.

That's an organizational issue. Code that does such things would not pass review unless it were specifically a requirement (or if your team is disogranized).

Once you're a senior dev, you start to look at the project holistically, adding your input to the design in order to ensure that the project serves its objectives. The code is still important, sure, but the success of the project is more important (and that can sometimes involve some short-term ugly changes).

If there's a business need for a hole in the side of the house covered with plastic that will probably be there for the next year, it's expected that you've all had many meetings discussing this modification and its necessity. By the time the code changes come, you've either long agreed with the reasoning, or have agreed to hold your tongue, or have started shopping out your resume.

Regardless, by the point this code is written, you'll already be expecting it and won't be blaming the dev who wrote it.

I think you can boil any problem in a software company down to "an organizational issue".

What you are describing happens in an ideal world of software development. It exists but it's rare.

Actually, that's been my experience in most places I've worked over the past 25 years.

When it wasn't, I shopped my resume around.

They got off easy with your analogy.
it's not a good analogy when it's not realistic. How often are people walking down the street blasting holes in peoples houses to add windows?
It's a good analogy if the reader understands it, and it is accurate.

Both are true here. People don't get away with quite that level of nonsense with buildings because even laypeople can see all the essentials, why it would be bad, who to blame if it did happen, etc. So it never happens and doesn't need any kind of illustraing analogy to explain it to anyone.

That DOES happen all the time in software and it's invisible to almost everyone including your own bosses, and does need some kind of analogy to illustrate what's wrong about it, and how wrong, and the nature of the wrongness.

Any other example that actually ever happens, would just be some other equally opaque phenomenon from some other esoteric field, and would by definition be useless as an analogy.

The whole point is so that anyone can see it and conclude "that would be crazy, outrageous, intolerable". Of course it never actually happens.

My house has a hole where a cable tv contractor inserted a coax line that they ran all the way around the house, from the service drop to right outside the living room. This despite the house being wired with coax internally, including between these two points. There was a disconnect where someone had replaced a tee with a coupler some years ago, but this was easy for me to find and fix.

Years later I spoke with an ISP about an install and they proposed exactly the same thing. I think people do this a lot.

I get the point but I do agree that it might not be a good analogy since when building structures people might disagree on where they should go but not on what a wall and a door are. In software your caretfully crafted "house" can just be a convoluted way to get from a to b to someone else.

To me writing a story comes closer to what writing software is. I can't just get an overview of their plans and know right away where I should be connecting the new "room" I want to build. Instead I need to understand what story the author was trying to get across and make my insertion in a way that makes sense with what was there before.