One of my partners pointed this Slate article out to me about healthcare.gov. It is clear at this point that there have been a ton of embarrassing problems with the rollout of this site. I don’t want to get into the politics of health care, but I do find it interesting to look at what might be going wrong with the engineering.
The Slate article makes the point that the front end web developers (portrayed as a scrappy startup company) and the back end developers (portrayed as a shop better at getting government contracts than delivering) didn’t talk to each other and much of the problem stems from this miscommunication.
//technically we should look at the length of the stateData and not
var stateCode ="";
notFound = true;
stateCode = stateData[x].stateCode;
This is funny because the comment points out the bug, and it’s easy to fix. It’s especially funny since the array being iterated over has 51 elements — it contains the District of Columbia! My guess is that if you’re in Wyoming, you’re out of luck.
Fixing this bug would just require replacing the hard-coded 50 with this:
Evidently the developer didn’t like the name “substring,” so they wrapped it in something called getSubstringAfterOffset(). It’s almost always bad design to create a function to do something that ends up just being a call to another single function. Just use the original function without adding another call stack and variable copy overhead! Plus, giving this someIncrediblyBaroqueFunctionName obscures the underlying simplicity — any developer looking at a “substring” function knows exactly what it does.
But I think the smoking gun here is the TODO comment. That could be at the top of every file on the entire website, as far as I can tell.
I’m not trying to mock the individual developers of this code, because there are definitely some programming skeletons in my closet, especially when I’m working under tight deadline pressure. And anyway I don’t think the fundamental problem here is “Johnny can’t code.” The whole thing reeks of a project that one, wasn’t given enough time; and two, didn’t have system-level oversight.
Updated October 16 to clarify my intent was not to ridicule anyone.