- Posted by Ian Suttle on February 9, 2009
- Filed under General | Process
Programmers are paid to create, fix, and innovate. How you go about these tasks comes in two flavors - the quick and dirty method or doing it right. The typical reaction of a programmer is to strike down the quick and dirty route with eyeball laser beams because they want to have the time to do it right. Who can blame them? Nobody wants to write code they're not going to be proud of.
But what about those times when quick and dirty is appropriate? Sure, there are those times such as in prototyping or throwing an idea out there to see if it sticks. Prototyping's the obvious candidate for speedy delivery. You're just proving your theory and, in some universe I've yet to travel to, you'll have time to write it "the right way" if the software is going to stick around or evolve. Now the other reason, the "throwing an idea out there" reason, is different than prototyping. In this case I'm talking about something you plan on releasing to the public. This is sort of a super prototype with polish. It has to look right, and act right, but ya don't have to build it right. Why not? Because the purpose is to just see if it works with real people. Do people use it... is it making money... etc. If all signs point to yes then take the time and do it right.
"Doing it right" provides for lasting benefit. Build a stable foundation for the house that's going to be lived in. I'm not saying to ignore the KISS or YAGNI principles and build everything up front, but I am saying if you're not doing it for the near-term-test, then do whatever it is you REALLY need to do, and do it right. Say it with me... do - it - right. Your yard stick for what "do it right" means is up to you of course. You'll know.
Choosing your method of development is a factor (maybe a major one) in the key to success for your product, business, and team, so think before you act.
How's this work in your organization or with previous employers? Is this something you get to decide? If you're prototyping are you getting to rebuild the software when the time is right?