Being a happy developer
Tags: discuss, devlive, happiness, productivity
Published: 2020-02-25 06:36:58

I've been thinking about this topic a lot lately. In my opinion, happiness is achieved by the right mixture of several ingredients. I'd like to share my mixture and I'm excited to hear about yours in the comments section.

_Note: The ordering does not correspond to the importance._

## Money
We need water, food, shelter, bed, health care, clothes, electricity, warmth, ...
We would like to travel, spend time with friends, go to movies, nurture our hobbies, surprise our spouses and family, play video games, watch Netflix, ...

Everything costs money. **However**, there is a certain point where more money does not bring us more happiness. A better car will satisfy you for a short period of time, but then you realize the satisfaction is gone and you need a new one. Our system is manipulating us that our problems will be solved once we buy that new shiny iPhone.

Money is a necessity but after a certain amount, [it does not bring additional satisfaction](https://80000hours.org/articles/money-and-happiness).

## Problem Solving
We love solving puzzles. We solve puzzles (tasks) all day. We are as happy as we can be, right? *Not really*.

If the puzzle is too hard, we might feel intimidated or even useless. If the puzzle is too easy, we might get bored. Neither of these feelings is supporting our happiness.

If your problem is too hard, try to split it into smaller parts. [TDD](https://medium.com/javascript-scene/tdd-changed-my-life-5af0ce099f80) will help you start by writing the simplest possible test and simplest possible code to make it pass. Then you add more complicated tests and more complicated code. Don't forget to refactor!

If your problem is too easy, try to refactor or optimize the surrounding code to make your problem more challenging and the [Boy Scout Rule](https://deviq.com/boy-scout-rule/) will help you make your codebase better.

## Ego 2.0
I came across this term in the amazing book [The end of procrastination](https://www.petrludwig.com/the-book). The gist of it is that helping others bring us joy, satisfaction and happiness.

I see it more as a matter of _attitude_, because not everybody can be developing semi-automatic drones with AI which fly around the world, pick up the trash and disposes it in the most ecological way.

There are plenty of great projects which help people communicate, connect, learn, teach, support others or just provide us the ways to unwind when we get back home from work. Finding the Ego 2.0 at my project helped me enjoy it even more.

## Team
Only a handful of people are working alone. The rest of us are part of a smaller or bigger team. The team can really push you forward, motivate, help, teach, guide, learn from you and be there for you. But also, it can drag you down, frustrate, slow and demotivate.

I believe there should be a right mixture of giving to and getting back. You should be able to rely on your team and your team should be able to rely on you and your work.

## Code Climate
[68% of Developers Said They Work on Products with High or Very High Amounts of Tech Debt](https://codeahoy.com/2020/02/17/technical-debt-survey/) (_117 developers took the survey_).

While, it's very important to work on a healthy codebase, it's not very common. The quality degradation usually starts with [the first broken window](https://whatis.techtarget.com/definition/broken-window-theory). From my experience, quality test suite and the synergic effect of the team making the codebase better with every commit can go a long way in terms of happiness and satisfaction.

Writing [Clean Code](https://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882) is an awesome way to start making baby steps towards a healthy, readable and maintainable codebase.

## What if my project lacks these characteristics?
The first step is _awareness_. Once you're aware of these areas, you can start assessing them and slowly improve them one change at a time.

Recently, I started to contribute to an Open Source project and found almost everything already in it:
 - working for free and giving back to the community stimulates the Ego 2.0
 - working with the right mixture of experienced developers and newcomers help you both learn and teach
 - we are free to pick the right project with good habits like writing automated tests, code reviews and 3rd party tools, which help to keep the codebase healthy
 - not every project is saving the planet, but we can definitely filter out those which do the opposite
 - bonus: stepping out from our comfort zone and writing code that can be seen publicly helps to build the personal "brand" awareness

This article will serve as a blueprint for my upcoming dev-talk. I would love to hear about your "happy ingredients". Which part interests you the most?