Fundamentals 6 min read

Why Good Design Is Like a Map: Strategic vs Tactical Software Design

This article explains how detailed design documentation, the distinction between strategic and tactical design, and the CRC (Class‑Responsibility‑Collaborator) method together form a flexible, evolving blueprint that guides development without over‑prescribing implementation details.

Architect's Alchemy Furnace
Architect's Alchemy Furnace
Architect's Alchemy Furnace
Why Good Design Is Like a Map: Strategic vs Tactical Software Design

Design Importance

Design documents should be as detailed as possible so that junior developers can implement code directly.

Design documentation should be as detailed as possible so that low‑level developers can simply write code.
At a high level, describe object relationships in detail;
At a low level, describe object interactions in detail.
Include method implementation details and parameter annotations.
Do not forget to list all fields in each class.
When writing code, never deviate from the design document, no matter what you discover.
Image
Image

Strategic vs Tactical Design

Design can be divided into two layers: strategic and tactical. Early‑stage design belongs to the strategic layer and should only describe the overall strategy without delving into detailed specifics.

Precision

If you yourself are unclear about the subject, you cannot describe it precisely.

Strategic design should not specify exact methods, parameters, fields, or interaction sequences; those details belong to the tactical phase during development.

A good strategic design acts like a map, guiding direction without dictating exact routes. Design is a starting point that evolves throughout the project lifecycle.

Do not start with tactical design; focus on class responsibilities. The CRC (Class‑Responsibility‑Collaborator) card method helps define class name, responsibilities, and collaborators.

Class name.

Responsibility: what it should do?

Collaborators: which other objects it works with?

A good design provides correct guidance, not precise prescriptions; it should avoid uncertain or changeable details and serve as a goal rather than a detailed recipe.

Good design is like a map that evolves, offering direction without being a colonized path that manipulates you.

Balancing the Art

“Don’t do massive design early” means you should avoid heavy design tasks before code validation, not that you should skip design altogether.

Even if the initial design becomes obsolete, the design process remains essential; planning itself is indispensable.

Whiteboards, sketches, and sticky notes are effective design tools, while complex modeling tools can distract rather than inspire.

Image
Image
Strategic DesignTactical Designdocumentationsoftware designCRC cards
Architect's Alchemy Furnace
Written by

Architect's Alchemy Furnace

A comprehensive platform that combines Java development and architecture design, guaranteeing 100% original content. We explore the essence and philosophy of architecture and provide professional technical articles for aspiring architects.

0 followers
Reader feedback

How this landed with the community

Sign in to like

Rate this article

Was this worth your time?

Sign in to rate
Discussion

0 Comments

Thoughtful readers leave field notes, pushback, and hard-won operational detail here.