Software Design Reference Books
Design is hard work. I have seen brilliant designs, mediocrity and
horror shows. Like the doing of many things, a review of what
others think about the topic can improve understanding and give a
framework of reference to a problem.
Here are some references I recommend for design of almost anything, not
just software. I use these references for database design, software
application design, web design, any design, but the principles of design and
analysis of humans in these books seems to apply to a much wider venue
than just software.
Donald Norman "The Design of Everyday Things" Also known as the teapot book,
this is the guy who figured out why some things work and other designs
do not. This guy does not limit himself to software but shows how
basic principles of usability affects the design of everything.
Gary Klein "Sources of Power" analysis of how people think and act
effectively, alone and in teams. It is a good book on how thought and
action affect usability of design and problem solving in general.
Also has information on designing field studies of problem solving
which I find useful for basic design of something, the
testing of the usability of a design and even the management of
project teams.
Christopher Alexander "The Timeless Way of Building" and a bunch more books
including "A Pattern Language". This is the architect that popularized
the concept of a pattern language of design. The concept has crossed
many disciplines and is applied in object oriented software design and
other areas. Unfortunately his website, http://www.patternlanguage.com
is a horror show of bad web design.
Bruce Schneier "Secrets and Lies." Analysis of security that can be
applied to almost all areas of software and other security situations
as well. I find the his technique of constructing simulations a
useful technique for other design uses as well. The simulations
echo what is said in Gary Klein's book about problem solving.
The following references I use to help the usability of the designs I
make or others have made. I also use the findings described to review
designs for specific projects.
Jakob Nielsen http://www.useit.com has years of free useful columns on
internet usability. And a bunch of books and papers that cost
a bunch.
Steven Krug "Don't Make Me Think" The quickest and clearest book on web
design and usability out right now. He cites Gary Klein for his view
of how he designs web applications.
Paco Underhill "How We Shop", "Wie Kaufen Wir" (German translation) Another
form of usability (retail shopping) and a good read for designing field
testing of designs and usability.
After reading these and other books design is still hard work. It can
only be done by designing stuff and more stuff and verifying the designs.
Just being able to explain a design decision to myself helps my efforts
and these books give me reason and structure for my designs.