What's Missing from 'The Missing README'
As we noted in our review of The Tech Worker's Handbook, software companies have done a lot of damage to society. From automating discrimination and eroding privacy to spreading disinformation and fuelling racial hatred, those companies have amplified old problems and created new ones.
But companies are legal fictions: responsibility actually lies with the executives who run those companies—and with the programmers who choose to write software for them. One reason for this is that programming isn't a profession like nursing, accounting, or law. You can't just call yourself a nurse, an accountant, or a lawyer: instead, you must prove that you understand your legal and social responsibilities as well as your discipline's technical content. And once you have done that, you can be held responsible for your mistakes and for the harm you cause. The system is far from perfect—professional bodies often act to protect their members rather than in the interest of society as a whole—but it's the best we've come up with so far.
Attempts to professionalize programming have had little impact to date, but we shouldn't use that as an excuse for not talking about our larger responsibilities. This is why I was disappointed by Riccomini2021. It covers continuous integration, refactoring, technical support, agile planning, and working with your manager, but as far as I can tell, there is not a single mention of:
- privacy and data protection regulation,
- algorithmic discrimination,
- harassment and discrimination in the workplace,
- employees' rights (including legal protection for whistleblowers), or
- legal liability for the harm done by the things you build and deploy.
These issues are not "political": that term is sometimes used as an excuse to brush them aside, but they are as much a part of programming as design patterns or code reviews. A guide for new software engineers that skips over them is therefore like a first aid course that doesn't explain why to clean a wound or a civil engineering program that doesn't tell you what happens if you sign off on a bridge that then falls down. More pragmatically, a guide that skips over these issues isn't really preparing its readers for the future. Society is going to start holding us accountable for the impact of our work—we're simply too influential to avoid it forever—so any advice that pretends otherwise is looking backward rather than forward.
See also this outstanding article from Pulitzer Prize-winning writer Ed Yong, which explores how the idea of "public health" went from trying to address the underlying causes of illness to blaming individuals for not taking personal responsibility for things outside their control.
Disclosure of competing interest: I am working on a student's guide to some of these issues.
Riccomini2021 Chris Riccomini and Dmitriy Ryaboy: The Missing README: A Guide for the New Software Engineer. No Starch Press, 2021, 978-1718501836.
For new software engineers, knowing how to program is only half the battle. You'll quickly find that many of the skills and processes key to your success are not taught in any school or bootcamp. The Missing README fills in that gap—a distillation of workplace lessons, best practices, and engineering fundamentals that the authors have taught rookie developers at top companies for more than a decade.