Jesus Christ on a Crouton, the body blows of tech failure and the deep involvement with product management keep a' coming.
You might be excused from awareness of the debacle, because like me, you ignored the event. But the aftermath must register on every tech product manager's radar.
In summary: Iowa uses some funky caucus activity that feels very undemocratic, and ineffecient. It entails having a bunch of people in a school gymnasium, and then they segregate to areas for each candidate. If no candidate gets to a threshold (I believe it is 15% or something) then the groups can go and try to recruite/convert/convince people in non-viable gatherings to join theirs.
At the end of this activity you have a sorted list of candidates, and voilá, you have selected a winner. (I seem to have flashbacks to "The Lottery" that I read as a child...)
This year, some braniac decided that this would be better with an App. So a company staffed by mostly former Clinton campaign aides (I shit you not) called "Shadow Inc." built an app to support the caucus. The idea - I think - to streamline the uploading of data, and to show how the caucuses evolved from round to round.
But, it turned into a ginormous shitshow.
While the Dude can't know precisely what happened, he has a few ideas.
- He suspects that the former Clinton campaign staffers drafted a high level set of requirements. Really high level (perhaps after imbibing some fine smokables). I can visualize the document: Build an app, for both Android and IOS. It will let caucus workers enter three values for each round of caucusing for each candidate and then upload it to a central server. The central server will tally the results, and display pretty maps. We will be sipping champagne and dipping our toastpoints into the finest beluga caviar.
- They probably went to one of the Fiverr or related freelancers site and found a hungry developer. I'd bet my bottom dollar that they selected one of the Bulgarian or Slovakian developers. Probably because they put a maximum price to develop the whole thing to be some ridiculously low price (say $50K). Hey, that Champagne and Caviar ain't cheap.
- There was probably no product manager or product owner to translate the HLD into realizable requirements. So, the development shop (or single dude) just did his own interpretation of the details.
- The developer showed prototypes, and it looked flashy enough. Perhaps at this point, the Shadow, Inc. people mentioned that it needed to be secure. So the developer scratched his head, and decided to use a Google Sheet as the database. Because Google uses SSL/TLS for all connections to their servers. That's good, right?
- The day of the event happens, and the mature Caucus workers who can barely facetime their great grandchildren are working with this shitty app, that is completely unintuitive, probably has connection issues (wanna bet on the LTE coverage of bumfuck Iowa?) and inconsistencies propagate, causing the Iowa Democratic Party to pull back, and chaos ensues. Additionally, there was probably no training on using the app, no trial run, no full system test. That shit costs money, and this is for one single day...
Again, educated guess, but the Dude has seen similar projects far too often.
What should have happened:
- The Shadow, Inc. people define the HLD.
- The Shadow, Inc. people hire a product person (owner, manager) to take that and build a detailed set of requirements.
- The product person works with a UX/UI person, preferrably before coding begins, to build mockups to pitch to the Shadow team. Hopefully the Shadow team has a few real, on-the-ground caucus staffers involved in the review. They will by pushing the buttons.
- Then, and only then does the Product dude build the backlog, and find a development partner, US based, to code this product.
- Hire a security consultant. Ensure that they are given 100% free access to the developer, and that they are expected to validate security at each step of process. Spend plenty of money on this.
- Each feature and function has a user story, a user acceptance test, and a priority.
- Prior to Caucus day, you host a massive training session, preferrably a full day, where you have all the caucus workers on, and you teach them how to use the app.
- Prior to Caucus day, you do stress testing. Build automated tests to ensure that the back end functions. Look for edge and corner cases. Err on the side of caution.
Of course, this takes time, money, and attention. I would bet that they all see teenagers build apps, and felt that this would be easy.
They could have just used paper and pencils like they have for over 50 years.