One of the best ways to improve is to learn from your mistakes, but an even better way is to learn from someone else’s. Over the past couple of days, the Posse at Prominent has been reflecting on an app (created by another company) which played an integral part in the reporting of the Iowa Caucuses.
A recap
If you haven’t heard all of the buzz from CNN, ABC, NBC, and every other news channel on the planet, then you’ll be shocked to know that the results from the first caucuses of the 2020 presidential election were delayed due to issues with a software application. The Democratic Party contracted Shadow Inc., a startup political technology company, to build a mobile app that would help the party quickly compile and report results in Iowa’s 1,765 precincts.
CEO of Shadow Inc, Gerard Niemira, told Bloomberg News that he was "really disappointed" in the app's performance on Monday night. He added that ultimately, the issues weren’t with the app itself, but in the way that Shadow transmitted data to the Iowa Democratic Party. “All the data that was produced by calculations performed by the app was correct. It did the job it was supposed to do, which is help precinct chairs in the field do the math correctly. The problem was caused by a bug in the code that transmits results data into the state party’s data warehouse.” That transmission bug, Niemira said, “had catastrophic impact.”
In addition to the reporting issues, there were also bugs with login attempts into the app. Several caucus chairs were having trouble signing in on the day of reporting. “We’d had people using this app for weeks,” Niemira said. “It had a ‘sandbox’ mode to practice with. What we were seeing early on caucus day was people having difficulty logging in for the first time.”
Niemira told Bloomberg News that the problem was avoidable and should have been caught before caucus night. “Yes, it was ancipate-able. Yes, we put in measures to test it. Yes, it still failed. And we own that.”
Lessons Learned
These events have put a spotlight not only on the company that created the technology, but on software and technology companies in general. It’s crucial for us to learn and use these events as an opportunity to better ourselves. That being said, here are the lessons that our team has reflected on…
Code reviews pay off
As the story of the Iowa caucus reporting unfolded, we learned that this was an issue with a bug in the code of the app. At Prominent, part of our unique process is that every change to code is reviewed by another developer. This brings another set of eyes onto the code, reducing errors and increasing consistency.
Code reviews may not have fixed this problem, but it could have. Better yet? If code reviews didn’t catch an error in code or a bug, a Quality Assurance team should have through extensive testing.
Testing matters
This situation showcases the importance of extensive testing. While the app was tested, the company themselves admitted that this was an issue that was able to be anticipated and met. One of our senior consultants, Jim Herrington, said it best: “When you think that something is an edge case and will most likely never happen, it will.”
Testing is something that should not be sacrificed on in any project, whether an internal-facing custom application or a heavily-spotlighted political app. Our Quality Assurance team extensively tests, anticipates, and reports bugs to our development team. While this process may add to budgets and the timeline of projects, it is a crucial step that prevents bugs, breaks, and down-time.
Educate your users
Caucus reporters faced a variety of issues with logging into the apps. In part because of glitches, but also because of a lack of understanding. For security reasons, there was a variety of credentials needed to login to the app. While these security measures are a crucial necessity, users didn’t understand the process. Users should always be educated, especially when something is being released that will significantly impact their workflow or how they’ve done things in the past. By ensuring that there is early and thorough education upfront, your users will be stronger advocates for the software and will be able to transition into utilizing it much easier.
Prioritize inclusive technology
This situation was also a good reminder for developers. Software architects and the development team should be ensuring that the technology is inclusive and available to the people it is serving, considering things like lack of cell phone service, demographics, and more. When choosing a technology, hosting, and other services, developers should be ensuring that it can handle the audience size. In peak performance, software should still be functioning, high-performing, and should be evaluated using load tests and other measurements.
What we concluded
Our posse had feedback galore on ways that this app development for the Iowa Democratic Party could have been improved. Ultimately, we concluded that the fault of this wasn’t in having an app, but in how the process for testing, development, and training was organized and prioritized. We hope that this is used as a case of reflection, reminders, and learning for technology companies and that businesses looking for software applications are more mindful of the development lifecycle when they are trusting a company with their software.