So you are stuck in a boring job with no way out and you are massively overqualified for what you are doing? How do you entertain yourself doing gruntwork until you can find a new job? This is a sort of a guide. I'm an expert by now... not a happy expert, but I think I've evolved considerably as a programmer despite having any meaningful work.
- If the problem isn't hard enough, make it harder.
- The 15 minute fix isn't fun. Implement the 8 hr fix that will save you 15 minutes over the next 50 problems.
- Make your designs interesting. If you create a framework that you don't like, you'll have to use it.
- Look at work as an independant study course -- where the tuition is payed to YOU and the faculty advisor is on sabbatical.
- Return defects as "by design". As in "not implemented, by design". People will buy this more than you think.
- Make your code as funky and innovative as neccessary. It should be maintainable, but it doesn't have to be "sane".
- Do reinvent the wheel. Sometimes the wheel is square. It sucks using square wheels. In an ideal world, people who build square wheels wouldn't have a job. But the world isn't fair, deal with it.
- Steal time from the clock. If the above solutions can't make the thing interesting, remember there is nothing wrong with using company time to learn new things. Half of all the things I've learned have been learned on Perl Monks when I was supposed to be doing something else. Now I'm learning Ruby!
- Subscribe to lots of technical mailing lists.
- If the group doesn't need feature X, but won't notice if you add feature X, add feature X.
- Create pet projects.
- Write utility apps for exceedingly weird purposes.
- Consider writing source code analyzers and parsers for log files.
- Learn about your corporate build system and become a part of it. Usually nobody wants to touch it. This is good. Perl is usually allowed in such areas, and no one will know what you are working on when you are working on it. Build crews are like rabid black sheep. People are afraid of them.
- Get root on some important servers. Install wikis and message boards for people to use. This makes you a webmaster or something -- people are afraid of those too.
- Print huge programming manuals at work. Like 500 page manuals. CPAN documentation. It's their printer, use it! Work may also have free binders, so that's goodness!
- Whatever you do, don't stop learning.
- Read web sites like perlmonks, ruby-lang, c2, and so on. Slashdot is kinda intersting, but can be a mind killer. And it doesn't refresh enough.
- Read other people's code. Study the design flaws in it and learn. You could read OSS projects, but corporate projects usually have a lot worse programmers due to the lack of scrutiny and rushed schedules!
- Find people in similar situations. Take long lunch breaks with them.
- Plan mass exodus. Even if there appears to be no way out, planning a way out is something to hope for.