When to reinvent the wheel?



  • How do you decide whether to try to a) retrofit an existing solution that covers 90% of your use case but has an architecture that makes it extremely difficult to implement that remaining (and crucial) 10%, or b) develop your own solution from scratch even though 90% of what you're trying to accomplish is something that's been done a hundred times before, but apparently never in a way that's both well-supported and compatible with your requirements?

     



  •  The rule of thumb I had drilled into me at one of my first jobs was that an out-of-house solution needs to cost 3 times an in-house solution before it should ever be considered.  Remember to factor in the extra time to develop an in-house solution, as well as maintenance.



  • The choice between custom vs off-the-shelf is a very complicated discussion.  Each have there advantages and disadvantages.  Custom solutions tend to be the right choice when the problem domain is either immature (the industry hasn't figured everything out yet), highly unique (not a lot of companies do it the same), or both.  Because of that, custom solutions also tend to have significant competitive advantage because they can be tailored to fit the business processes exactly rather than shoehorned in.  Also, you can guarantee that your competitors don't get the same advantages.  But, you also lose economy of scale that would be garnered from using a off-the-shelf product.

    There is of course another option.  And that is to contract the vendor of the standard product to write your customizations.  Depending on the contract, you may be able to get the customizations included in future releases or not if they are sensitive. Given the relative closeness to the standard product, that might be the best choice.



  • @sprained said:

    How do you decide whether to try to a) retrofit an existing solution
    that covers 90% of your use case but has an architecture that makes it
    extremely difficult to implement that remaining (and crucial) 10%, or
    b) develop your own solution from scratch even though 90% of what
    you're trying to accomplish is something that's been done a hundred
    times before, but apparently never in a way that's both well-supported and compatible with your requirements?

     

    In that situation, b) is the right choice, but management will always choose a) since it seems cheaper, so I cannot prove my point.


Log in to reply