The global recession has strongly impacted the software development industry, including companies that develop software to support their traditional services. Anyone speaking to a development executive can feel these effects. The outcry is universal: “How can I do more with the same resources?” The need to be innovative, competitive, and cost effective has never been stronger than it is today. If necessity is the mother of invention, then current world economy is the mother of necessity. Nearly every CIO or VP of R&D that I speak with is struggling to improve their time to market while increase the number of features delivered within stagnant or shrinking budgets. Two common objectives of software development teams address this need:
- Improve predictability
- Optimize productivity
Perhaps a third common objective should be to increase innovation. While I will not address innovation directly in this article, there is an indirect relationship between predictability, productivity, and innovation. The more productive and predictable the team, the more capacity and latitude it has to put into innovative development.
Being able to accurately estimate software deliverables in terms of schedule, scope, and quality is a prized objective for software development teams and management. Any company that relies on software to help drive revenue, either directly or indirectly, needs to be able to trust the estimation capability of its software development group. Business leaders directly correlate revenue projections to software features, so delivering on time with committed scope and quality will provide better budget projections to the company and its stakeholders. I’ve been involved with large software development companies whose business departments do not trust the development organizations, and it was not pretty. There is a lot of contention, blame, and general dysfunction in organizations like this.
Once your business stakeholders can count on your commitments, they will think that you are not doing enough (how could you if you are delivering on time?), and they will quickly focus on getting even more functionality to the end-users. Not only is this a significant challenge for most organizations, but available methods for improving predictability and productivity features over time not readily available to most technology leaders. I like to use the word "effectiveness" to describe both predictability and productivity. The more productive and predictable a team is, the more effective they are. Effective development organizations can accurately predict their delivery in time, scope, and total quality while continuously finding ways to improve their productivity.
This article is designed to provide specific steps for understanding your development effectiveness. Getting this right will help move your software development group toward being a true business partner, if it is not already.
Define Your Business Objectives
The first step to being effective is to define what it means to be effective from a business perspective. Sitting with your business leaders and gaining a deep knowledge of their objectives is critical to meeting their expectations. It has been my experience that the better a development organization understands “why” it is developing a product, the more likely it can effectively deliver the “how.” Being specific with your business leaders is important to effectively communicate the product vision.
The Pressure is On
In today’s economic climate, many companies focus on reducing cost—or at least understanding the cost of delivering features to clients—so that a general ROI analysis can be done. The best measure of ROI is, of course, a bottom line dollar return for every dollar invested, however this is not always practical in the software world. Improving current customer satisfaction may be an objective for other firms. If this is the