At the start of my career I learned an important lesson: The reward for doing good work is always more work. That often works in your favor. As you advance in your career, you move from doing many simple, repetitive tasks to solving fewer, more complex, and more interesting problems. In general, my experience bears this out—but not always.

In my first real job, I was a software developer in a small group within a large company. I started out knowing very little about how to do my job other than the programming fundamentals I picked up in A.P. Computer Science. However, I was smart and driven; I worked very hard and eventually became the best and most knowledgable programmer in my group—at least when it came to web and database development. For my effort, I was award with promotions and raises 1, but the nature of my work actually got worse instead of better.

Because I was so good at figuring out how other people’s code worked, troubleshooting, and fixing the hardest-to-fix bugs, those became my primary responsibilities as a programmer. I was no longer writing small systems from scratch or developing clean architectures. Instead, I had two roles. First, I was the Sherlock Holmes of diagnosing and fixing coding problems for other members of my team. Second, I was in charge of the technical side of large software integration projects. These are projects that involve bringing in code from people outside the company and making it work on our company’s systems. In both of these roles, I spent many hours a day wrangling with other people’s messy, awful codebases. In the end, my projects were successful, which was rewarding, but a lot of the day-to-day work was mind-meltingly difficult and unsatisfying.

I had moved from performing lots of simple tasks well to solving more complex—but not more interesting—problems. Sometimes I think that work, programming, and life works out that way.

  1. Don’t get too excited. I was always underpaid in those roles. At the time, I liked what I was doing, and lacked the confidence and the vision to take the risks necessary to switch companies in pursuit of a higher salary. ↩︎