When designing a software masterpiece, make the first release in pencil

Our chief architect, Kevin Hurwitz, has a very disciplined way of approaching software.  It is inherently incremental.  It is inherently vertical.  He communicates the approach by citing recent discoveries about da Vinci's techniques when painting the Mona Lisa.  According to various sources, da Vinci painted this timeless masterpiece first by drawing a simple sketch, then by layering on some paint, then some more, and finally by fine-tuning and tweaking the hands, face and lips with very tiny brush strokes.

Many of us (myself included) have a tendency to approach software very differently.  We like to get it perfect the first time.  We like to give the best user experience the first time.  We want to ensure we capture 100% of the necessary fields the first time.  In my experience, however, this approach is counterproductive, and the business can realize more value early by doing a sketch of the system first, and then layering on enhancements.

Gmail is a perfect example of this with its "Save to Draft" feature.  Early versions of Gmail were pretty crude, and the threaded conversations were the attention-getter.  Many users lost email text when the javascript malfunctioned and threw away the email: or perhaps their browser locked up.   Gmail added the "Save to Draft" feature and made the UX better. 

The point of this whole post is to deliver working software as quickly as possible.  When a discussion about the nature of a single field threatens to delay the delivery of a screen, deliver the screen without the field in question until such time the customer can work out what is needed with the special field.  Guessing at it up-front will ensure we get it wrong, and it will become clear once the rest of the screen is there.

When designing a great software feature, make the first version in pencil


Trackbacks

Dew Drop - January 3, 2009 | Alvin Ashcraft's Morning Dew Posted on 1.03.2009 at 2:58 PM

Pingback from Dew Drop - January 3, 2009 | Alvin Ashcraft's Morning Dew

Comments

Sean Chambers said on 1.03.2009 at 12:35 PM

I really see no value in this post. This is pretty much an obvious statement and is a given for any application that a developer creates. Of course no one gets it right the first time. Thinking otherwise is a fools errand.

Maybe if you added some more to the post with examples or something along those lines it would have been more valuable.

Ryan Svihla said on 1.03.2009 at 12:55 PM

@Sean

Jeffrey has a pretty wide audience. When I started at my current job this would have been a revolutionary thought there.

Jeff Sargent said on 1.03.2009 at 12:59 PM

Sean, there's a difference between getting it right the first time and wanting to get it right the first time. The lesson of delivering core functionality first and adding the extras - which might delay delivery of the core - in iterations is something that becomes more obvious with experience, but it not necessarily apparent for junior developers. It takes time to learn how to check your passion a bit, and cater to practicality. If you're far along in your coding experience, congrats; but those who are newer may find value in this post.

Karthik Hariharan said on 1.03.2009 at 1:10 PM

Rather than use pencil to describe your first release, I highly recommend using the Mockup tool Balsamiq. It's a great tool that even business analysts/domain experts can get comfortable with. And it translates to realistic, attainable user interfaces for developers to turn into real apps.

Jeffrey Palermo said on 1.03.2009 at 11:17 PM

@Jeff,

Depending on the organization, the programmer may or may not be determining priorities. Sometimes a product manager, sometimes a business subject-matter-expert. Whoever is deciding priorities should realize that guessing creates rework, and trying to "finish" a screen in the first rev requires some level of guessing.

Jeffrey Palermo said on 1.03.2009 at 11:17 PM

@Karthik,

Thanks for the tip. I'll check out Balsamiq.

Ran Davidovitz said on 1.04.2009 at 12:51 AM

I Also join to Karthik comment, i use it for my personal project and the output is amazing (as sketch) and quick.

Wookie said on 1.04.2009 at 6:51 AM

For those recommending Balsamiq instead of pencil...I'm afraid you guys totally missed the point :)