Saturday, October 20, 2012

Global Delivery and life-span of IT Applications

Over the years the concept of applications has changed, especially with the introduction of new models; SOA, SaaS and ESB. Application is a general term used to represent collection of modules, bundled and packaged as a deployment unit. So, there are applications for different domains like the Integration, Web Portals, Messaging, Batch, ETL, etc. Here we use the term more for business applications. 

What is more challenging is that most applications bleed with problems as they grow with more funtionality. Customers demand to add functionality in short timeframe, scale the application to meet volume growth, expect to move with multi-tenancy models, the demand for change is ever-constant. This becomes the key puzzle to solve for delivery teams. Apart from these, the pressure of meeting business timelines, the unclear requirements, environment readiness, skill deficiencies, and most importantly the leadership challenge is pre-dominant in the offshore-onshore defined global delivery model.

There are many theories on how to approach these challenges, with agile methodologies, global delivery models, improved project management, the focus has been towards using different project management techniques. Over the years these techniques have been adopted without much success towards satisfaction of customer. What could be the reasons for failures? Do we really openly talk of failures? How can we approach differently? Does metrics based delivery resolve the issues? Does only agile resolve the issues? I have my strong views on this topic and will be sharing them here..

I believe the life of application is directly propotional to its design integrity. The most important design principle is Modularity. Think of it as Lego block puzzle. Joining the lego blocks in controlled way will create better structures. Be it creating Service in SOA or building web applications or any enterprise applications, if the design is based on modular blocks and their dependencies are controlled efficiently, the application becomes maintainable, understandable and flexible. This gives long life to application.

What is then stopping us to build such applications? I see many IT vendors take greenfield projects offshore working in global delivery model and even more systems for maintenance, but many cases end up with fragile systems that eventually bleed customers time and money. At later stage customers start terming these applications as legacy and start looking for replacement products and loose faith in custom developed applications. So what does it take to improve from this current state? Root cause to this problem lies in in-discipline to design. More important is to have consistent mechanism to ensure design integrity is maintained. How does IT vendors ensure this? Does use of bigger IT team, bigger test teams, bigger project management teams help resolve this? No way!

It is important to realize that design and coding skills are more important than ever before. IT vendors need to invest in maintaining right skilled people to ensure quality is delivered. It is skills in design and development that will ensure change to current system is applied meaningfully and maintains design integrity. People with design skills know how to apply design principles, know how implementation is modularized, how extensibility is supported and how application design integrity is maintained. This is why Object oriented principles, Service oriented principles and Agile methods are more relevant today. Applying these principles will ensure evolution of modular applications over longer period of time, benefiting customer in terms of change, efficiency and quality.
IT vendors need to focus on quality along with efficiency to provide customer satisfaction in a global delivery model. Key to this is people with right skills and that is the real challenge to the IT vendors, especially as they grow big their differentiation factors are diminishing. It is time to take a step back for IT vendors to re-focus on core capabilities and make it real competitive advantage in the crowded outsourcing milieu.