Mistakes organizations make when they go “Digital”
It is a frequent story in many IT departments nowadays: a new IT Director (or CIO) comes and initiates a major “digitalization program”.
And so it starts.. (very agile) Scrum / DevOps teams start developing massive amounts of code. The kanban boards are full of epics and stories. Whether outsourced or not, the expensive scrum masters and agile coaches take over the floors.
Almost always, all the produced code is “green field” – nobody wants to improve the existing systems or evaluate off-the-shelf products since, allegedly, devops and the off-the-shelf software configuration don’t go well together. Instead, the new platform follows the micro-services architectural pattern, and Docker is used throughout. The management is happy to see the sprint reports with fixed bugs and delivered stories.
So, what’s wrong with that?
What almost always goes wrong is the fact that the code, as compared to the off-the-shelf products becomes legacy very quickly. People leave the company, the development frameworks get obsolete, new frameworks take over. Hardly a year goes by when most of the used development frameworks get significant new version, however it takes too much effort to keep up and upgrade the software every time.
Another drawback in development is increasing complexity. The first results typically come fast, however with the time the developers lose the allure and the stories cost more and more time and “story-points”. This grows exponentially with the amount of code.
Such software is very hard to pass on to another outsourcing party too. Unless the code is perfectly documented and well-written (which happens very rarely), your company frequently finds that it cannot “divorce” its development-supplier. In some cases the new vendor is willing to take over, but in reality ends up incapable to fully support or extend the functionality.
The third drawback is tracking compliance, privacy and security of the software and the development process. It is not trivial to build a reliable security module that has modern single-sign-on capabilities, integrated with your corporate identity management system and is compliant with modern security standards. It is even less trivial to make sure that your new platform is compliant to all necessary privacy regulations and industry standards.
Here is our previous article on pros and cons of the off-the-shelf software.
If you are a non-IT company, we suggest to take a careful look before developing systems from scratch, or developing systems at all. Take a good look at the commercial and open-source off-the-shelf products. Prefer SaaS, if you are not susceptible to higher OPEX, since it will save you from doing major upgrades and maintaining own infrastructure or IaaS.
Developing code can be limited to the following:
If you still opt to develop own system..
If you still would like to develop your own code, we advocate the mixed approach to staffing. Do not simply outsource 100% of the effort. Instead, hiring your own key developers and augment them by external staff or outsourcing party working together. This way you will have own staff that is knowledgeable of the codebase and can facilitate future changes in sourcing, and if needed, implement extensions and maintain your platform.