Anger-Driven Development: Turning Frustration into Code
Peter Smulovics
Distinguished Engineer at Morgan Stanley, Microsoft MVP, Vice Chair of Technical Oversight Committee, Chair of Open Source Readiness, and Emerging Technologies in The Linux Foundation, FSI Autism Hackathon organizer
In the world of software engineering, frustration is often the unspoken catalyst for innovation. You’ve likely experienced it—stumbling upon missing documentation, a broken API, or an inefficient process that slows you down. In that moment, you feel the spark of Anger-Driven Development (ADD)—the urge to fix, improve, or outright replace something that’s clearly not working.
While it may sound negative, ADD is a powerful motivator. It’s the reason many open-source projects exist. It’s why small utilities, scripts, and even full-fledged applications emerge seemingly overnight. When something is so annoying that you can’t stand it, sometimes the best (or only) solution is to roll up your sleeves and write the fix yourself.
What Is Anger-Driven Development?
Anger-Driven Development is the process of turning frustration into action by writing code. Unlike Test-Driven Development (TDD) or Behavior-Driven Development (BDD), which follow structured methodologies, ADD is purely reactive. You encounter a problem, get annoyed, and decide to solve it by hacking together a quick script, submitting a pull request, or even developing a brand-new tool.
It usually follows this cycle:
Examples of ADD in the Wild
Anger-Driven Development has been responsible for some of the most impactful tools in tech history. Consider these examples:
1. Linus Torvalds and Linux
Frustrated with the limitations of MINIX and other operating systems, Linus Torvalds famously started working on Linux. His annoyance with existing tools led to one of the most influential open-source projects ever.
2. GitHub’s “Hub” CLI Tool
Developers at GitHub found themselves manually typing long git commands every day. Instead of tolerating inefficiency, they built hub, a command-line wrapper for Git that streamlined their workflow.
3. XKCD’s “Is It Worth the Time?” Calculator
Frustrated by inefficiencies in daily tasks, XKCD’s Randall Munroe created a comic that quantifies how much time you can spend optimizing a task before it’s no longer worth it. In response, developers created tools to automatically calculate it.
4. The Birth of Homebrew
When Max Howell found installing Unix tools on macOS to be a cumbersome process, he created Homebrew, a package manager that became an essential tool for macOS developers.
Why ADD Works
Unlike top-down development approaches, ADD is:
When developers work on problems that personally frustrate them, the results are often more polished, useful, and well-maintained because they feel the pain firsthand.
The Downsides of ADD
Despite its benefits, ADD has some pitfalls:
To avoid these issues, a balance between impulsiveness and structured development is crucial.
How to Channel Your ADD Productively
If you find yourself constantly frustrated by inefficiencies in your workflow, here’s how to harness ADD in a structured way:
Final Thoughts
Anger-Driven Development is a natural and often beneficial phenomenon in software engineering. Some of the best projects are born from frustration, but it’s important to balance reactive problem-solving with sustainable development practices.
So the next time you find yourself yelling at a broken tool or missing feature, remember: that frustration could be the start of your next great project.
Learn, Build, Teach
5 天前I love that you can tell this is a DALL-E image almost instantly. ??
I can think of quite a few a few utilities ive created out of ADD - both types in fact :)