Common LLD Design Mistakes (And How to Spot Them on a Class Diagram)
Train your eye for God classes, wrong inheritance, and coupling problems before the interviewer does
☰ Jump to section
In LLD rounds, interviewers often care as much about what you refuse to put in a class as what you include. Candidates who can name smells on a diagram — before writing a line of implementation — look senior. Candidates who only notice problems after the code is a mess look junior, even if they eventually fix it.
This guide catalogs the common LLD design mistakes you should recognize from structure alone, plus the visual cues that give them away on a class diagram.
011. God Class / Blob
One type owns the universe: validation, storage, email, pricing, and UI mapping.
- Diagram cue: long method list; many associations leaving a single box.
- Interview cue: you struggle to name the class in one phrase.
- First question: “What are the reasons this class would change?” If you list three unrelated reasons, SRP is already on fire.
OrderManager
+ createOrder()
+ validatePayment()
+ chargeCard()
+ sendEmail()
+ updateInventory()
+ renderInvoicePdf()
+ writeMetrics()022. Wrong Inheritance
Inheritance models is-a that preserves behavior expectations (Liskov). Using it as a cheap share-methods tool creates fragile hierarchies.
- Classic smell:
Stack extends ArrayList— stacks are not array lists. - Classic smell:
Square extends Rectanglewhen setters break invariants. - Diagram cue: inheritance arrow between types that need different lifecycles or contracts.
033. Missing Abstraction at a Volatility Point
If the prompt mentions multiple providers, channels, or strategies, and your diagram only shows concrete classes calling each other, OCP pain is coming.
- Diagram cue: no interfaces near payment, notification, or pricing.
- Fix direction: introduce a port (interface) and keep the domain service depending on it.
044. Tight Coupling Hubs
A hub knows everyone and everyone knows the hub. Changes radiate.
| Smell | What you see | Typical fix direction |
|---|---|---|
| God Class | One huge classifier | Extract collaborators by responsibility |
| Feature envy | Methods mostly use another type’s data | Move behavior closer to the data |
| Concrete dependency | Service → StripeClient directly | Depend on PaymentGateway |
| Anemic domain | Data bags + procedural service | Push behavior onto domain types or accept DTO stereotype |
055. Relationship Lies
- Using inheritance where association belongs.
- Composition (filled diamond) for a shared, independently lifecycle’d object.
- Omitting multiplicity when cardinality is the whole point (seats, inventory).
06A 90-Second Diagram Scan Checklist
- Can I name each type’s job in under six words?
- Which types change when product adds a new vendor/channel/rule?
- Are there interfaces at those change points?
- Is any box a dependency magnet?
- Do inheritance arrows survive a Liskov sniff test?
Spotting is a skill of its own. Debug Lab puts real violations on UML diagrams and asks you to annotate them before revealing the authoritative breakdown — critique practice without rewriting yet.
07Practice: Annotate This Mental Diagram
UserController validates input, hashes passwords, writes to MySQL, sends welcome email, and updates a Redis session. Without drawing tools, list three smells and the diagram cue for each.
- God / SRP — one type with unrelated change reasons (auth, persistence, mail, cache).
- Concrete coupling — MySQL and Redis named inside a controller-shaped type.
- Missing ports — no
UserRepository,PasswordHasher, orMailerabstractions.
If you only wrote “bad design,” push yourself to the cue level. Interviewers buy specificity.
08From Spotting to Fixing
Recognition is step one. Interviews also ask you to restructure. When you are ready to remediate God Classes and SRP breaches on the canvas, continue with how to fix a broken object-oriented design and the hands-on Debug & Fix mode.
09Key Takeaways
- Learn diagram-level cues for God Class, wrong inheritance, and coupling hubs.
- Ask what would force each type to change — SRP becomes concrete.
- Put abstractions where requirements historically churn.
- Practice spotting on purpose; do not wait for production pain.
Train your eye on authored broken diagrams in Debug Lab, then graduate to repairing them when you are ready.
Frequently Asked Questions
AA God Class concentrates too many responsibilities — persistence, business rules, notifications, formatting — into one type. On a diagram it often shows a huge method list and many outgoing dependencies.
LLDCanvas Team
Engineering at LLDCanvas
Ready to practice?
Turn reading into results
110+ LLD interview questions, a live canvas, and timed Interview Mode.
Reader’s Notes (0)
Sign in to join the discussion
Sign inLoading notes…