Software Estimation Best Practices

How to Use Big Data to Improve Your Software Projects

In the recent Washington Post article How the Obama Campaign Won the Race for Voter Data, Joel Kowsky writes about how the 2012 Obama campaign used analytics to improve their campaign strategy, and to ultimately secure the presidential victory.  

Regardless of where you stand on the political spectrum, it’s hard to argue that Barack Obama’s campaign strategy was anything short of impressive.  As soon as Obama took office in 2009, his team began preparing for his 2012 campaign.  From the start there was a strong emphasis on measuring the campaign’s progress.  Jim Messina, Obama’s 2012 campaign manager, stated 

“There’s always been two campaigns since the Internet was invented, the campaign online and the campaign on the doors.  What I wanted was, I didn’t care where you organized, what time you organized, how you organized, as long as I could track it, I can measure it, and I can encourage you to do more of it.”

The team began by conducting a postmortem study on their 2008 campaign where they analyzed the number of homes visited, phone calls placed, and voters registered by each field organizer and volunteer.  The result was a 500 page report which highlighted areas of improvement for the 2012 campaign.  

The suggestions led the Obama campaign to invest in building customized software that would integrate all the data the campaign had collected on voters, donors, and volunteers and link to individual voter profile.  This software analyzed previously collected data to calculate the likelihood of candidate support, the likelihood of election day turnout, and the degree of persuasion for each voter.  

The campaign used this information determine the most efficient use of funds and volunteer time.  Obama’s chief Ohio strategist, Aaron Pickrell, told a story which illustrated the difference between how the two campaigns allocated resources.  

“An Obama volunteer knocked on his door during the summer, just to check in and see if he had any questions.  The volunteer did not know who Pickrell was.  He knew based on the campaign data, only that Pickrell should be a solid Obama voter, someone who needed to be contacted once at most.  Pickrell and his wife later ordered absentee ballots.  When the ballots arrived, they set them aside on the kitchen table, where they sat for two weeks.  ‘I got thrown back into the database of people who needed to be contacted,’ he said.  Soon an Obama volunteer knocked on their door to remind them to turn in the ballots.  Once they did, there was no more contact.  That was the level of the campaign’s efficiency.  Meanwhile Pickrell said he received a dozen direct-mail pieces from the Romney campaign, a waste of money and effort on the Republican’s part.  He got no direct mail from the Obama campaign because the database said he didn’t need persuading.”

Knowing that so much was at stake, the 2012 Obama campaign maximized their efficiency to execute a remarkably successful campaign effort.  However, using Big Data is not limited to political campaigns.  Estimating software projects can benefit from this approach as well.  

One of the most important elements of the Big Data approach to software development is collecting good data.  A good place to start is with your completed projects.  You can input the project’s start date, end date, expended effort, and peak staff, as well as any additional metrics you may have collected into SLIM-DataManager.  As current projects wind down, you can conduct a postmortem upon completion of a project where you can collect data on all the metrics of interest.  Additionally, you can use the review tab to enter completed project data for schedule, effort, cost, and size growth to calculate schedule slippage and overrun.

While there may be little incentive to take the time to conduct a postmortem for your previous project instead of immediately starting the next one, taking time to reflect on what you did well and what needs improvement is valuable for planning future projects.

Once you have a database of projects (the more the better) you can analyze them using SLIM-Metrics.  Perhaps you’re interested in looking at how team size affects productivity.  Using SLIM-Metrics, you can build queries to group your projects into small teams (i.e. <5 FTE) and large teams (> 10 FTE).  You can then plot these groups on a Size vs. PI chart to determine which trends show greater Productivity.

If your organization has at least 30 completed projects, you can use that data to create custom trend lines to use in your analyses.  Creating custom trends is beneficial to estimating future projects because it will give a more accurate representation of what your organization has accomplished in the past.  

You can even take this customization one step further by building custom templates.  Custom templates are regular SLIM-Estimate files that have already been calibrated to your organization’s software lifecycle.  They usually are based upon your typical projects as a model for estimating future projects.

If you collect data throughout the course of your project, you can even use it to track its progress.  SLIM-Control allows you to forecast the most likely delivery date, cost, and reliability of a project.  At various points during the project you can enter actual data and compare it with the project plan.  If the project begins to veer off schedule you can reforecast and use the updated information to adjust/ update a new plan.  Collecting metrics while the project is in progress will allow you to make more accurate predictions about the project outcome.  

If you want to take a Big Data approach to software development, the SLIM Suite can provide you with the tools to estimate, track, and analyze software projects.  Just like the Obama campaign, SLIM allows you to collect data on your completed projects, analyze it so you can learn your strengths and weaknesses, use that information to set goals for future projects by designing custom templates, and then track the progress of your project throughout the software lifecycle.