The Subtract Day: Why Less Code Can Lead to More Success

Background

Ever feel like your codebase is a hoarder’s paradise? You’re not alone. I’ve recently picked up a habit that’s been a game-changer for my projects: the subtract day. It’s exactly what it sounds like – one day a week (or fortnight) where I focus not on adding features, but on subtracting parts of the code or requirements that have become stale or could be deprioritized.

Why Subtraction Matters

In his book “Subtract: The Untapped Science of Less”, Leidy Klotz argues that our default approach to problem-solving is addition. We’re hardwired to add more features, more code, more complexity. But often, the best solution is to take something away.

Think about it: when was the last time you deleted a chunk of code and felt that sweet, sweet dopamine hit? It’s like decluttering your digital closet – oddly satisfying and surprisingly productive.

How to Implement a Subtract Day

Here’s how I structure my subtract days:

  1. Code Review: Look for unused functions, commented-out code, or overly complex solutions.
  2. Feature Audit: Identify features that aren’t being used or could be simplified.
  3. Dependency Check: Are all those npm packages really necessary?
  4. Requirement Reassessment: Chat with stakeholders about features that could be deprioritized or removed.

The Benefits of Subtraction

1. Improved Performance

 // Before subtraction
function processData(data) {
  let result = [];
  for (let i = 0; i < data.length; i++) {
    if (data[i] % 2 === 0) {
      result.push(data[i] * 2);
    } else {
      result.push(data[i]);
    }
  }
  return result;
}

// After subtraction
const processData = data => data.map(num => num % 2 === 0 ? num * 2 : num);

// Performance test
const largeDataSet = Array.from({ length: 1000000 }, () => Math.floor(Math.random() * 100));

console.time('Before');
processData(largeDataSet);
console.timeEnd('Before');

console.time('After');
processData(largeDataSet);
console.timeEnd('After');

Less code often means faster execution. In the example above, we’ve simplified our processData function, making it more concise and potentially faster for large datasets.

2. Enhanced Maintainability

Fewer lines of code mean fewer places for bugs to hide. It’s like having a smaller house – less to clean, less to maintain.

3. Clearer Purpose

By removing unnecessary features or code, what remains often has a clearer purpose. It’s easier to understand and explain to new team members.

4. Reduced Cognitive Load

Less code means less mental overhead. You’re not juggling unnecessary complexity, allowing you to focus on what really matters.

Overcoming the Addition Bias

Klotz points out in “Subtract” that we have a strong bias towards addition. It feels productive to add new features or write more code. But sometimes, the most productive thing you can do is take something away.

Here are some strategies to overcome this bias:

  1. Set Subtraction Goals: Aim to remove a certain number of lines of code or features each subtract day.
  2. Celebrate Deletions: Make it a team event. Who can safely remove the most unnecessary code?
  3. Question Every Addition: Before adding something new, ask if you can achieve the same goal by removing or simplifying something existing.

The Bottom Line

The subtract day isn’t just about tidying up your codebase (though that’s a nice benefit). It’s about challenging our instinct to always add more. It’s about recognizing that sometimes, less really is more.

So, next time you’re tempted to add a new feature or write more code, pause and ask yourself: “Could I subtract instead?” Your future self, digging through that codebase six months from now, will thank you.

Remember, as Klotz says in “Subtract”, “When we subtract, we often make room for more of something we want.” In the case of our code, that something might just be clarity, performance, and maintainability.

Now, if you’ll excuse me, I’ve got some code to delete. Happy subtracting!

A Different Kind of Developer Newsletter

We don’t spam! That’s yuck.

  • Building in Public: The ‘Back to It’ VS Code Extension – Part 1

    As a developer, I’ve often found myself staring at my code, trying to remember where I left off after a lunch break, a weekend, or even just a quick chat with a colleague. This frustrating experience of context loss is not just annoying—it’s a significant drain on productivity. That’s why I decided to create “Back…

  • Time, the Silent Exploit: The Unseen Enemy in Every Codebase

    You’ve got a bunch of gold sitting around because it’s holding its value great against inflation or because you are a dragon or something. The first thing you will want to do is protect your valuable gold. The most obvious thing is to start off with a wall. You do your research and build a…

  • The Mindful Coder’s Workweek: 5 Themes to Enhance Your Craft and Satisfaction

    TL;DR TL;DR for the TL;DR crowd: Screenshot this chart, print it out, follow it. Congrats, you’ve unlocked the cheat code to mindful coding. Now shoo – go be brilliant – or any other words that make you feel good. Day Theme Light Version In-Depth Version Mindful Fact Minimalist Monday Refactor one function to be more…

  • From Dirty Dishes to Clean Code: How Household Chores Mirror Programming Team Dynamics

    Ever felt like you’re the only one pulling your weight in a coding project? You might be experiencing the same psychological phenomenon that happens with household chores. Let’s dive into this unexpected parallel and see what we can learn about team dynamics, whether you’re wielding a mop or a keyboard. The “I Do More” Illusion:…

  • You’re Closer Than You Think: The Only 6 DNS Concepts You Really Need

    Feeling like DNS is this big, scary monster you’ll never fully understand? Here’s some good news: you’re probably a lot closer to mastering it than you realize. In fact, there are really only six core concepts you need to have down pat. The rest? You can offload that from your mental RAM. Let’s walk through…

  • The Wasabi Method: Shocking Your Way Out of Anxiety Attacks

    Ever felt like your anxiety is a runaway train, and you’re desperately searching for the emergency brake? You’re not alone. As someone who’s battled crippling anxiety from my late teens through university, I’ve been there. But what if I told you that the key to derailing that anxiety express might be as simple as a…

Join 39 subscribers

Hi!

I’m Jonah and I have thoughts that I share – sometimes. Join my mailing list to hear about new posts when I get around to it.

yes, I update this number manually

Sign up to receive awesome content in your inbox, every week, month when I get around to it.


Comments

Leave a Reply

Your email address will not be published. Required fields are marked *