A Weekly (at least) Newsletter on Software Development
The Dream of Avoiding Failure
We all dream of working on software projects that make a difference but all too often the apps barely even run.
Over budget and buggy, we’re lucky if the services address even a part of the problem they’re supposed to.
Everything keeps changing, it feels like we’re constantly chasing after a moving landscape—Red Queen style. We dream of stability.
But There is No Stability
- New frameworks appear daily.
- New platforms keep getting released that are said to be better than the existing ones in every way.
- Older frameworks keep adding features and changing old ones in a constant search for perfection.
- New libraries get made to solve old problems in better ways.
- Progress is constant—an unrelenting weight on everything we do.
Everything keeps getting better but our endless chase after these improvements leads to bugs, delays, and burnout.
Stability is Something We Create
We work within a software development community using a variety of systems. We choose the systems. We choose how to change them.
What we need is to be thoughtful about it because, if those innovations are truly innovative, they’ll still be there a few months down the line.
The Out of the Software Crisis Newsletter aims to be your guide to a more systemic perspective on software development. It isn’t trying to sell you a specific system. There are many and most of them work. It isn’t trying to sell you a single platform or language (though, I am a web developer, so most of my examples will be from that world). It will help you think critically about established practices and sceptically about the new.
Modern software development is mostly broken: it comes unassembled out of the box and we need to figure out how to assemble it.
I can’t tell you exactly how to assemble your particular software development system, but I can help you find the questions to ask so that you can discover it yourself.
The Bonus Essays
Join the newsletter and get access to a PDF of three bonus essays from the book, Out of the Software Crisis:
- The Collapse of Complex Companies, on the risks of layoffs for large software companies (2750 words).
- Failure demand: when mistakes improve your metrics (970 words).
- Disruptive Innovations: Clayton Christensen’s mistake, which also happens to be a mistake the rest of us keep committing as well (950 words).
Either join the newsletter, or subscribe to the Feed.
Highlights from the Archive
Trends in software development are rarely based on objective observation or sensible practice. This endless chasing of trends leads to projects being needlessly rewritten, code being abandoned, and new projects being started when fixing the bugs in an old project would have done the same.
Programming without a guiding paradigm is just random and haphazard code. You have a process, experienced developers, and great research, but without a controlling paradigm, you are unlikely to be able to integrate them into a functioning software development system. You will need a paradigm if you’re going to get anything done. The easiest way to get there is to use a framework.
Constant churn in a software development team, both among the programmers and designers, is absolutely devastating. It is the death knell for a software project. Makes deadlines meaningless. It turns software into a disposable, single-use product like a paper towel. Anything that increases team member churn threatens the very viability of the project and the software it’s creating.
Software has always been bad, but many of the hardships of poor software have been lost in a haze of nostalgia. These apps may have been better designed, but they also didn’t have to account for as much variety in screen sizes or inputs. Most of them didn’t support proper multitasking, and stability was next to nonexistent. They crashed, a lot. Accessibility just wasn’t a thing. Admiring retro software is like admiring the architecture of a classic building while forgetting that it’s a condemned deathtrap and every other building like it burned down, killing every inhabitant.
Most online debates have this same underlying purpose. You debate with the intent not to change your mind: you participate specifically to clarify your views through opposition. The counter-arguments of your adversary purify your own and arm you against future attempts to change your mind.
For medium, large, and grand projects, the success rate is only in the 6-12% range. For most project sizes that we are likely to deal with in the industry, we’re back in “90% of all software projects fail” territory. Even moderate projects (too big to be small, too small to be medium) only succeed 24% of the time. The only reason the final number hovers around 30% is that it turns out that we are damn good at making small software projects: 61% are successful.
A recurring problem specific to software development is that many of the popular features that people keep asking for have a detrimental effect on the quality of their actual work.
Yet, we in tech and software development still venerate the tech elite, the billionaires, the VCs even though they have been wrong about everything that actually mattered.
The weblog ecosystem was built entirely around extracting value from Adwords. For a few, it was a springboard to launch something else. A few writing careers got off the ground. But the vast, vast majority was just Adwords. Weblogs as social media? A sideshow. Weblogs as a unique medium? Incidental.
This is, unfortunately, somewhat of a pattern, especially in tech. People substitute good behaviour and practices with talking about good behaviour. Instead of writing good code, they talk about writing good code. Instead of holding structured meetings, they write about holding structured meetings. Instead of treating all of their coworkers fairly, they write about treating them fairly.
The Book
Software projects keep failing, not because we don’t have the right team or tools but because our software development system is broken.
The book Out of the Software Crisis is a guide to fixing your software projects with systems-thinking making them more resilient to change and less likely to fail.
The AI Book
What are the major business risks to avoid with generative AI? How do you avoid having it blow up in your face? Is that even possible?
The Intelligence Illusion is an exhaustively researched guide to the risks of language and diffusion models.