At a recent talk, one of the attendees asked me, "What is the one thing to avoid when coding?"
My answer lacked the foresight a question like that deserves. In the time since i've mused over this very topic. What is the most important thing to avoid when coding? The answer is boredom.
Bad things happens when coders are bored. Their productivity slows, they pay less attention to the details of their work, their growth stagnates and their passion is sapped. This is lose-lose for every party involved. The company gets less value from employees when their growth stops. The codebase also suffers from the slipping attention to detail.
But while the value loss for a company and codebase is concerning, the real victim of boredom is the coder. The software development ecosystem evolves fast and holds little regard for those it leaves behind. We need to always be learning to keep our skills relevant through the years. When we get bored at a company, we grow complacent. Stay in that slow lane too long and you start to see the software world pass you by.
So how can we avoid boredom in our careers? I should first clarify that i am talking about systemic boredom here. No one became a worse engineer because they worked on some mundane bug one afternoon. We are talking about longer term, dissociative boredom.
Perhaps the easiest solution to boredom is to recognize when you are growing bored at a company and try to adjust what you work on to make this more interesting. Try working on a system you've never developed in before. A change of pace like this can refresh your interest in a codebase as a whole.
Another option is to leave. If you find the subject your company develops in boring, the fit is probably a bad one. In that case, your best bet is to find a job that offers a more exciting problem area. Have no shame in this. In fact, you identifying this mismatch and leaving earlier than later stands to save your company tens of thousands of dollars.
Not all solutions are good, though. A common mistake is to fix boredom by adding new and unnecessary libraries to your tech stack. This injection of complexity may be exciting in the short-term but it creates long-term problems for the codebase and future developers. New techs are a great way to prevent boredom. But when our reason for selecting a new library is self-serving, it should be used in a personal project instead of the company codebase.
Marissa Mayer said that burnout is about resentment. When you resent your job because it keeps you from doing other things you'd rather be doing, you are experiencing burnout. By this measure, boredom is a primary contributor. The less excited we are with our work, the more we will wish our time is being spent elsewhere. Remember that a successful career is built on years of learning. If we start to resent coding because we grow bored in our job, we are setting ourselves up to fail.
tl;dr: Boredom is the singular worst thing in coding: worse than bugs or building the wrong thing.