The Last Word: Tide Tough Times with Performance-driven Development
By Rajinder Gandotra
Development cannot happen in silos and oblivious to the needs of the customer. Consulting Editor Rajinder Gandotra, strongly feels it is time to be driven by performance to wring the best value out of IT systems.
The current economic downturn has accelerated business consolidation and stepped up the need to innovate. Cost reductions, faster time-to-market, better products and differentiated services are now the key themes. These coupled with information explosion through social networking and addition of new users -- for e.g., cell phone users who contribute to almost 'n' times of current data users, are adding to the complexity and demand for high performance and scalability from IT systems.
There is no gainsaying the fact that performance issues lead to losses in millions of dollars and in some instances client relationships too. In today's economic scenario the purpose of performance engineering is even more critical in ensuring that IT systems rightly support business objectives. The current industry paradigm is reactive and disjointed, though. For instance, whenever there is an issue around performance or scalability in a production scenario, typically a reactive paradigm is adopted. In other words - call all the vendors or add more hardware kind of reaction. This reaction fails to solve issues as addition of hardware is akin to treatment of the symptoms without addressing the core underlying issues. The stop-gap nature of the solution more often leads the underlying issues to manifest again causing huge business losses. This is especially crucial for businesses that are characterized by cyclical demands.
It is commonly observed that application vendors claim responsibility for optimizing the performance of the application while hardware vendors focus only on hardware and network vendors focus on network alone. This results in a sub-optimal solution from the customer's point of view because no one entity bears the responsibility of optimizing the entire technology stack in this scenario and performance issues go unresolved for long. Undoubtedly, this disjointed approach leads to serious loss of productivity and business. The solution lies in adopting a holistic approach where vendors bear responsibility of the entire technology stack.
Drawing from the brief discussion above, I would like to reiterate that the current software engineering paradigm is reactive, which certainly needs to move to a higher level of maturity. The last change in software engineering life cycle included performance testing. This was an important change as performance testing helps in validating application performance before it goes to production and thus avoids surprises.
However, if serious performance and scalability issues like bad design or bad coding practice resulting in non-scalable architecture are discovered at the fag end of the development, this leads to go, no-go decisions for letting the application go live. A no-go decision leads to lost business opportunity and most often a serious loss of reputation.
The need is to move to the next paradigm of software engineering that can be called as 'performance driven development.' Performance focus through a performance engineering governance office is suggested which would help govern performance right from the business requirements gathering stage till go-live stage in production. This will typically involve mapping performance engineering activities to each SDLC stage. For example, during architecture definition/review stage, techniques like performance modeling can be used to predict the performance of application before getting into serious development. Move to 'performance driven development' will also involve education/change in developers' mindset as they need to appreciate the importance of the performance/ cost of code they write, in addition to the business impact of the functionality.
The suggested shift in the software engineering approach will result in higher predictability and risk reduction by ensuring that the business deadlines are met. This will also help in cost reduction and productivity improvement by ensuring optimal infrastructure cost. Better transaction response time will result in end users spending more time with their customers rather than waiting for the screen to appear. Thus a shift from reactive to a proactive mode is more likely to lead to higher performance and scalability as it would ensure that mission and business critical programs meet their stated objectives.
To sum it up, a move to performance driven development is paramount to realizing better value from technology investments and ensuring that the IT systems are aligned to organization's business and scalability goals.
Rajinder Gandotra is an AVP and Heads the Performance Engineering and Enhancement (PE2) practice at Infosys' Systems Integration unit. He has over 19 years of IT experience spanning Consulting, Management, Strategy and Execution. Prior to starting the PE2 practice, he set up the Technology Consulting practice at Finacle, Infosys' Universal Banking solution. He has a Bachelors Degree in Engineering in the field of Electrical and Electronics. He can be reached at