If you’ve been paying any attention to the news this week, you will of course know about the major snafu in the Iowa Democratic Caucus. It is now largely being blamed on what appears to be a bug in the app developed by a for-profit third party company. I’ve been reading the news around this with quite a bit of interest both because I’m interested in our democratic process, but also because I have a small bit of idea what the app developer is going through. I’ve been an engineer on apps since the early days of the Palm Pilot, way back in 1999. (They weren’t even called apps back then!) As such, I’ve been on hundreds of 1.0 product launches, many of which have been amazingly successful, but I’ve also had my share of painful and embarrassing failures so I certainly cannot throw too many stones from within my glass house.
However, the thing that really caught my attention was the reported development cost of the app. It has been widely reported that the Iowa Democratic Party paid the app developer $63,000 for this product. In particular, I noticed more than a few news outlets reporting that it was a large sum of money. To an individual, $63,000 is certainly a lot of money but in the context of an app development project, it is a very meager, thin budget.
As app developers, we don’t often talk about all the costs that go into a platform like this, but given the gravity of this app, I consider this to be far too small of a budget. If you’ve ever wondered what goes into developing an app and how much it might cost, I think this is a great opportunity to break it down. If we are following any sort of sane development model, we will do the following:
- Gather the user and technical requirements of the platform
- Design the user interface and user experience so that precinct captains who are going to have to use the app can do so with very little assistance
- Develop the backend server and database that the apps will talk to
- Develop some sort of dashboard or web interface for retrieving the data that has been uploaded by the apps
- Develop an iOS app
- Develop an Android app
- Test the apps and server in a controlled quality assurance environment
- Deploy the apps and server to a production environment
- Have a beta test period to validate the system is operating correctly and that users can download and utilize the product
- Launch the product!
Given the above list of items needed to create the platform, we can reasonably estimate that, at a minimum, the team working on this should have consisted of an iOS app developer, an Android app developer, a server developer, a designer, a project manager and a quality assurance engineer. For an app like this, it’s still a pretty bare bones team of six people.
Now that we have the staffing established, let’s figure out how much time these folks are going to be working on the project. First, we need to establish a rough timeline. For an app like this, I would roughly estimate that it would consist of a month of up front work defining the requirements and interface followed by 2-3 months of active development, followed by at least 1 month of quality assurance. At that point, the app is hopefully well written and tested and ready to move to a beta test period which should, at a minimum, take 2-4 weeks. In the end we should have a project timeline that is going to run at least 5-6 months. Now we need to figure out how much time each person on this team is going to spend working on this product.
Let’s start with the project manager. In general, the project manager is going to be the source of continuity through the entire project. They are going to work heavily up front with the client (in this case the Iowa Democratic Party) and the designer defining the requirements and translating those requirements into a user interface that will meet the needs of the diverse population that will use this app. The users of this app are going to have an incredibly broad range of technical sophistication so it will be important that the UI/UX be done well. The project manager will then transition to part time during the development phase as they coordinate the many moving parts of the project. As the development phase wraps up, they will then re-engage as the product goes into the testing, deployment and beta testing phases. Given our assumptions above, they would likely spend about 1 month working with the client and the designer up front to define the product, then transition to approximately 1/4 time during the development phase and then transition to 1/2 time during the testing phase, followed by a full time engagement during beta testing. Roughly speaking, the project manager would need to be budgeted for about 3.25 months over the course of the project.
While the project manager’s involvement is a bit dynamic, the designer is a little easier to estimate. They will likely spend the majority of their time at the beginning of the project creating the user interface and user experience for the app, and then they will spend a little time during the quality assurance phase ensuring that their initial designs were successfully translated to the product. Generally speaking, the designer should be budgeted for about 1 month during the project.
Next up is the server/database developer. This one is a little more difficult to estimate since it is unclear where the caucus data needs to go once it’s uploaded, but at the very least we know that it needs to provide login and authentication functionality as well as data storage and reporting. In general, the server developer will need to define the interfaces that the apps talk to as well as provide development, test and production environments for the different phases of the project. As a conservative estimate, let’s assume that the server developer works for approximately 2 months during the course of the project.
The app developers on the project will obviously need to be fully active during the primary development phase, but even more importantly, they need to be fully engaged during the testing phase and at least partially available during the beta testing phase. As a conservative estimate, we can budget them for approximately 3.5 months of the project. Since we need an iOS and an Android app, we need to budget a combined 7 months for the project.
Finally, we need to consider the QA engineer’s contribution. In a perfect world, the quality person is a team of people and they are at least partially engaged from day 1 of the project. However, we will employ a conservative estimate and budget only a single person for just the testing phase of the project, which is 1 month.
So with all of that out of the way, we can come up with the following time estimate:
- Project manager – 3.25 months
- Designer – 1 month
- Server developer – 2 months
- iOS developer – 3.5 months
- Android developer – 3.5 months
- Quality assurance engineer – 1 month
That’s a total of 14.25 person months of effort. If you consider a 40 hour work-week, that equates to approximately 2280 hours of effort. To calculate a total project cost you would simply multiply the number of hours times whatever your company’s hourly rate is. For this exercise, I will admit that I’m making some assumptions because I haven’t seen the app in action. However, I’ve been doing this a long time and given the descriptions of the functionality I’ve heard reported in the news, I’m comfortable with my estimates.
I cannot say exactly what development plan this company followed and I cannot say how they staffed it, (although some details are starting to emerge). I also cannot say if the app developer had a longer play in mind when developing the app in terms of a profit model. For example, it is likely they could have charged the Iowa Democratic Party less than the actual cost of development with the intention of reusing the platform for other states and recouping more of their initial costs. (The Nevada Democratic Party apparently paid them for an app as well, so this is a likely possibility.) The one thing I can definitively say, however, is that for an app of this level of importance, $63,000 is not a very large budget. Given the vast amounts of money that campaigns raise, it seems like this would almost end up equivalent to a rounding error.