Skip to main content

We should be software *designers*

Posted by joshy on October 9, 2003 at 9:14 AM PDT

I stumbled across an older online magazine recently.
A List Apart
has a wide variety of topics, ranging from
CSS and typography to what a designer
truly does for their client.
While the discussions range from the technical to the
philosophical they always target their stories at designers.
They've built a truly useful site and I look
forward to their return (it's
on hiatus now but should be back soon with new content).

Though it's for graphic designers I feel they have a lot to teach us.

  • Design is more than asthetics.
    A pretty product that is broken or does the wrong thing is a

  • Design is for humans.
    A well designed product, be it software, a car, or an apple pie,
    must serve the needs of humans, most specifically the humans this product is targeting. It doesn't serve computers, manufacturers,
    or in rare cases physics.

  • Design implies satisfaction of user requirements.
    That's what separates design and engineering from art and science.

  • Design is about compromise and constraints.
    If it's not possible to do everything (ie: pick one of fast, cheap, and easy) then it's up to the designer to find a compromise. That's their purpose in life. To make the best tradeoffs and maximze the value for the client.
  • Designers must know how to write.
    Most of us, myself included, are lousy writers. But good design
    requires communication with our customers, our users, and other designers. We have a lot to gain by learning to spruce up our prose.

We may need to start thinking of ourselves as software designers
instead of programmers and engineers. We make a product for a specific
purpose which must fit constraints and still be the best possible
product (and often for the lowest price). Even with the product is not seen by the end users, like middleware, reliablity and latency are still human factors.

I'm sure I don't need to remind you of how much bad software is out there. Some is ugly. Some is broken. Some just works in mysterious ways.
Every time you code against an API and you waste time working around it's arcane syntax: that's bad software. Every time a program breaks
because it receives input slightly out of the ordinary: that's bad software.

We truly are designers. We should make truly well designed software.