Different learners should start in different places, but they should still converge on the same design spine.
The same vertical should work for a developer learning design vocabulary for the first time, an experienced Java developer who knows frameworks but wants better pattern judgment, and a system builder wrestling with architectural boundaries. This page helps you choose the entry path that matches your current need.
I am new to design
Start with the cost of bad design. If OOAD feels abstract, it usually means the pain is still invisible. Once you understand the problem, the roadmap and later principles become much more concrete.
I know basics, show me patterns
If you already understand classes, interfaces, and packages, the temptation is to jump straight into GoF patterns. That works better when you first sharpen your ability to spot design failures and principle-level trade-offs.
This route is especially useful if you already work in Spring or enterprise Java and want your pattern vocabulary to become more intentional rather than framework-shaped by habit.
I am building systems
Architects and senior developers usually benefit from reading this vertical as a boundary-and-trade-off exercise. The main value is not learning terminology. It is recalibrating judgment.
If your immediate problem is this, start here
| Current pain | Start page | Why |
|---|---|---|
| My code feels messy, but I cannot say why. | Common design failures | It gives you recognizable failure names and signals. |
| I keep hearing OOAD, but I do not understand what it fixes. | What problem does OOAD solve? | It anchors the topic in concrete Java pain rather than jargon. |
| I want a structured plan instead of random reading. | Learning roadmap | It shows the full progression and why it is sequenced that way. |
| I need to coach other developers. | Learning roadmap | It doubles as a teaching spine for team-level learning. |