I recently came across software design legend Fred Brooks. One point he makes is there should be more great designers, people like J.S. Bach, Rembrandt, Seymour Cray, Christopher Wren, Nicholas Wirth, and Donald Knuth. He argues the individual (or at most paired) designer is superior to the committee at designing. He argues great designers make works with conceptual integrity through holistic, system-wide understanding.
He recognizes that in modern times, due to the complexity of invented things, a team is often required to take on specific parts, but the team must be led by someone who understands the whole. He describes understanding the whole in terms of inventors who worked with their hands, not just symbols and models. They were able to put together the thing; they knew it backward and forward.
He provides a short list of activities that a designer might employ to become great:
- Study your predecessors' works intently, to see how they solved problems.
- Try to figure out why they made the design choices they did; this is the most illuminating question to ask yourself.
- Study your predecessors' styles closely. This is best done by trying to sketch something in their several styles.
- Keep a "sketch book" in which you put ideas, designs, and pieces of designs, whatever your medium.
- When starting a design, write down your assumptions about the users and the uses.
- Design, design, design!
As I've reflected on Mr. Brooks' thinking, I've realized I've not been aiming high enough.
I can have a good job with a good wage implementing good standards. I could spend my days applying Jakob's law: "Users spend most of their time on other sites. This means that users prefer your site to work the same way as all the other sites they already know."
Find the right convention, make it work for the application, communicate it to the right people in the right way, and voilà! a better user experience. This is good design, and good design is critical and valuable.
But there are some designers who want more. They want great design, that will stand the test of time, usher in new paradigms, create new meaning, and move humanity forward.
They want to invent something new, not merely apply existing conventions. They don't want to ride the wave; they want to create the groundswell.
Such designers are not motivated by money. They're not motivated by ego. They're motivated by what they know in their bones: there's something wildly better just beyond the horizon.
It's inconceivable now, but they feel with enough grit they will conceive it, and conceive it in their lifetime.
And so, I've come to think its worthwhile to aim to be a great designer – someone who can envision end-to-end the entire system, who can be trusted with the final say on the conceptual model and integrity of the whole, who can anticipate changes and mitigate risks.
If this seems too much for one person, I think it's because we Professional Designers haven't aimed high enough. I'm not calling for us to abandon the work of concocting and applying the right blend of fertilizer. It's good, valuable, paying work that makes software grow better, look better, and sell better. But we should also plant our own little gardens, and decide where, why, what, and how.
And we should seek to understand whatever product we currently work on from end to end. How might we do that?
We can start by recognizing it's the responsibility of design to see and understand the whole. Moving up and down, zooming in and out, visualizing the contours of the product is design. Give yourself permission to get inquisitive, and then get in there and start modeling and making sense.
Find a way to dabble in data structures and algorithms generally and your product's frameworks particularly.
Ask why: Why this? Why now? Why not something else?
Ask what: What are we making? What is its essence? What are its component parts? What is the whole? What can be removed without changing what it is?
Explore strategy and business models and pricing and profit and loss and risk management.
Get to know what cultures, structures, practices, rituals, values, and beliefs produce beautiful software.
Develop a deep understanding of humanity. Read the great literature; watch the great plays; dwell on the great paintings.
And, I would add, ask the big questions: Why are we here? Is there a God? What does it all mean? And don't be satisfied with simplistic answers. Go after them with gusto. Search, and you will find.
We might then find ourselves becoming great designers – whole people designing whole products for a whole world.