Peter Drucker says, “If you can’t measure it, you can’t manage it.” Many people fear outsourcing software development because they think it is difficult to measure results. They think there is no need to measure when the programmers are there in the same room. Or is there?
When I worked as a programmer in the 1980s, my boss used to joke that he was going to hire a guy with a kettle drum and put him in the corner of the room. Every time the kettle drum was hit, we had to have written a line of code! Today there is a different drumbeat. Now that outsourcing is more popular and promises huge cost savings, the drumbeat drives executives to measure the real savings.
Meanwhile there is a huge growth in Business Process Outsourcing (BPO). Business processes such as accounts receivable and outbound sales calls are easy to outsource. They can be so well defined you can accurately measure how well they are implemented. This has been going on for several years and many companies are looking for more and more processes to outsource.
Outsourced business processes are carefully measured and analyzed to detect problems and inefficiencies. New software tools not only help you detect problems, but new software can predict and fix the problems before problems arise.
Understanding the Process of Developing Software
Is it possible to measure software development to make it more predictable and reliable? What metrics would you use and what do you do if your outsourced software development process does not measure up?
Similarly, outsourcing opponents claim the savings of outsourcing will not be as great as advertised on the “window sticker”. Extra costs for management and delays due to poor communication will eat away at the huge savings promised by all outsourcing vendors.
SLAs can be complicated and require collection of many details to track progress accurately. But if you don’t measure progress at all, you are setting yourself up for trouble. One CEO spent $300K before realizing his outsourcing was going no where. You cannot just go on faith alone.
To Promote Innovation
It can also be difficult to imagine how to measure creativity and innovation when you are outsourcing the creation of new software – especially if new features are always being introduced and changes are constantly occurring. But you can measure the process of new software development, and it is done differently than the way you measure the maintenance of existing software.
To measure new software development you track how many new features are added over time. Some metrics split the programming required into work units and then track how many units are completed over time. It is best to measure results daily and at least weekly.
Engineers are notoriously optimistic about their ability to create working software. So another metric measures how accurate their estimates are for the time required to finish the software development. Initially, their ability to estimate will likely be poor. You can set a goal for the engineers to improve this skill as your development continues so you improve the predictability of your process.
For maintenance programming you need to track the work units or bugs fixed over time. In addition, you should measure the amount of re-work required for bugs that fail the QA step after fix attempts.
Remember: the purpose of the SLA is to guide your software development to success and to detect and correct problems as they arise. It is not to support micro management, a blame game or to create an adversarial relationship with your outsourced team.
Developing a Schedule
Your outsourced team should commit to a schedule for completing the programming work. As part of this they must also agree to the definition of work units and the productivity level they believe they can achieve. Their commitment makes them independent and free from requiring specific instructions for all their work activities.
You typically measure the throughput of your outsourced team as a whole. A team is typically a combination of junior and senior members. Junior engineers will need guidance and mentoring from the senior engineers. This is normal and should be expected and encouraged. But it should also be measured over time. A senior engineer can be expected to spend from 5% to 25% of his/her time with junior engineers depending on the complexity of the project and prior experience of the junior engineer.
Today most people use simple software tools like spreadsheets and Microsoft Project to track the metrics of their outsourcing. More sophisticated tools are also available but are expensive and best applied when you have a large portfolio of software development projects. New tools are being developed to offer automatic use of metrics as other elements of your software development are tracked.
For example the amount of time source files are checked out of your source code control system can be used to help measure the productivity of your engineers. Other on-line techniques to track progress and measure results will be coming soon.
Will software development become as predictable as BPO and enable you to fix problems before they occur? I doubt we will ever have this much control over the creative software development process… but who knows? That guy with the kettle drum may not be far off!