Developers worry about stagnation, probably just as people do in any other industry, I expect. However, we seem to solve this problem in a different way.
Leaving
We tend to “solve” the stagnation problem by up and leaving a company. If we feel the work is no longer interesting, we get up and leave. If we have hit the “Senior” developer level, we leave soon after. This is not just a problem with personal growth, but perhaps also that our industry does not have a great career path defined. You go up from Junior, to Mid-level, to Senior, and then you are kind of stuck. You have a choice of changing the work you do, to become an Architect or a Manager, or you change the company you work for.
Value
We leave when we feel that we are not being valued, either by the work we are getting, or the salary we are being paid. Yet we treat both of these scenarios as “stagnation”. We feel that we are not growing in this role any more, so we change.
Loss of control in the work is very demoralizing. If you are used to being able to make decisions and forge your own way, but then are shuffled around and now are stuck in a “yes sir” position, you are not going to be happy. Likewise, overwork is also very demoralizing. This is not just the heroic fire drills to save production, but also just being handed more responsibilities without being handed a larger paycheck.
Practice
As developers, and consuming humans in general, we like have the new stuff. We do not want to be stuck working on old products or with old tools. We want the new fancy shiny things. Developers will leave if they feel like they are not able to play with those shiny things enough. Sometimes just side projects are enough to play with. But sometimes the technology excites us enough that we want to build entire systems with it.
Just reading about the new stuff is not enough. That is exciting, but that is not enough. Having a theoretical knowledge of the new thing is not sufficient. We want to get our feet wet. Just like any other profession, we need practice as well as knowledge to be efficient. If you can watch the Pluralsight videos to your heart’s content, but cannot play with the technologies, you still won’t be very effective. Experience plays a huge roll.
Downside
The downside to our traditional solution to this is that we do not stay at one company for very long. Really just as soon as you start to understand the company and the system, you leave for something else. You never really feel the repurcussions of your past decisions. You never have to live with your decisions for long. This may be very appealing to younger generations, but it is very detrimental overall.
Companies spend a lot of resources into training developers, both implicitly and explicitly. And yet when that investment begins to show signs of paying off, it is cut out from underneath them. That is not useful for the company. While it might be an expedient way to gain something personally, I think that the price it comes with is too high. Trading off the long-term for the short-term may not be useful in this case.