There is this Ted talk floating around about the worst designed city flags in America. If you haven’t seen it already I definitely recommend that you do. It’s presented by a guy named Roman Mars, who is the host of several other things including a podcast called 99% Invisible (which you should also totally check out).
The whole point of his show is to showcase the design of different things that we normally don’t notice or take for granted: everything we don’t see. This includes things like city benches, basketball shot clocks, shopping malls, and in the case of his ted talk, city flags. I never took notice of any of those things before, I just sort of thought that they were dispensable elements, or sometimes in all honesty, I just never cared. However, this thought brings up one of the biggest ideas when it comes to desig:
The best designed things are often things we don’t notice.
We don’t notice or consider the design of drinking cups or pencils, but these things are the result of people who sat down, solved a problem they had in everyday life, and came up with a design or idea so good, that it became ubiquitous. This sort of invisible design is everywhere, even in things that are meant to be distinctive: flags are one of those things. We often don’t notice the design of a good flag, it is seen everyday, and if it is designed well we often don’t notice at a passing glance. We notice bad flags, we notice bad design.
In the case of the average everyday consumer, it applies to computers as well: they don’t care about how or why a computer works, they just want it to work, and if computer designers and programmers do their job well, it often goes unnoticed. Only when design is bad or inefficient do consumers notice, they won’t know why, but they will know.
So what can flag design teach us about computer design?
Vexillology (what a tongue twister) is the study of flags, and the North American Vexillological Society is an organization dedicated to the study and design of flags. Together they have made five rules that they believe dictate good flag design:
You might wonder, “How does this apply to designing a computer/a program? How do I even use 2-3 basic colors in my code??”. Fair enough, but when we look closer at these rules, we see that they all play into the same idea, keep it simple. They use a restricted amount of colors to keep it from being busy, they restrict the lettering to make it clear, and they must use meaningful symbolism in order to be distinctive to achieve a simple uniqueness.
Flags are a restricted design. Our code must be restricted as well.
It’s easy to say “keep your program simple” for small programs, but even in larger projects this concept must be at the forefront. It’s easy to get carried away when we need to write things that are large: we figure that complicated programs require complicated code. That might be the case, but it is not an excuse to write bad code.
There is an exercise in vexillology: you must be able to draw your flag on a 1 inch by 1 1/2 inch piece of paper from memory because that’s what a flag looks like on a pole 100 ft. away. In the same way, sometimes we must restrict ourself and take a step back to ask “is this the best way I can write my code? Is it busy or inefficient? Can it be done in a better way?”.
The user doesn’t care how complicated something is, how difficult it is to write; they paid for whatever you made and they want it to work well.
I work at the help desk at the University of Hawaii at Manoa, and in my time there I have people who come in and out asking for help with their computer. When they have a program that runs slowly, or crashes, and there’s nothing I can do but say “sorry, there’s really nothing I can do for you”, I have never heard them say “well that’s okay, I know the developers did the best they could with what they had. It’s complicated so I’ll cut them some slack”.
No. They say “this f**king sucks”.
Just like the designers of pencils, benches, or flags, people don’t care about good design, but they sure as hell care about bad design. Our job as computer programmers and designers is to make sure that our work remains invisible. Things we make may look nice, sound good, or do some crazy awesome thing, but if it doesn’t do it well, then it doesn’t matter. Remembering to keep it simple helps us achieve that.