Stagnating at your programming job? Don't quit just yet!
Are you bored at work? Do you feel like you're stagnating, not learning anything new, like you're not growing as a programmer anymore? If you love learning, and love solving problems, having a job where you're bored is no fun. Your first thought may be to start looking for a new job, within your company or elsewhere. But this may be a mistake, a missed opportunity to take your skills to the next level. Sometimes the new opportunity is hidden exactly where you're stagnating.
If you're bored at work, if you feel like you're solving the same problems over and over again, you probably have become quite good at your job. You've become an expert. You understand the problem domain, the tools you're using and their limitations... you can do your job without thinking much. Now, consider what it takes to build a new large piece of software: you need both to acquire expertise on the problem domain and to design and implement the new system. Doing both at once can be difficult if designing the software is near the edge of your competencies.
But since you're an expert in your job's problem domain you are ideally suited to design or redesign a relevant new system. As an expert you need only focus on the design aspect, you don't need to learn the problem domain at the same time. If you have supportive management you may be able to either automate your repetitive work, leading to new and more interesting challenges, or rewrite a legacy system you are currently maintaining.
Automating repetitive work with a framework:
The Django web framework originates from automation of repetitive work. The programmers at the Lawrence Journal-World newspaper realized they were building the same features over and over and decided to share them within a single framework, a framework that is now used by thousands of developers. But I've no doubt one of the short term benefits was a much more interesting job.
When you encounter repetitive work your first instinct as a programmer should be automation. If you're solving the same problem over and over your work may benefit from a software framework or library to automate shared functionality. Instead of rewriting the same piece of code five times you write the framework once and then only need to fill in the differing details for each particular situation. Building a framework will be a new technical challenge, and can sometimes allow you to introduce new technologies or best practices to your organization. And less repetition means you'll be less bored.
Rewriting a legacy system:
A different reason you might be bored is that you're spending all of your time fixing bugs in an old and creaky piece of software. Maintaining legacy software can be tedious: you have to deal with old technologies, hard-coded assumptions that are no longer applicable, years of patches and retrofits. But if rebuilding the legacy system provides value to your organization you may have an opportunity to write something new and do it the right way. Rewriting software is always risky, but if you can manage it you will be able to introduce new technologies and best practices to your organization, and build something new and hopefully better.
If you're stagnating or bored it might be time to move on to a new position or job. But before you do that try to take advantage of your current situation as an expert. Guided by your boredom, you may be able to apply your expertise in new and interesting ways: automating yourself out of your current job and into a new one of framework maintainer, or rebuilding the legacy system everyone loves to hate.