Design pt.  1

December 23, 2015

TL;DR: start from the beginning, then, start from the beginning again.

After hours of thinking about design, I made my mind up that design has to be holistic. If I was designing a system with some 5 features, I should start from the beginning and incorporate how each one of those features fits into and interacts with the program, then if another feature was added I should start from the beginning again because now each piece of the system has 5 other interactions instead of 6. And although it’s common to just hammer the 6th feature in there, that’s impossible to do without compromising the entire integrity of the program and leaving the feeling that the entire program isn’t as solid as it should be (even though only a few people would be able to put their finger on exactly what was wrong with it).

One of the most difficult aspects of any design is the giving the final impression that the entire system was created by the hand of one person. Very rarely does one person get the chance (if they even have the desire, or the ability) for end to end control, from the initial feature requests, to the first draft of the design, to the final implementation. It wouldn’t be unusual for a few people to pull the feature requests together, then have a few people architect the design, and then leave the implementation of the program to any number of people who had no hand in what the design should be or if a feature is even worth implementing.

The end result becomes a compromised program. Too many people had an input and the design wasn’t done holistically. Everything feels disjointed. I think this is the biggest hurdle for most projects and I’m not sure if there is one cure all. Each new project needs to be designed from the beginning (and be wary of letting a program grow organically, love should grow organically, systems should be by design), and when the requirements change and now there are 6 features instead of 5, don’t be afraid to design from the beginning.

← Why would anyone use Verizon? Books →
Written and Published by Matt Sheehan
Fast learner, amateur coffee drinker, good guy, programmer.
Mostly in that order.