This is Part I in a series exploring developer happiness. The equation for professional developer happiness is a difficult thing to pin down. It’s arguably not even the same for everyone. But it is important, really important. Your happiness at your job affects every part of your life, not just the time at and the people around you at your work. It affects your mental health, it affects your relationships with your family and friends, and it affects how much you can actually enjoy time away from work. I recently took sabbatical from work for a couple reasons, notably to spend some time with my wife and kids in our new city. I’m back in school and wanted to get ahead on this semester and to avoid being at work in a house in which renovations were a constant annoyance. Those were the reasons I told everyone, and they were valid and all of those things happened. But underneath all of that, my motivation at work was severely struggling. This was not just because I knew I had a long vacation coming up; it started a good bit before I even decided to schedule the time off. It’s hard to say exactly how it happened, but I noticed exactly what it was about six weeks before vacation when I was given a task that should not really have been that difficult and simply could not find a starting place. I did what you are supposed to: I talked to other people about the task, asked for advice, even tried a few things with little success and was quite simply unable to convince myself to keep working through it. This was not the only thing I had to do at the time, and I still made progress on my other projects, but this was the only challenging thing on my plate, the only thing I had never done before. I just simply could not make myself do it. I talked to my boss and threw in the towel on this one. He was very receptive to getting someone else to take care of it, and that’s one of the things I really enjoy about working at Stack Overflow. Coding is also my hobby, so on sabbatical I had lined up a few things I wanted to do, all of which I had never done before. One of those things was to write a WordPress plugin. Why on earth would I do this? Mostly to test the theory that my compensation wouldn’t be reduced as a result of learning PHP, but also to help out a friend who wanted a widget for their website. It’s a JavaScript widget with a WordPress plugin data editor. Sounds simple enough, but turns out this was one of the more painful experiences of my coding life, and all of those motivation problems from above were completely reignited, right in the middle of my damn sabbatical! After a couple hours of searching the internet for the sorts of things I would search for in my language of expertise, it was clear the design patterns were just enormously different and the framework itself has some very non obvious nuances. After about three days of searching Google relentlessly, asking questions on the internet and calling friends who are more familiar with the tools, I was able to crap up enough of something to show my friend. The light in his face even at looking at this steamer reminded me how much I enjoy building things for people, but I was about ready to throw in the towel on this one as well in favor of my mental health. That evening I went to a local meetup, and in the chat afterward I met a college student who mentioned they had done some WordPress development in the past. When I told him what I was trying to do he said, “Ohh yeah I’ve built tons of those, even built this thing that will basically build the plugin for you if you know what data you want to collect.” He was gracious enough to give me a quick demo, and this thing was a steamer as well. I imagine he was slightly embarrassed at the number of errors generated before he managed to get through it, but when he finally turned around and looked at my face it was lit up like my friend had looked at me. It didn’t take me eight hours to finish this entire thing once I was off the ground after using this tool. Your developer happiness is unquestionably directly proportional to the ease of the tools you have to accomplish your task. This revelation was profound for me. I have always believed in the value I was creating for other people through my work; that’s exactly why I got so excited when my friend smiled at this thing I was building for him. Similarly, it is basically my entire job at Stack Overflow to build these kinds of small incremental tools to improve our own products, workflows, and data investigations. It was profound for me because it’s the first time in a very long time that I can remember feeling how much easier things can be once you have the right simple tool. Once returning to work a couple weeks ago, the first task I was assigned was very similar to the one I had to bail on before vacation. This time around, I first fixed one of our internal tools that was broken on Windows, and worked with another team to get a tool set up to get some very commonly used data into a state that’s much easier to access. Once these tools were set up, things were much easier, and I was able to work through the problem in a single afternoon. The biggest thing I hope you can take away from this is that after you’ve been doing something for a long time, it can be very hard to focus on anything but the big picture and all the little things start to feel like meaningless steps in some direction that isn’t necessarily the direction of success. Occasionally you should try to feel the relief of obtaining something that makes the hard things in your life easy. Set some time aside to build tools for yourself.