
Elijah Potter, a software engineer who founded and maintains Harper, explores quality of life as a critical decision-making factor. You can read the original post on his blog.
With a relatively small team, David Heinemeier Hansson (DHH), Jason Fried, and 37signals laid the foundation for a number of successful companies and maintained a working community of extremely intelligent engineers. I have long followed their work and benefitted from their advice, which I apply to my own practice.
I recently read Getting Real, 37signals’s guidebook for building a successful SaaS company. Throughout their written work, Fried and DHH bake the same deeply personal idea into their advice: As you build your business or application, set yourself up to have a good quality of life.
Frequently, making decisions in the interest of your own quality of life can also produce better software. If you come to a fork in the road where a decision must be made between two or more options, you can often safely choose the one that improves your own quality of life.
In an older blog post, I proposed a different kind of mental shortcut, one I found effective after imagining what “the most effective engineer” would do in my position. When you imagine yourself on the path to being the kind of person you most admire, I found, you tend to become that person, as if by accident.
Effectiveness and well-being aren’t at odds. Imagining yourself as “the most effective engineer” shouldn’t prevent you from making decisions that improve the quality of your life. Rather, these two shortcuts can be used in tandem.
Eat Your Own Dog Food
When you are required to use your own product—to eat your own dog food, as the saying goes—there’s a strong personal incentive to make your own product better. If you make a change and it improves the quality of your own life, it will almost certainly improve the lives of your users, too.
Here’s an example: Dogfooding, as we know, is a helpful way to identify bugs. If you use your own software, you receive a representative sample of what the experience is like for the average user who consumes your product. When you encounter an obvious bug, you can take steps to address it so your future users won’t.
Which Feature Is Best?
When working on a new feature or capability, it is almost always better to prioritize that which will most tangibly help you.
For me, this meant making Harper available in Discord. At the time, I was using Harper a ton in GitHub. I had grown used to typing out a messy message before hitting Ctrl+E to fix all my mistakes, a strategy that helped me to write code reviews faster. But I felt frustrated whenever I needed to collaborate with a fellow maintainer in Discord because I had to type slower and manually fix my mistakes. By adding Harper to Discord, I improved my own quality of life and introduced a core capability to my product, opening a new market for potential users.
Indirectly Helping Your Users
Sometimes improving your own quality of life is the right call even when it doesn’t directly improve the product experience for your users.
Consider continuous integration. It may take a few minutes to complete, or it may take a few hours. In either case, the wait can be frustrating because it slows everything down.
Now imagine that you must choose between adding a new, highly-requested feature to your product and speeding up your continuous integration. How should you choose to spend your time?
If you believe that speeding up your continuous integration won’t improve your quality of life, then I suggest that you add the new feature instead. However, in my experience, this is rarely the case. Engineers can lose nontrivial amounts of time waiting for their GitHub Actions workflow to complete so they can free up time and space to work on other things. If you have had that experience, then speeding up your continuous integration (or even removing it!) might be the better choice. You’ll move faster, get more done, and, I bet, feel better about the work.
Always Use Your Brain
No matter how many blanket rules you encounter, please use your brain. Sometimes a mental shortcut is the right move, and other times you need to put some real gray matter to work. Each decision should be afforded the consideration it deserves—and learning to assess each situation accurately is an extremely valuable skill.