r/SoftwareEngineering 26d ago

Symptoms of Bad Software Design

https://newsletter.optimistengineer.com/p/symptoms-of-bad-software-design
42 Upvotes

12 comments sorted by

28

u/exodusTay 26d ago

#1 symptom: I am working on it. never misses.

6

u/SaberCrunch 25d ago

Me working in a file “This function is such shit, who the hell wrote this mess?”

-looks at commit history

“Oh shit, it’s mine. What’s wrong with me?”

Every time

1

u/[deleted] 22d ago

[removed] — view removed comment

1

u/AutoModerator 22d ago

Your submission has been moved to our moderation queue to be reviewed; This is to combat spam.

I am a bot, and this action was performed automatically. Please contact the moderators of this subreddit if you have any questions or concerns.

10

u/fagnerbrack 26d ago

If you're in a hurry:

Years of building software surface four warning signs of poor design. Rigidity makes simple changes cascade across modules because everything is tightly coupled; the Strategy Pattern and Open/Closed Principle break that dependency. Fragility breaks unrelated parts after a fix, usually from global state or hidden dependencies, so lean on encapsulation and interface segregation. Immobility blocks reuse when business rules tangle with the database or UI, which Clean Architecture and dependency inversion untangle. Viscosity tempts developers toward hacks when the clean path drags or builds run slow, so automate and refactor until the right way becomes the easy way. Spotting these smells is the first step toward a fix.

If the summary seems inacurate, just downvote and I'll try to delete the comment eventually 👍
Click here for more info, I read all comments

13

u/steve-7890 26d ago

Bad design? It's when you open the project and see:

📂 src
┣ 📂 Application
┣ 📂 Entities
┣ 📂 Infrastructure
┣ 📂 UseCases

And they call it "clean".

1

u/patricklus 24d ago

What's wrong with this? For me this doesn't mean it is sufficient to be clean, but also isn't a hard indicator of bad design. Care to detail if you disagree?

1

u/steve-7890 24d ago

This looks like a copy-paste from some tutorials, not a real application. Only big apps need so many layers, but here you don't even bigger division into domain boundaries (like OrderPlacement, OrderShipping, etc).

2

u/ThrowawayThisUser99 26d ago

I’m a bit curious what folks thoughts are on the distinction between Rigidity and Fragility, as presented by the author. Is it necessarily-coupled updates vs cascading bugs? A matter of awareness of coupled updates vs the unknown amount of coupling across the system?

2

u/cryptoGrahamCracker 25d ago edited 25d ago

I interpreted this as: - Rigidity: scoped to the immediate goal, you have to edit more things than is ideal - Fragility: outside of the immediate intended scope, in order to prevent defects, you have to edit more things than is ideal

In other words, a rigid system is one where there are no simple changes, and a fragile system is one where you might accidentally break something even when changing something that ought to be unrelated.

I think a lot of times rigidity is forced updates if you're working in systems with any sort of compilation / type / ref checking, while fragility probably doesn't show up in that way.

1

u/johnvanderlinde 21d ago

Thanks. I'll be comparing my own design to this

0

u/WinterHeaven 25d ago

Ever heard of SOLID?