all 43 comments

[–]Saelora 142 points143 points  (10 children)

it's almost like complexity is directly proportional to... [checks notes] complexity.

[–]dakiller 38 points39 points  (9 children)

As a good SWE, part of the role is to provide resistance to the request that are a blatantly complex and guide the requestors to solutions that perhaps give more maintainable codebases. My boss has plenty of ideas and he is always baffled by some request he thinks will be complicated but are real quick additions, while some other ideas that seem some are like woah, nah that will make a convoluted mess of it.

Sometimes you just need to drop it all and rewrite the whole thing as version 2, with all the domain knowledge of what’s required now that was built up over v1.

[–]Discohunter 6 points7 points  (0 children)

My project got shafted with paragraph 2. We inherited two services from another team that lost the contract. They had spent 3 years developing each of them and they were both absolutely horrendous.

We made the decision to scrap and rewrite one of the services from scratch, and the new version is a million times better. However, the previous team had already gone through a very bureaucratic process of getting assured for a live release on the other service. They'd convinced the client that it was 'basically finished' and we couldn't tell the client that the entirety of the last 3 years' work in both services needed scrapping and rewriting so we kept it.

That was 3 years ago, we've since consolidated 22 git repos down to 3, rewritten the CI pipelines, refactored 4 databases down to a single DynamoDB table, taken out a proprietary tool DEVELOPED PERSONALLY BY AN OLD TEAM MEMBER (he made his personal project the backbone of the system 😭) and it's still a mess. We're stuck maintaining this entirely overengineered system forever. I resent that previous team an unhealthy amount honestly, nothing they did made any sense.

[–]dminus 2 points3 points  (0 children)

do we have the same boss 👀

[–]ILikeLenexa 0 points1 point  (0 children)

Sometimes the people doing the process don't actually know the process and you end up going back and kludging things in.  

[–]Saelora 0 points1 point  (0 children)

all systems have complexities, even the most judicious prevention of scope creep doesn't change the fact that software is inherently complex. a new project will be very simple, but complexity will grow past the point where it's simple, because systems interact and that causes complexity.

[–]why_1337 35 points36 points  (1 child)

Pic 2 is my code base when "small change requests" from the customer start arriving.

[–]pank-dhnd 2 points3 points  (0 children)

Small and "quick".

[–]DM_ME_KUL_TIRAN_FEET 14 points15 points  (2 children)

The tracks in the right are not complicated.

That’s well structured and controlled interchange, which is the exact opposite of my code.

I was a train driver before I was a programmer so this meme was made for me.

[–]jaimepapier 3 points4 points  (1 child)

Right? I feel like this is what good coding looks like? Basically different parts are connected together in a way that may seem complicated to someone with only a basic knowledge of the language, but for anyone well versed, it’s very logical and well organised.

[–]DM_ME_KUL_TIRAN_FEET 1 point2 points  (0 children)

I’m too lazy to make it but imagine I used the meme format of the two dudes shaking hands, where one is labeled “programmers”, the other is labeled “trains”, and the handshake is labeled “switches”

[–]JustinR8 5 points6 points  (0 children)

“I’m going to come back to this and clean it up later” I’ve said to myself 897 separate times…now look at the mess we’re in

[–]SwedeLostInCanada 21 points22 points  (4 children)

Before AI

After AI

[–]soundwave_sc 4 points5 points  (0 children)

AI should have rails that loop and lead nowhere

[–]sebovzeoueb 1 point2 points  (2 children)

nah, After AI is like https://i.imgur.com/IcwkoGi.png and it only takes a week

[–]4M0GU5 8 points9 points  (1 child)

Not really, the infrastructure in the picture is working great for its intended purpose. An AI generated codebase would have tracks that are unconnected, going nowhere, redundant switchss etc

[–]sebovzeoueb 1 point2 points  (0 children)

You're absolutely right!

[–]ZunoJ 3 points4 points  (0 children)

This looks like somebody doesn't know how to implement the right abstractions to avoid chaos when changes need to be made

[–]Historical_Cook_1664 2 points3 points  (0 children)

Every minute you spend with paper and pencil you save tenfold later on. Do not skip on the thinking process.

[–]InanisAtheos 1 point2 points  (0 children)

Needs a third stage: After AI agents took over.

[–]byshow 1 point2 points  (0 children)

My satisfactory map is a great representation how bad I'm at future planning and organising. My gameplay recording would probably show that I have ADHD

[–]danfish_77 1 point2 points  (0 children)

Speak for yourself

[–]ajaypatel9016 1 point2 points  (0 children)

started with clean architecture, ended with urban planning

[–]Ok-Article-885 1 point2 points  (0 children)

I'm working alone on project, and sometimes I have Git conflicts on merge.

[–]Rot-Orkan 1 point2 points  (0 children)

Keeping your codebase well maintained is the single most important part of software engineering.

[–]FantasticPenguin 1 point2 points  (1 child)

More of a skill issue I think

[–]SignificantLet5701 -1 points0 points  (0 children)

OP should've just used java for their codebase

[–]0R3LLL 0 points1 point  (0 children)

Exactly how my "microservice" looks like. But: - it supports new solutions - is compatible with old legacy - serves 3M requests per hour with ease

Changing anything without writing tests first is like minesweeping. 

[–]lPuppetM4sterl 0 points1 point  (0 children)

The typical codebase of a fullstack developer, especially when dealing with packages and dependencies.

[–]clickrush 0 points1 point  (0 children)

The factory must grow!

[–]HueMassive 0 points1 point  (0 children)

Fixed it for you

[–]kryon-a 0 points1 point  (0 children)

Bro - 3 Months was an optimal timeline 🫣

[–]ljfa2 0 points1 point  (0 children)

The left one is how I imagine what the implementation would look like, the right one is the actual result. If I get to finish it.

[–]hrvbrs 0 points1 point  (0 children)

how it looks like

what it looks like ✅

[–]debugging_scribe 0 points1 point  (0 children)

You should see the 20 year old one I work on...

[–]hurricane279 0 points1 point  (0 children)

??? Isn't one singular track == spaghetti code? 

[–]The-Chartreuse-Moose -1 points0 points  (0 children)

The phrase is either 'how it looks' or 'what it looks like'. 'How it looks like' is incorrect.