Okay, that is likely the most inside-baseball, geekiest headline I have ever written. Well done me. For those of you not immersed you in the minutia of software development eco-systems (and what lucky people you are), Uncle Bob is Robert Martin, one of the smartest commentators on the process of creating good code and good systems working today. The Coming Software Apocalypse is the title of a depressingly accurate Atlantic article describing just how terrible we as an industry are at producing good code and robust software systems. Uncle Bob has written a brief critique of the article that is both entirely accurate and completely myopic.
Bob’s primary point is that the article’s primary solution to the problem of poor software if better tools to assist in creating better code. Bob’s point is that better tools alone are not a solution in and of themselves. He contends that
- Too many programmer take sloppy short-cuts under schedule pressure.
- Too many other programmers think it’s fine, and provide cover.
Well, yes. I wouldn’t disagree with that. In fact, I have said similar things myself. Bob’s solution even has some merit: increase the professionalism of the programming industry itself. Stop accepting these short cuts and half-measures and start raising the bar for what is considered quality software. Which, well, fine. But do you know what Uncle Bob never mentions in his article? Professional associations. Guilds. Professional standards bodies. Unions. Bob, it appears, seems to think that programmers have given into schedule pressure because they are lazy good for nothing lay-abouts and now that they have been given a stern talking to by their favorite Uncle all will be well in the world.
Programmers, like everyone else, are embedded in an economic system. If there is schedule pressure it does not come from the programmers, who are generally interested in making things. Rather, it comes from the businesses that employ them, who are generally interested in making money. Getting in the way of making money, by, say, holding out for better software, sooner or later leads to unemployment absent any other countervailing factors. Unions are countervailing factors. Professional associations are countervailing factors. Counting on the good will of your employers is not, in most cases, a countervailing factor.
This kind of lazy thinking drives me crazy. Robert Martin is justifiably regarded as one of the smartest people in the software development world. He has thought long and hard about how to create robust software and robust software systems. But that level of thought is completely missing in his critique of the Atlantic article. I will grant you that modifying the existing power structures in the software industry is not an easy problem to solve. And I will grant you that licensing organizations, unions, and professional organizations like the bar association and the AMA are not unalloyed goods in every situation. But the quality is doctor’s is generally higher than the quality of programmers, and it’s harder to get doctor’s to rush through surgeries to make a schedule than programmers to make a release date. The AMA isn’t the only reason for those facts, but it helps.
If you really think that software development is dangerously broken, and you really think that a lack of professionalism among software developers is a core contributor to that problem then you really should actually think about what a solution looks like. Merely saying “do better” isn’t especially useful. It is the equivalent of a coder writing “be fixed” as a solution to a bug. If you care about the profession, then you have an obligation to attempt to understand the systems in which it operates and attempt to fix the flaws in them. The kind of lazy thinking wouldn’t be accepted in a design or code review. It shouldn’t be accepted when discussing the much more fundamental questions of how critical systems get made within the very real power structures of a modern economy. We as a profession need to do much, much better than this if we don’t want the apocalypse to actually arrive.