I don't write a lot of book reviews here, but I just finished a book I'm enthusiastic about: Recoding America: Why Government is Failing in the Digital Age and How We Can Do Better, by Jennifer Pahlka.
Pahlka was Deputy Chief Technology Officer under President Obama, and a member of the Defense Innovation Board under both Obama and Trump. She's also the founder of Code for America, an organization that tries to bring programmers and other techies together to help improve state and local government. I've been aware of Code for America for a while, and while I've never been able to get involved myself (they have no presence in New Mexico), they seem like they've done a lot of good in the places they do cover.
Recoding America gives insight into why most government websites and digital services are so poor. And it's not because, as I'm sure we've all secretly thought at one time or another, the programmers who wrote the code are just bad at their jobs.
So what are the real reasons?
Part of it is a longstanding bias in government that programming should be outsourced to private companies rather than being handled in-house by employees of government agencies. But even more, the culprit is poorly drafted, overly specific requirements written by people with little knowledge of the technology involved. Sometimes these requirements come from the wording of the law: bills tend to add to existing law a lot more than they remove, leaving unweildy and conflicting details that are difficult or impossible to implement.
Pahlka goes through many detailed case studies, involving problems like clearing criminal records, signing people up for unemployment, healthcare, SNAP or veterans' benefits, ordering home COVID tests online (a major success story), or getting the most out of new higher-tech GPS satellites (the sad but true upshot of that story: the relevant government regulations were so poorly designed that the satellites finally launched without support for the new software and protocols required to use the new technology, so instead of an upgrade to higher resolution and better sensors, all we got was newer versions of the GPS we had before).
Plus, of course, the stories we've all read of agencies taking decades and billions of dollars to "modernize", but eventually failing and going back to their 70s-era COBOL mainframe systems.
Pahlka has some recommendations for how government could improve. It's not a matter of more funding; there's not much correlation between how expensive a project is and how successful it is.
Better project management would help: she's a big fan of the "Agile" system of development: make lots of changes, and get user feedback so you can redesign the parts that don't work, as opposed to the "Waterfall" method where people on high write specifications that the programmers try in vain to satisfy, and nothing is shown to any actual users until the program is finished and it's too late to make changes. That's in line with most modern software development thinking: "waterfall" never really worked anywhere, despite some people thinking that was the model they were using, because the people who were supposed to write the specifications were never clear enough or just couldn't be bothered, so the programming team was left guessing.
Accountability matters too: Pahlka says "hold public servants accountable to outcomes over process." It's less important that the team follow all the steps in some procedural manual written decades ago than whether the user can actually use your website.
It helps to have people in government who are competent in tech. That doesn't mean no government software should be outsourced, but when it is, it needs competent people interacting regularly with the development team, not just giving them specs and a deadline several years in the future. But that, of course, means attracting techies to government jobs that pay less than the private sector. Pahlka makes a strong case to tech people to try a period of public service: despite the pay gap (which isn't as big as some people might think) the rewards can be a lot greater. She quotes one programmer who tried both and went back to a government job because he found it a lot more satisfying than moving money from one billionaire's pocket into another's.
(On the other hand, my own personal experience says that getting hired by government works very differently from getting hired by a software company, and a resumé that works for one may not work for the other. Also, a pay cut from spending a few years in government can translate to many years of reduced pay if you go back to Silicon Valley afterward. I'm not sure the revolving door here works as well as she implies, and fixing that might help get more good tech workers into government service.)
The book isn't perfect. I was vastly disappointed not to see a single mention of free/open source software (FOSS). It seems like a huge omission, since FOSS and government ought to be a natural fit: the point of government software isn't to make a profit by getting people to pay too much for the product, like, say, Microsoft or Adobe; it's to help people by getting the most out of the software you write. In a very few places, Pahlka talks about software written for use by one entity, like a California county, being shared with others, which seems to open the door to FOSS ... but even then, it's not mentioned. That made me wonder about Code for America, which I had always assumed to be about FOSS, but now that I look more closely at the website, I don't see any mention of it there either, and I can't help wondering why not.
Also, I was annoyed that she seems to put forward the FCC's broadband map as a positive example, because it was finished on schedule, without seeming to realize that it's completely wrong because it's based on the service carriers claim to provide, not what customers actually get. That map is still preventing thousands of people in underserved areas from getting actual broadband service (including me). Okay, rant over.
Nevertheless, Recoding America is an enjoyable read that gave me a new insight into why some of these government websites and services are so bad, and at least a little hope that they might improve some day.
Recoding America: Why Government is Failing in the Digital Age and How We Can Do Better, by Jennifer Pahlka. (Disclosure: I get a small kickback from Amazon if you buy it via that link.)
[ 19:20 Jul 27, 2023 More tech | permalink to this entry | ]