I wrote an earlier post around helping an enterprise client build their IT strategy, and how the strategy is shaping out to be one that is preparing them for a digital future while making sure the current enterprise runs well. That post focused on their analytics platform, and how being outcome-focused guided us to avoid technology-hype pitfalls. Read it here http://wp.me/p6zlyQ-27.
This is part 2 – agile development.
Situation 1 : In a first qualitative architecture assessment, I made recommendations to the client around an end-state where their enterprise applications run on application platforms that are far nimbler than their current stack, to drive IT costs downwards; and where application services are delivered mobile-first to improve accessibility to services. Sounds typical. Generic. Heck, writing those sentences above was itself droning.
Situation 2 : It was in a follow-up detailed assessment that uncovered current state situations that will warrant adoption of agile development. The client had hundreds of in-house applications. According to our software development expert, a huge chunk of these have “technical debt” (or code debt). I learned that in software development terms, a debt is code work that has to be completed, before any new code work can be implemented. The larger the debt, the larger the accumulated “interests”. And in the case of this client, the debt is unrecoverable. They were plagued with similar application services that were built in various heterogeneous ways, and were not able to update the code to address security gaps effectively.
The Big Gap : The assessment also concluded that they are many years behind in their software development capabilities.
So, we broke the gap down into chunks that build up toward the end-state. Here’s a summary of the first crucial steps :
- Set aside a team of developers who have some exposure to new application frameworks like Spring. Expose them to training and resources.
- Engage experts (like our team) in selecting a handful of applications to migrate over to a PaaS environment. Selection criteria is key for a successful first step.
- Yes, have a PaaS pilot environment. Select a platform that is completely infrastructure agnostic so that the codes and apps can run anywhere natively. Even public clouds 🙂
- Replatform selected applications or start building apps using Spring on the PaaS platform.
- Once outcomes are repeatable, then the process for this client can be established as a standard development process.
This, if successful, will be the first major milestone for the client to establish an agile software development practice in house. The next phase would then include building microservices that applications can make API calls to.