I <3 Steve McConnell*
Coding Horror
programming and human factors
by Jeff Atwood

December 09, 2004

Never design what you can steal

As the old adage goes:

good programmers write good code; great programmers steal great code.

This is definitely true, mostly because great programmers have learned to do some research before writing anything at all. However, even great programmers tend to be absolutely terrible at graphic design, even though the solution is exactly the same: never design what you can steal.

A prime candidate for theft is this cheeky study in redesign. It works as a funny parody of Queer Eye for the Straight Guy, but best of all, it targets a page from usability guru Jakob Nielsen-- who often gets a black eye for his intentionally low-tech design layouts.

I was rather skeptical of this effort at first. As a developer, I sympathize with crappy layouts. It's what I do! I make really crappy, basic HTML layouts. Then I fool myself into believing crappy, basic HTML layout is a good thing because it's, you know, lightweight. Like Google! But these guys made me a believer. Their redesigns were a big improvement over the original, minimalist Nielsen layout:

  1. The original Nielsen Alertbox
  2. Rewrite of the text
  3. Redesign of the web page, with illustrations
  4. Enhanced print version (pdf)

I chose not to link to the "bonus Flash enhanced" version, which was not an improvement. As far as I'm concerned, the only proper use for Flash is to play Mr. Wong episodes.

Anyway, it was heartening to see how a few simple design changes could dramatically improve the basic HTML I regularly churn out. And if that doesn't convince you, how about this redesign of the famous "Bin Ladin Determined To Strike in US" memo that originally inspired this redesign?

Posted by Jeff Atwood    View blog reactions

 

« Gold Plating Blue Collar Software Development »

 

Comments

Also, I think it was Harry Chapin who wrote the folk song "Cats in the Cradle" said
"Good artists borrows music...great artists steal them".

Good luck with your graphics, I am not worth a damn at it.

-Mathew NOlton

mathew nolton on December 10, 2004 08:53 PM

Well, my point was that you don't have to be good at graphics-- you just need to be good at COPYING.

For example, I think this website has a fantastic, simple layout. If I was developing a web app that had similar functions, I'd copy the hell out of it:

http://www.basecamphq.com

Jeff Atwood on December 11, 2004 05:14 PM

OW! I actually subjected myself to http://www.designbyfire.com/000094.html

Why does a page full of people claiming to have uber design skills have a gigantic gray bar across the bottom that leaps and lurches all over the place when you scroll? That's excruciatingly annoying - especially given that the bar is a completely useless vanity. And that fog effect at the borders of the screen is a blatant reduction in usability.

I did think step 2 (as linked above) of their process was great. The redesigned text was far superior. But once they started adding all those vaugue icons and the strange numbering scheme, I found it a lot less compelling.

Developers might suck at designing, but designers trying to show off are at least as bad for the user experience.

Patrick on November 29, 2006 09:01 AM

It was actually Steve Jobs that said "Good artists borrow, great artists steal."

Dragon76 on November 29, 2006 01:21 PM

interesting comment jeff:

>For example, I think this website
>(http://www.basecamphq.com) has a fantastic,
>simple layout. If I was developing a web app
>that had similar functions, I'd copy the hell
>out of it

two years later... and thousands have.

lb on November 29, 2006 04:36 PM

> It was actually Steve Jobs that said "Good artists borrow, great artists steal."

Are you high?

MH on November 30, 2006 07:15 AM

Not Chapin, not Jobs, but a great Russian composer:

"A good composer does not imitate; he steals."

- Igor Stravinsky

Mark Pruett on December 2, 2006 07:40 AM

"good programmers write good code; great programmers steal great code."

If good programmers write good code, whose code are great programmers stealing from? ;)

Perhaps it should be ...

"Good programmers write good code; great programmers steal them ... and make them great!" ;)

Snappy! on December 3, 2006 02:34 AM

This September I had the pleasure of listening to Jeff Veen (of Adaptive Path - now Google - fame) talk at the dConstruct conference in Brighton. His talk was mostly to do with interface design choices on the web, but a lot of it is universally applicable, even outside of the web.

One of the great things about Jeff is he's able to bring in seemingly unrelated subjects and demonstrate how they are metaphors for the decisions and problems we face on a daily basis. So when he started talking about one of his favourite book - "Sea Kayaker: Deep Trouble", it might initially have seemed like he was digressing in a big way, but it actually contained a very pertinent message.

The book is a collection of stories from sea kayakers who've gotten into life-threatening situations, so as to help you learn from their mistakes. Jeff quoted one important line from this book:

"Obeying rules without an understanding of the reasons behind them creates an approximation of competence which leaves one vulnerable to the exceptions."

The point I'm somewhat laboriously trying to make here is that simply copying a good design from somewhere else won't necessarily solve the problem. In fact, it's only likely to work if what you're creating is actually identical to whatever you're copying. If you're making an online bookstore then copying Amazon makes sense, but that doesn't mean it's even remotely sensible for a website selling cars.

Unfortunately, programmers who copy design patterns for UI from programs they like aren't necessarily even choosing the good stuff. They're more likely to copy features which suit their own needs (as how else are they likely to appreciate them?) rather than those their end users will find of benefit.

So, to cut a long story short: don't just copy. Find out what works best for your specific users, and do that instead.

Ben Darlow on December 5, 2006 06:40 AM

I very much agree about http://www.designbyfire.com/000094.html .

But yippee for web standards: I can make it (and, indeed, their whole website) legible, simply by Use Style-->None.

anonymous on September 16, 2007 04:22 PM







(hear it spoken)


(no HTML)




Content (c) 2008 Jeff Atwood. Logo image used with permission of the author. (c) 1993 Steven C. McConnell. All Rights Reserved.