Coding Simplicity: How to Avoid Feature Creep in Your Life

Post written by Leo Babauta. Follow me on Twitter.

There’s a concept in programming called “feature creep” — when a software developer continually adds one feature after another because “wouldn’t it be nice” and “why not” and “isn’t it cool” and “some users asked for it”.

The end result is often a bloated program that tries to do everything but ends up being not very good at any of it — and hogs your system resources, crashes, and has a complicated interface.

Feature creep is a bad thing in programming, and it’s a bad thing in our personal lives as well.

We all have feature creep in our lives. It’s a part of the modern world.

Think about how life was like only 20 years ago — no one was using the Internet (basically), we didn’t have IM or email or Twitter or blogs or any of the other complications we have today. And 50 years ago, no one had personal computers, caller ID, cable TV, fax machines, washing machines, CD players. Go back 100 years, a thousand, and then ten thousand, and you’ll see how many features have been added into our lives.

Think about when you started out as an adult: you might have had basically nothing, including no debt (until you got that first student credit card, car loan and perhaps student loan), no furniture, no house full of stuff, no long to-do list. Now, this might not be the ideal life (you also might have had no means to do anything, or a solid career, or skills) … but you had a fresh slate. No features was a negative, but there was also no bloat.

Some of you might still be at that point — so let this be a cautionary tale.

Those of you who are 10 or 20 or more years beyond that point know that life isn’t that simple anymore — at least, not for most of us. Life tends to add features as we go along, and as they come out into the marketplace.

We now have all the Internet technology we mentioned above, but there’s more. There’s debt and all kinds of payments to make. There’s kids and all the things that come with that (an amazing array of features, good and bad). There’s more responsibilities and commitments and a more crowded schedule.

We’re not bored, and we have more means, and a career, likely. But these features bring much more: burdens, and an overloaded schedule, and conflicts that can lead to crashes. Headaches we don’t need.

The solution to feature creep in our lives:

1. Start from a blank slate.
2. Only add the features you really use and love.
3. Slowly implement the reduction in the code of your life.
4. Avoid future feature creep.

Let’s look at these steps.

Step 1. Start from a blank slate.
I’m not saying you should abandon your home and cars and family and job and go live in a cave. I’m saying take out a fresh sheet of paper (or a blank text file — but do NOT use Microsoft Word) and re-image your life. From a blank canvas.

Imagine your life had nothing in it. We’re going to be bolder than Microsoft and Adobe and do what they need to do: abandon software that has become bloated over a decade or two of feature creep, and start our code from scratch.

You might also make a list of everything you have in your life now: job, commitments, goals, activities, clubs, hobbies, meetings, relationships, technology, possessions. Anything that takes up your time and space and mental energy. These are the things we’re putting on the table. They are going to be tossed out if they don’t survive the next section.

Step 2. Only add the features you really use and love.
What do you want in your life? Focus on fewer features done well.

What is your ideal life? Your ideal day? What do you want to do, for work and play and love?

Look at the list you made in the first section — what do you want to keep? Don’t keep them because they’re nice, or have sentimental value. Keep them because they’re a part of the life you want.

Pick only a few things. This will allow you to have the space — time and physical space — to really enjoy them, to do them well.

Step 3. Slowly implement the reduction in the code of your life.
You probably can’t just toss out your old life and implement the newly re-imagined life. Unfortunately. It takes time to get out of commitments, to make the big changes that are required to get to this new life.

But it can be done, slowly, gradually, over time. Not overnight.

You can do some things right away: go through your home and toss out stuff you don’t want. You have control over that. You can also call or email people to get out of commitments, projects, meetings, jobs you don’t want and don’t absolutely need at the moment.

Other things can be done in the coming weeks. Slowly find ways to get out of tough commitments. Let others fade away.

Still others will take more time: changing houses, jobs, getting rid of cars, moving to a new place, getting out of debt. I’ve done all these, but it didn’t happen immediately. It takes a decision to make an eventual change, an awareness of opportunities as they arise, and the will to carry out the change.

Step 4. Avoid future feature creep.
Let’s say you simplify the features in your life in the next couple of weeks, and eventually get to a life of few but great features. What’s to stop feature creep from insinuating itself again?

Nothing except your awareness, and constant vigilance.

Being aware of feature creep is really the only way to combat it. Often these features come into our lives without much thought — we buy new things, agree to new projects, start using new technologies, one little thing at a time. But if we question everything, and are aware of what we’re adding and the big picture, we can say no.

Constant vigilance is simply saying no if it’s not a feature you absolutely need. Try out new features, and reject all but the best. And when you add new features, consider dropping old ones.

Revisit this issue every few months to see if you need to eliminate unnecessary code in your life.