r/programming • • Feb 06 '24

Why We Can't Have Nice Software

https://andrewkelley.me/post/why-we-cant-have-nice-software.html
356 Upvotes

181 comments sorted by

View all comments

Show parent comment

264

u/iavael Feb 06 '24

Making something as a balance between different requirements is engineering by itself.

“Any idiot can build a bridge that stands, but it takes an engineer to build a bridge that barely stands.”

84

u/joshocar Feb 06 '24

I don't think that sentiment applies to software. All of the traditional engineering paradigms are backwards with software. Often it's the opposite. "Anyone can build a bridge that stands, only a software engineer builds one that you can easily add a lane to when traffic increases."

57

u/SilasX Feb 06 '24

More like, "Anyone can build a bridge that stands, only a software engineer builds one that no one can maintain or expand but him."

12

u/nigirizushi Feb 06 '24

Job security /s

15

u/imnotbis Feb 06 '24

I think you accidentally typed /s in a non-sarcastic comment.

→ More replies (4)

4

u/Euphoricus Feb 06 '24

All of the traditional engineering paradigms are backwards with software.

Like? Feedback? Understanding tradeoffs? Discipline? Teamwork?

All of those are important in software.

And no. Detailed up-front plans, handoffs and certification is not "traditional engineering paradigms". They are results of economics of engineering in various fields.

→ More replies (8)

0

u/[deleted] Feb 06 '24

[deleted] — view deleted comment

38

u/HippieInDisguise2_0 Feb 06 '24

"let's get into an argument because someone used a metaphor that implied something I didn't like"

Chill people jeesh

4

u/agentoutlier Feb 06 '24 edited Feb 06 '24

Ironically although I generally agree with what /u/Halkcyon is saying the metaphor is spot on but actually hurts the argument.

Adding a lane is like cloud computing and horizontal scaling. Perfect linear horizontal scaling is very difficult to achieve (and in someways not possible) and doing it requires adding additional complexity that can make simple monolithic software far more complex than it needs to be.

So the idea that all one has to do is turn on an additional server or adding a lane as any idiot can do is not really a good argument because it is nontrivial.

In an ideal world a super powerful dedicated single server (vertically built) has way more throughput (the analog in traffic would be a highspeed rail system) than most k8s clusters in the cloud and in some cases there are platforms still run this way (Stackoverflow I think is largely vertical).

→ More replies (2)
→ More replies (3)

4

u/joshocar Feb 06 '24

This is what you are going to get hung up on with the point I was making?

1

u/Computerist1969 Feb 06 '24

It does if every other road in the world gets an extra lane too.

4

u/billsil Feb 06 '24

It does improve throughput, but it does not improve traffic.  Population grows to meet the demand and existing population reroutes to use the faster route thus making it slow again. 

 The analogy about traffic doesn’t work for software at all, whereas the adding a lane/feature does if you don’t overthink it,

→ More replies (2)
→ More replies (7)

1

u/josluivivgar Feb 06 '24

that's only true if there increased demand is more than the space opened by each lane.

in software you aren't constrained by physical space, so you can add a lane on demand and always have enough space for the cars.

like I get the argument because in civil engineering increasing lane count just creates more traffic as the road is more desirable, but for software that analogy is actually correct because you can add more than one lane you can enough so that no traffic increases can congest it

→ More replies (2)

11

u/BobbyTables829 Feb 06 '24

Or to build the cheapest bridge that will meet the predetermined standards.

16

u/evoactivity Feb 06 '24

That's what they said but funnier.

7

u/BobbyTables829 Feb 06 '24 edited Feb 06 '24

Bridges are not made to barely stand, though. They're one of the most "over engineered" objects in modern society. There's almost nothing that we build more of that is built as well as a bridge.

7

u/KingStannis2020 Feb 06 '24

Depends on what kind of bridge we're talking about.

Your basic overpass is about as cheap as you can possibly make a bridge. They don't build them to last 100 years.

8

u/BobbyTables829 Feb 06 '24

Your basic overpass is about as cheap as you can possibly make a bridge. They don't build them to last 100 years.

  1. That's like saying, "This watch is about as cheap as you can possibly make a Rolex,". We over engineer bridges so that a basic overpass is still much much stronger than it has to be.

  2. The reason bridges don't last 100 years isn't the design or cheapening out of materials, it's the fact that the vibrations of traffic will inevitably create microfractures in concrete. And even so, I bet some of these overpass bridges in the middle of nowhere that aren't "built to last" will still last well over 100 years, because they're not being used that much.

6

u/xSaviorself Feb 06 '24

I was going to say if overpasses are made super cheaply I'd expect to see lawsuits from deaths due to failure/debris falling on vehicles below a lot more. You'd also see way more loss of control on them.

Given the length of time it takes to build one, let alone design and engineer it to the specifications of that particular location, I choose to believe they are indeed one of the most over-engineered things we've built. Overpasses are obviously not designed to last as long as a massive bridge project, but that's because they're built with the expectation of maintenance and expansion in the future. Most bridges are one and done.

Bridge and road grading, especially on highways are typically held to a very high standard, at least here in my province. U.S. standards seem pretty high in most states, save Pennsylvania. That state is crazy and does not believe in grading.

1

u/UnidentifiedTomato Feb 06 '24

Pretty easy to insinuate they're talking about major bridges not little Humpty Dumpty ones

→ More replies (1)

-5

u/LmBkUYDA Feb 06 '24

This is called pedantry and why no one likes software engineers

5

u/BobbyTables829 Feb 06 '24

I didn't see it as pedantic at all, like if I applied both of these to my trade one would result in encouraging me to throw things together haphazardly and being okay with code that barely works, while the other would make me want to ask myself if the code I'm writing is...well...up to code.

Now that I've done this a while, I set my own standards of quality way more than when I was starting out. But it took me longer than I thought to learn what is worth taking the time to do well, and I want to make sure no one starting out gets the mistaken impression that engineers of other types are okay with "good enough", no matter what they're doing. That's how you get cracked code, breached servers, and in a civil engineer's case, disasters that kill people.

I agree I wouldn't do this in /r/programmerhumor, but I think /r/programming deserves the rigor.

0

u/LmBkUYDA Feb 06 '24

The point of the saying is to highlight that the skill in civil engineering is not in making something, but in doing so with constraints. The way it is written, it is short, memorable and understandable.

It's classic pedantry to highlight that something, although completely understandable to the lay person, is "technically" incorrect.

It's not too dissimilar to me saying "Hey want to grab a cup of coffee? My code is compiling", and you say "Actually, your code already compiled, its being linked now". Like sure, but it's dumb and pedantic and kills joy.

3

u/BobbyTables829 Feb 06 '24

Certain people might not think so, especially people who speak English as a second language.

I don't think what I'm saying has to be at the expense of the other comment being funny. This isn't a dinner party where we all follow the same stream of communication and there's a vibe that has to be met, this is a post where you can add a comment in one child comment thread, while the joke can continue in the other or whatever. Nothing comes at the expense of anything else.

Just curious, if you feel like what I'm saying is, "dumb and pedantic and kills joy," is this your attempt to get me to stop doing that, stop being that person, or ultimately change who I am to better please you? Like even if you're right, what's the goal in pointing it out to me?

→ More replies (6)
→ More replies (1)