Good designs come from good designers, good designers come from…

Good designers come from a continuous observation, scrutiny and practice of the reflective conversation with the situation at hand.

“[The designer] works in particulars situations, uses particular materials, and employs a distinctive medium and language. Typically, his making process is complex. There are more variables—kinds of possible moves, norms, and interrelationships of these—than can be represented in a finite model. Because of this complexity, the designer’s moves tend, happily or unhappily, to produce consequences other than those intended. When this happens, the designer may take account of the unintended changes he has made in the situation by forming new appreciations and understandings and by making new moves. He shapes the situation, in accordance with his initial appreciation of it, the situation “talks back”, and he responds to the situation’s back-talk.

In a good process of design, this conversation with the situation is reflective. In answer to the situation’s back-talk, the designer reflects-in-action on the construction of the problem, the strategies of action, or the model of the phenomena, which have been implicit in his moves.” —The Reflective Practitioner: How Professionals Think in Action by Donald A. Schon

If you ever have the opportunity to observe master designers taking design decisions, you should know what Mr. Schon is talking about.

Other design professions at their infant stage, like software design is by now, grouped in craftsmanship guilds to preserve and evolve design knowledge passing it by means of craftsmanship traditions like master/apprentice connections.

How is design expertise preserve in our software discipline?

Yes, there are books documenting catalogs of design patterns and pattern languages, those are ok. But something very important is lacking: live descriptions of design expertise. Not marketing-oriented, toy demonstrations but the real thing of what it takes for good software design that makes a living, just like other design professions in their time.

Of course there are people in our industry that know this and do something about it; many of them are in the trenches along with many from the agile movement.

Nonetheless design expertise shortage is huge, for example, many people in our industry write classes with a bunch of methods inside and then call this object-oriented design, whereas that is just information modeling or representational modeling or at most modules of old structured design—all are good techniques themselves in proper context—but ignore the whole point of object design: to manage behavior and dependencies of the underlying abstractions.

How can we advance our profession with this state of affairs?

Comes to mind a very important first step:

“Be the change you wish to see” –Gandhi

What comes to your mind?

Comments (14)

  1. Cump says:

    Given the great complexity of software architectures, it takes more than technical skills to produce an accurate record of a designer at work. We are used to see geniuses, building complex architectures in a linear fashion then we get terribly frustrated when our own architectural designs are flawed.

    Dijkstra’s "humble programmer" should evolve into a “humble designer” and start giving us the honest account of all his design choices, including the mistakes, no matter how dumb they are. I’d like to see more anti-patterns books and papers. That would be a good start.

  2. “ Want me to adopt your solution? Let’s clarify first which are the new problems it brings on ” -a conscious

  3. The attitude of mind to approach reality that has helped humans to explain and to predict phenomena (observed

  4. La actitud mental para plantearse la realidad que ha ayudado a los humanos a explicar y predecir los

  5. A professional software designer —one whose next paycheck depends on the quality of her software— looks