Of course you wouldn’t build a
house without a lot of carefully-drawn plans. If you build a deck or a dog
house, your plans won’t be so elaborate but you’ll probably still
start with some kind of sketches to guide you on your way. Software development
has gone to extremes. For a long time, people didn’t have much structure
in their development, but then big projects began failing. In reaction, we ended
up with methodologies that had an intimidating amount of structure and detail,
primarily intended for those big projects. These methodologies were too scary to
use – it looked like you’d spend all your time writing documents and
no time programming. (This was often the case.) I hope that what I’ve
shown you here suggests a middle path – a sliding scale. Use an approach
that fits your needs (and your personality). No matter how minimal you choose to
make it, some kind of plan will make a big improvement in your project as
opposed to no plan at all. Remember that, by most estimates, over 50 percent of
projects fail (some estimates go up to 70 percent!).
By following a plan – preferably
one that is simple and brief – and coming up with design structure before
coding, you’ll discover that things fall together far more easily than if
you dive in and start hacking, and you’ll also realize a great deal of
satisfaction. It’s my experience that coming up with an elegant solution
is deeply satisfying at an entirely different level; it feels closer to art than
technology. And elegance always pays off; it’s not
a frivolous pursuit. Not only does it give you a program that’s easier to
build and debug, but it’s also easier to understand and maintain, and
that’s where the financial value
lies.