Skip to main content

Command Palette

Search for a command to run...

Software Design Decoded: 66 Ways Expert Designers Think

What separates merely competent software design from truly excellent design?

Updated
7 min read
Software Design Decoded: 66 Ways Expert Designers Think
M

I am a born-again Christian and a software engineer at Korlie Limited. I'm an ALX graduate and I'm studying software engineering at Limkokwing University. I like chess ❤️

Years of studying professional designers led Marian Petre and André van der Hoek to a clear answer: experts don’t rely on magic or endless experience alone. They use a set of deliberate, learnable habits—66 of them—documented in their concise, illustration-rich book Software Design Decoded: 66 Ways Experts Think (MIT Press, 2016).

These aren’t abstract theories. They are practical patterns observed across real design work. This blog is a thematic distillation of all 66 insights, grouped so you can see the bigger picture.

1. The Discipline of Simplicity and Focus

Experts prefer simple solutions because they know complexity is expensive to understand and change later. They keep searching for simpler options even after finding something that works.

When problems feel overwhelming, they solve simpler problems first to generate useful partial solutions and insight. They divide and conquer, breaking work into independent parts while constantly reflecting on how those parts relate and adjusting the overall partition when needed.

They do not overgeneralize, weighing the cost of extra abstraction against real reuse potential and immediate constraints. They deliberately design elegant abstractions that make what matters visible and hide what doesn’t.

They focus on the essence—the core considerations that, if wrong, force everything else to change—and delay work on the periphery. They draw what they need and no more, keeping sketches and diagrams sparse and purposeful.

They keep options open as long as possible and make provisional decisions, explicitly tracking which choices are firm and which remain tentative along with the conditions attached to them.

2. The Strength of Collaboration

Expert designers reject the lone-genius myth. They prefer working with others because rich collaboration produces better ideas and catches problems earlier.

They reach out deliberately and early for specialized knowledge instead of struggling in isolation. They check with others continually through frequent, often informal communication to spot divergence in assumptions or direction.

They involve the user throughout—studying real needs, testing intermediate designs, and even bringing users onto the team—while looking past surface requests to underlying requirements. They socially embed and reinforce good practice in their teams, creating shared knowledge, systematic checks, and strong onboarding.

They agree to disagree when prolonged debate would slow progress, trusting that further design work will bring clarity. They network actively, building relationships with people who bring different expertise. They prioritize among stakeholders by focusing on those who ultimately determine whether the system succeeds or fails, rather than defaulting to the loudest voices or highest titles.

3. Creative Reframing and Borrowing Wisdom

Experts rarely start from zero. They prefer solutions that they know work, borrowing, reusing, and adapting proven approaches after checking fit. They look around at other systems the way architects study buildings. They take inspiration from wherever they can—other fields, everyday objects, conversations, or toys.

They use metaphor to communicate ideas quickly and vividly in collaboration. They use analogy to shift stuck thinking, carefully examining where the likeness holds and where it breaks. They use design methods selectively, applying techniques like storyboarding or tradeoff analysis only when they genuinely help.

They relax constraints early to explore broader possibilities, then reintroduce real ones as the design matures. They reshape the problem space, stepping back to ask whether they are solving the right problem or pursuing the most useful goals.

When stuck, they try the opposite or simply do something (else) to change focus and return with fresh perspective. They generate alternatives explicitly at every level and explore different perspectives—human and technical, structural and deployable, usable and accessible.

4. Externalizing Thought and Mastering Representations

Thinking happens visibly. Experts externalize their thoughts constantly through sketching—alone, in meetings, on whiteboards or napkins—because putting ideas outside their heads lets them examine and advance them.

They draw the problem as much as they draw the solution, letting understanding of both co-evolve. They shift between formal and informal representations as precision or speed demands. When no existing notation fits, they invent notations that serve the moment.

They keep sketches rather than discarding them, knowing they may need to revisit or evolve earlier thinking. They treat notations as lenses, rather than straightjackets, choosing the best view for the task and remembering what lies outside it. They change notation deliberately to prompt new considerations.

They draw examples alongside their diagrams to make simulation concrete. They test across representations, juxtaposing different views to reveal dependencies and misalignments. They prototype concepts to make abstractions tangible for feedback and deeper understanding.

5. Navigating Uncertainty with Depth and Skepticism

Experts accept that design involves the unknown. They adjust to the degree of uncertainty present, using more exploration and provisional decisions for novel problems and more structure for routine ones.

They address knowledge deficiencies directly, seeking gaps early and verifying assumptions rather than ignoring them. They carry a large, accessible store of knowledge—they know how things work—and use it to reason from the known to the uncertain.

They go as deep as needed, writing code or building models when abstraction alone cannot confirm critical properties. They make tradeoffs consciously, gathering information and weighing how each decision favors some goals over others.

They see error as opportunity, exploring failures and context for insights about assumptions or emergent issues. They are skeptical—of their own ideas, others’ ideas, and the current leading solution—and test accordingly.

They simulate continually, mentally or verbally walking through scenarios. They are alert to evidence that challenges their theory, treating even small unexpected signals as potential indicators of larger problems. They retain their orientation amid changes by keeping core concepts and prior decisions clear. They think about what they are not designing, clarifying boundaries to avoid over- or under-design.

6. Reflective Habits, Iteration, and Lifelong Growth

Design is never purely linear. Experts pause to create productive discontinuity. They know when to stop revisiting an issue once incremental benefit diminishes. They repeat activities—asking the same questions of different people, redrawing diagrams—because each pass engages fresh thinking and surfaces new issues.

They curtail digressions by regularly checking whether the conversation is still serving the real goals. They re-assess the landscape periodically: Have goals, users, technology, or context shifted? They invest now to save effort later by anticipating future issues and making targeted early investments.

They design all the time—at their desk, on walks, in conversations—because inspiration can strike anywhere. They know design is not done until the code is delivered and running, when users finally experience the consequences of every decision.

They keep learning, actively seeking new knowledge. They play with new languages, hardware, toys, and self-imposed challenges because play keeps minds fresh and open to invention. They build their own tools when existing ones don’t fit the situation. They move among levels of abstraction fluidly and rotate among subject pairs to keep different aspects of the design in sync and avoid tunnel vision. They sometimes play the fool, deliberately setting aside what they “know” to expose hidden assumptions.

Putting These Habits to Work

These 66 ways are not a rigid process or a checklist. They are a mindset: stay simple where possible, collaborate deliberately, externalize thinking, embrace uncertainty as part of the work, reflect often, and never stop learning.

Whether you are designing services that must scale reliably, payment flows that handle real money, or internal tools that teams depend on daily, these habits compound. Start with one or two that feel most relevant—perhaps sketching more intentionally, reaching out earlier, or keeping more options open longer—and notice how your design work shifts.

The experts studied for this book weren’t born with these habits. They cultivated them. You can too.

Have you read Software Design Decoded? Which of these 66 ways already shapes how you work, and which one are you most curious to practice more deliberately? Share your thoughts below.