I've been catching up on some blog reading lately, I've fallen a bit behind. Anyway, a post from Phil Haack has got me thinking. In this post, Phil talks about those projects that we all have found ourselves in from time to time where there is a limited budge and limited time and you just have to crank something out, something that might be mostly crap (or at least just not ideal) but functional, just so you can get things to phase 2 where you'll reengineer everything and do it right.
I have been known to prematurely generalize, so I wonder if I would have been able to “look in my pocket, take out a piece of gum, foil wrapper, and loose thread and make it happen“. Isn't it hard some times to bite the bullet and do something that is less than ideal, just to make it through crunch time? No doubt that there are times that it just has to be done, but that doesn't mean I have to be happy about it. I've been in similar situations before. I've made the tough move and built something that wasn't something I was proud of when it comes to design and code, but did bring a sense of satisfaction that I met the customer's difficult timeline, stayed within the customer's borderline unreasonable budget, and ended up with a product to deliver that met the customer's needs and satisfied requirements. Was it the best piece of software ever? Hardly, but the best piece of software wasn't what was needed.
Sometimes, to deliver a product, you need a solution developer, not just a software developer. This consultant was a brilliant software developer, who had hit the high-notes on his pet project. But he could not bring himself to hack together a less than perfect solution.
I think Phil states things right on. It is all about the solution. Believe me, I am all about great design and code that makes drool. The stuff that a developer's dreams are about. But there is a time when you have to be a bit MacGuyver and work the miracle.