You Get What You Pay For (And Everything Else Wrong With The Iowa Caucus App)

Alloy Digital | February 20, 2020

Few things are worse than a failed app launch. One of those things is having it happen in the national spotlight, in a critical, time-sensitive situation. Throw in a political angle amidst a digital war on misinformation, and you get the story of IowaReporterApp, the hastily-made app that wreaked havoc on the recent Iowa democratic caucuses. Everyone from political activists and tech enthusiasts have given their input into the fiasco, but the universal takeaway here is simple: when you cut corners, things go wrong.

A Pre-Primary Party Primer

At the start of the year, the Iowa Democratic Party was feeling quite confident in their new app, IowaReporterApp, designed by the then-seven-month-old company Shadow, to aid in recording votes in the February 2020 caucuses, and relaying that information to the state party, with a heavy focus on security.

Everything changed on February 4th, as the votes didn’t quote come rolling in. The app was littered with technical and design flaws, with many users unable to even install the app in the first place. Several caucus organizers were forced to call in their results the old fashioned way, giving up on the app altogether.

When questioned about the breakdown, the recently-fired Iowa Democratic Party chairman Troy Price had this to say: “While the app was recording data accurately, it was reporting out only partial data. We have determined that this was due to a coding issue in the reporting system.” How’s the view from under the bus, Shadow?


What Went Wrong?

At first glance, it seems so simple: careless people build a terrible app. Some have clung desperately to more interesting notions: sabotage, political espionage, and foreign foul play. Understanding the root of the issue makes for something of a cautionary tale to all who make technical decisions, and at any level.

Test, test, and test again.

At all levels, testing solves problems. From the earliest stages of planning, down to final production push, software products will face many bugs, glitches, and technical issues. The best – and only – way to mitigate these are to test early and often.

In the case of IowaReporterApp, it’s been widely reported that poor testing, and a rush to production, is to blame for most of the technical failure. Bear in mind that Shadow was only formed in June of 2019. This doesn’t leave much time to build an app, much less the three projects that are publicly visible; IowaReporterApp, Lightrail, and Messaging. No exact timeline for the caucus app is known, but even at the maximum possible timespan of 7 months, that’s an incredibly tight timeline for mobile app development, start to finish.

Always budget time for testing. Imagine you have six weeks to build a house, and you spent five weeks decorating the interior. You can imagine how stable the house will be.

Many leave testing to the very end, saving it as a “final check” before going live. Focusing on routine feedback and technical quality assurance through the life cycle of a project is crucial and becomes even more so based on how critical the successful launch of the product is.

Know your user better than yourself.

The next piece of the Jenga tower is the end user being woefully under-trained. Many who’ve heard the story of the caucus app may not know that the apps users weren’t the voters themselves, but the local party leaders, attempting to report the results back to the state party. Despite all of these caucus volunteers being required to attend a caucus training session, use of the app itself was not covered, nor was it even available to test.

This is not only a blown opportunity to test progress in a real-world environment (also known as “the actual deadline for the project”) but shows the disconnect between Shadow and its users. Knowing your user and how they think isn’t just useful - it’s essential.What seems trivial and intuitive to a developer or product owner almost definitely won’t be to a non-technical end user, especially a nameless, ageless volunteer in western Iowa.

A cardinal rule is this: never assume what a user wants or how they think; they will always surprise you. Combining this concept of applied social psychology and routine user testing is the best way to ensure the integrity of a mission-critical product, and how we at Alloyalways put our best foot forward.

Never say you can’t afford it - you can’t afford not to.

The last act in this tragedy stars the developers themselves, many of whom were recent coding bootcamp graduates on their first real job.

The source code of the app itself has been released, and through many blunders such as typos, poor security practices, and other so-called “code smells”, it becomes obvious that not only were the developers less experienced, it appears they had little-to-no leadership guiding them. This is the difference in hiring professionals, and cutting corners. Your Frankenstein-ed team of bootcampers and offshore devs might come out to be a fraction of the cost of hiring a real team, but the cost of hiring pros to fix the mess will always be more than doing it right the first time.

Again, it’s not just about devs building something right, it takes a quality team with quality leadership to build a quality product. If you can’t afford to do it right, you can’t afford to do it at all.

“If we shadows have offended…”

The simple take away to learn from this modern-day tragedy is this: start well, finish well. Knowing your user base, understanding their needs, testing regularly through prototyping, development, and delivery, and having the right team makes all the difference in building critical apps. Just like the old adage goes: fast, cheap, and quality. Pick two.

Hire Us

Let’s create something amazing together.

We’d love to hear from you.

Whether you’re looking to update your current digital solution or just starting to explore, hit us up. We’re about solutions, not sales, and the path to results begins by getting to know each other.


2151 Highland Ave S, Ste 100
Birmingham, AL 35205


118 Barry St
Decatur, GA 30030