RSS 2.0 Feed
RSS 2.0

Atom 1.0 Feed
Atom 1.0

  MacGuyver - Visual Studio, Tape, and a stick of Gum 

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.


Leave a comment below.


  1. Haacked 1/6/2006 3:05 PM
    The key thing is that this should not be the norm for projects. This is in the rare case that the client needs this phase to fund the next and promises to give time to refactor later when funding is received.

    In the long run, if you continue to just try and deliver the solution, you start to incur design debt ( The key is making sure the client is aware and balancing current needs with future needs.

    Alas, it's always a balancing act and us consultants/developers have to be great jugglers and circus performers.
  2. Ryan Farley 1/9/2006 8:05 AM
    Thanks for the comment Phil. I absolutely agree. When it comes to something like this, I'll only do it if it means that phase two will fund and we'll be able to make everything right - and even then it is last resort. I'd rather back out than to have my name on some peice of crap out there that might end up on ;-)

    It is a tough thing to do some times though, which is why I was questioning if I would have been able to pull it off. Nothing is harder for me than to put together a less than ideal solution.

  3. Simon 2/17/2006 6:40 AM
    I've faced this problem a few times. Given the choice, the customer is always going to choose new features over tidying up "working" code. It's not always the customer either; having worked for a consultancy charging fixed rates for a project, I've seen project managers do it too. One even told me "don't test your code as you write it, we don't have time. Just write it."
  4. Ryan Farley 2/17/2006 1:37 PM
    >>"don't test your code as you write it, we don't have time. Just write it."

    Hehe. Now that is just classic.

Comments have been closed on this topic.



Also see my CRM Developer blog