This is a tough post to write. I’m at the tail end of an evaluation process for my company that ended up with us deciding to go with a third party vendor for software which powers key area of our business. It is augmentation rather than replacement, but still.
It was hard for me, because this particular key functionality was previously provided by custom software that I helped build over years.
I like to build things! Like most other software developers, I get excited about building stuff. One of the unmentioned frustrations of many software developers is building something and then seeing it shelved.
However, it was clear from the survey of solutions that there were three choices:
- buy something off the shelf
- get better as software developers and really, really accelerate our development
- have the business be negatively affected by this piece of software
Now, #3 is obviously not a good solution. #2 is a great solution, but is hard to put into practice, especially in a short time frame with a large code base (though we are trying to use some of the agile methodologies to make our software development more productive).
#1 it is.
Was this a wise choice? Talk to me at the end of the implementation, but I am hopeful. We did take several steps to protect ourself (after all outsourcing core business functionality can be deadly), including:
- a long, laborious evaluation
- engagement with multiple vendors, and
- building a set of criteria to help us determine if this outsourcing is meeting our needs
One thing that helped me take this decision a little less personally is to redefine in my mind the value of software to the company. It’s not the particular implementation of the software that provides the value.
Unlike a software company, my company doesn’t exist to write software (see Five Worlds for more on different types of sofware development). Instead, software exists to serve the company. Having something off the shelf provides the similar functionality for much cheaper. It also allows me and other members of the software team to write software that is unique.
Having been a contractor and having worked for a startup and consultancy, I’m used to being the disruptor. In this scenario, I was the disrupted (ht, David Skinner). It’s a humbling place to be, even if I wasn’t disrupted out of a job.