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.
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