9 ms·
Software is a house. The more you lean into the analogy, the better. I often tell clients "The first thing you asked me to do was to move a dining room chair i
by liquidise 2y ago
Software is a house. The more you lean into the analogy, the better.
I often tell clients "The first thing you asked me to do was to move a dining room chair into the living room. Then you asked me to do the same with the toilet. The latter only works if we tear out all the plumbing."
Non-coders seem to understand these analogies intuitively.
- amelius 2y agoI'm currently building a skyscraper on the foundations of a bikeshed. Anyway, a nice idea for generative AI could be to take source code and turn it into a corresponding image of a building so managers can see what they're doing wrong.
- ivolimmen 2y agoWhat? Are you working on my project???
- ornornor 2y agoWait until they tell you it needs an Olympic swimming pool in the penthouse
- jermaustin1 2y agoOn the cantilevered terrace of the penthouse. The residents of the penthouse aren't going to give up living space for a pool!
- antonhag 2y ago> I'm currently building a skyscraper on the foundations of a bikeshed. Not sure if you are joking or not, but I often hear similar things and I believe that it misses the point. What constitutes a good foundation in software is very subjective - and just saying "foundation bad" does not help a non-technical person understand _why_ it is bad. It's better to point at that one small rock (some ancient perl-script that no-one longer understands) which holds up the entire thing. Which might be fine until someone needs to move that rock. Or something surrounding it.
- tough 2y agoxkcd: Dependency https://xkcd.com/2347/ https://xkcd.com/2347/
- scott_w 2y agoI like this thinking because it's a true reflection of how things work. I strongly doubt any housebuilder goes back to the architect and says "can't do that, foundations bad." They'd explain what the problem is: maybe the design is rated to a certain weight/height, or what's in the ground composition that prevents the requested changes. We should do the same in software engineering. What exactly in our design (e.g. that Perl script that's running half the operation that we need to investigate) is stopping us?
- xattt 2y agoGiven the generative AI aspect, the output would likely morph drain pipes into elevator shafts midway.
- mikehollinger 2y agoEh. A better analogy - the output would decide that there needs to be conduit between floors for chilled water, hot water, sewage, dutifully make several 4” pipes, and then from floor to floor forget which is which.
- maicro 2y ago"No, 'c_water' means 'clean_water', it has nothing to do with the temperature, so that's why you got burnt; also 'gray water' has nothing to do with a positional encoding scheme, and 'garbage collection' is just a service that goes around and picks up your discarded post-it notes - you didn't take that rotting fruit out of the bowl, so how could we be expected to know you were done with it?"
- Toutouxc 2y agoEven better actually.
- xattt 2y agoIt’s not great for the up-going elevator passengers encountering someone’s daily constituions.
- DHRicoF 2y agoJust like my code!
- belter 2y agoThat would be X-Rated...
- spacecadet 2y agoHave you tried this? I bet it would work right now and look exactly as expected, a mess. The again, I gave GPT-4o some obfuscated js, a canvas rendering some buildings (shared here originally), and asked what was being rendered and it returned that it was a heart. So maybe not.
- forinti 2y agoAre they willing to pay for a skyscraper at least? I find that a lot of people expect to pay for a shed and get a skyscraper that has no maintenance cost.
- RegW 2y agoI think it was in a book by Grady Booch that I read something like: No one would ask an architect to add a third basement to an already complete skyscraper, but it happens in software all the time.
- maybe_pablo 2y agoReminds me of "If Architects had to work like Programmers". https://archive.is/r4l6C https://archive.is/r4l6C
- jredwards 2y agoWhat color is the shed? Should we paint it before we tear it down?
- citizen-stig 2y agoI 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. While software is the opposite.
- tonyedgecombe 2y ago>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.
- skeeter2020 2y agoI'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.
- amelius 2y ago> And this is the biggest difference with architecture. Nobody starts building a house without knowing final design. This is exactly the problem in most software projects.
- eclecticfrank 2y ago> 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.
- ppqqrr 2y agoI tend to think of it as plants/trees. It starts from a single point, the main routine, and branches out its behavior over time. Branches get pruned, abandoned, merged, coopted to optimize for the nutrient gradient. I especially like the “roots” analogy i.e. it draws its strength from the parts that are hidden and difficult to assess by typical observation.
- medstrom 2y agoI do not think branches merge, except maybe after intervention by a creative gardener.
- ppqqrr 2y agoyes, but aren't we the creative gardeners/pollinators? Not to mention that software is naturally more dynamic and cross-compatible than real plants, given to all manners of chaotic mutations and grafting.
- digging 2y agoOk but if you're getting into tree-of-many-fruits and art-plant territory, it's no longer accessible to non-experts.
- diegolas 2y agothe software/architecture analogy works in many other ways, some concepts on functionality, reusability and modularity are very similar, but i guess that works for any complex system created to solve a user-specific problem
- htrp 2y agoLove it. stealing it for myself
- XorNot 2y ago...I am stealing this. Good lord, this is perfect.
- jimmySixDOF 2y agoAnd to extend the analogy in-kind to fit the conversation it would also be like 10 Years later all the plumbing became wireless (802.11pu) and so what was hard to impossible is now simple (cv object recognition of a bird in a photo).
- stroupwaffle 2y agoHaha, wireless plumbing. What a delightful image. =)
- parpfish 2y agoNot sure what your house is like, but my plumbing is already wireless
- heywoods 2y agoPlease call a plumber :)
- metalliqaz 2y agoThe Internet is a series of pipes.
- bookofjoe 2y agotubes https://en.wikipedia.org/wiki/Series_of_tubes https://en.wikipedia.org/wiki/Series_of_tubes
- metalliqaz 2y agoYes, I was trying to reference that while relating it to the above discussion...
- belter 2y agocurl -s https://api.chucknorris.io/jokes/random https://api.chucknorris.io/jokes/random | jq -r '.value' | cowsay | lolcat
- hk1337 2y ago> Non-coders seem to understand these analogies intuitively. Yes and no. Sometimes non-coders just want you to throw together a prefab house.
- matt123456789 2y agoOh I am definitely stealing that.
- osigurdson 2y agoThe analogy is useful to explain some changes are harder than others. However, what concrete situation in software could this analogy cover? What is the chair, what is the toilet and the concept of moving mean in this context?
- svieira 2y agoI give you this: Yesterday, I delivered a long-asked for feature - optimistic updates for a UI screen after a button click on Screen #1. It took only one day because the server-side logic is entirely under engineering control and the only edge cases are "their account was concurrently drained" or "the person who clicked the button is trying to hack us". Both of which will be handled when the server responds with a non-successful response. There is little to no likelihood of this behavior changing any time in the next 10 years so I ensured coupling between these components was respected with a simple comment in both places. Today, you are asking me to provide an optimist update for a button click on Screen #2. However, that button runs business logic that is specified by multiple other users in a scripting language based on a variety of inputs, some of which are dependent on the responses of external systems over which engineering has no control. The response's fields are known in advance, but those fields' values are not. Of course, anything is _possible_ and if we build a feature where users can specify the likely result of the external systems and build a heuristic-based analyzer for common patterns in the scripting language we could eventually get to the point where simple screens driven by this monstrosity could optimistically update. However, it will take a lot of development work and the testing effort will be high, both for the initial design of the feature and to add sufficient integration / system tests to ensure that future updates to any of these systems do not break common assumptions between them.
- osigurdson 2y agoHonestly, I think the bottom line is decision makers need to be technical. If you are responsible for an area and are non-technical you must find someone who 1)you can trust and 2)has the requisite background such that you can fully delegate to them. Anything else is essentially irresponsible. The only thing analogies help with is essentially to convince non-technical people who do not trust you that you aren't lying to them.
- NotAnOtter 2y ago"HTML is the struts, CSS is the drywall, wall paper, dining chairs, swing set, JS is the JS is the electricity & plumbing & light switches" I came up with that metaphor on my own, and didn't know at the time that this is a pretty common metaphor so it holds a special place to me.
- mixmastamyk 2y agoHmm, frame or studs works slightly better for html.
- travisgriggs 2y agoI must be doing something wrong then. I’ve used almost exactly this analogy. But rather than mollify the client it leads to frustration and annoyance: they see the features as similar and are frustrated/skeptical about why I’ve claimed this new sitting feature is so different than the other one. Often goes with sentences that start with “can’t you just…”.
- beeboobaa3 2y agoThe response to that is, "Can't you?"
- blululu 2y agoThe reason someone is paying you cash for your time and expertise is because they cannot do it. If you can’t do it either then why are they paying you? In these situations you need to be very delicate about explaining the nature of the challenges in a way that doesn’t make them feel like an idiot for paying you money in the first place.
- Dr4kn 2y agoIf they are paying for expertise they should also listen to the expertise
- beeboobaa3 2y agoTry having the same argument with your plumber, electrician or dentist. You're there because you are reliant on their expertise and can't just do it yourself. Otherwise you'd be doing so.
- cgriswald 2y agoThat’s funny because I argued with my plumber. He wanted to do a long term solution to a problem I have. It was a good solution. I said I didn’t want to do it because it was quite a bit less expensive for me to just deal with the acute issues when they arise over the rest of my lifetime. I’m usually paying experts to advise me so I can make my own decisions and then enact those decisions. Occasionally, I will have an opinion on methods. I’m not reliant individually on any expert, even if I am ultimately reliant upon their profession. And I hire people for work I can do all the time. Experts are often wrong. They misunderstand requirements. They don’t fully understand the system they are modifying. They can be lazy. They can consider a job or client as less important than other jobs or clients. They can lie. They can have incentives that don’t work for the client. They can be terrible at their work. Even when experts are good and honest, they can make decisions that don’t work for their clients. My divorce lawyer was amazing when he was on the warpath, but I told him I didn’t want to take that approach generally because I knew my ex’s back would go up and we’d both pay a lot more in legal fees to achieve the same results. He was good at his job and he wasn’t wrong, but that particular method didn’t work for me.
- emmet 2y agoThis is wonderful! There's so many aspects of a house that it's virtually guaranteed to have an apt analogy for any situation. I'll be keeping this on file, thank you.
- philipov 2y agoA house of cards built on a foundation of quicksand.
- NalNezumi 2y agoLove the analogy. As a robotics (software) engineer I've long struggled to explain to software engineers why certain things are extremely hard. I think I'll use your analogy next time, "and then robotics is like gardening. You don't know when the weather will change what wild life will come and try to ruin it, or the soil composition. At least in the house, you can be certain everything is made by human for humans, and things make sense. Outside, not so much. "
- deleted 2y ago[deleted]
- analog31 2y agoProgrammer: Software is a house. Client: My family is having a house built right now. Programmer: Oh, I'm so sorry for you.
- deleted 2y ago[deleted]
- deleted 2y ago[deleted]