Designers and Developers
Developers are the people who understand the technology; it is their job to take an idea and implement
it in code. In some ways, this is the most complicated part, involving the herding of billions of bits of
data through the most complex machine. On the other hand, it is the simplest. When writing software,
developers have the luxury of knowing when they are done. Does the app work or not? Does it match the
design? These simple tests make software development akin to engineering, while design is not.
Design in this context refers to both graphical design and user experience design. Though many
people correctly distinguish between the two, I want to talk about the design as a whole. Design is the
process of planning, which is the foundation for all endeavors. When creating an application, it is the
design that takes an identified problem and presents a solution. Theoretically, we write software to solve
some problem. A clear vision of the problem and its solution is often what separates a successful project
from an unsuccessful one.
It is true that we can measure the success of a design by how well the problem is solved, and this is
why design can never be engineering, since we so often lack the ability to measure how well a design
solves a problem. For example, if you are designing a game, there are probably two problems you are
trying to solve—lack of money and boredom. Or, to put it positively, there are two goals you wish to
achieve—to make money and to entertain people. These goals are probably not isolated; it seems
reasonable to assume that the retail success of a game is a function of how well it entertains. However,
measuring how well people are entertained is much harder.
Consider that the entertainment value of the game or the ease of use of an application is the sum of
all of the design decisions. Now consider that the set of decisions is humongous and composed mostly of
answering questions like “Should the background of this screen be Blue(r=42,g=57,b=144) or
Blue(r=42,g=27,b= 222)?” or “Should the field for a social security number come before the field for birth
date or after it?” While it is true that user testing can provide excellent insight into the success of a
design, it would be impossible to measure every combination of possible answers. At some point, the
designer simply has to use her instinct to come to a decision.
I am a strong believer in iterative process. I find, as a developer, it is much easier to make many small
changes than create an entire application out of whole cloth. I think a lot of designers find it easier to
improve something that exists than to create a completely new design. Basically, it is easier to fix
mistakes you already made then fix mistakes you have not yet made. That's what the iterative process is
all about, setting up development so each new feature is a small change.
With that in mind, let's consider the creation of a simple application. This sample application will
be a single panel used to graphically show the size of files in a directory. The first step is for an
experienced designer to draw the application, like the diagram in Figure 1-6.