This is much better advice than the whole article.
The article seems to be conveying vaguely that developers want advancement, interesting problems, etc. The problem with this phrasing is that it makes a manager think about placation strategies.
The root cause of the above is just poor tasking. If a senior developer says things need attention and keeps getting ignored, then how senior is the developer, really?
The advancement, engagement, product ownership, etc. all grow from a culture where strategic technical priorities aren't ultimately valued.
This looks like boredom or angst about "career progression" but you don't solve the problem by adding whiz-bang tech (gratuitous ML) or meaningless job titles.
The people with any standards at all only stay ~2 years or less at a place like this.
I meant that as part of professional development, technical leaders should have increasing say over the tasking of themselves and the team they're helping lead. There's lots of room to innovate and experiment on exactly how that works.
I'm thinking on the level of:
- If we haven't deprecated these old machines in 18 months, we're wasting piles of money
- This legacy code is too complex, but it will take some time to remove, so we need to start now
- Given the revenue numbers and the amount of maintenance effort we put into it, this part of the system and these features need to be removed. Let's split off a scrum of three for about a month to do it.
Another nice upside of this approach is it helps re-enforce a culture of doing the right thing because we ship and don't just write code.
You have to know your people, and give them support that motivates them. But that takes (gasp!) good managers.
My gut is that it goes the other way around. People who desire to work on the Big Cool Sexy New are often less motivated by peers, and more by personal drive, as by definition most of their peers won't know what the hell BCSN even is. Unless the person in question is working in a 100% BCSN shop, in which case there's likely to be fewer maintenance tasks in the first place as the codebase will be fresher.
For some developers (including me), working on projects with significant business value is the definition of glamorous. Since there's significant business value, then you should be rewarding people for delivering that value (with bonuses and raises).
If the task does not have significant business value, it's probably not actually important. A lot of maintenance tasks actually fall in this bucket.
I want to work on what's most important for the business and our users. Having engineers pick whatever they find fun to work on sounds broken, but I'm also interested in if and how that can be made to work.
Companies tend to try everything except the obvious: more money.
It might not work for everyone or every team, but it sometimes works for me.
Also I find it better to deploy juniors to glamorous tasks wherever possible. They benefit from the glamour to become self sufficient non-juniors.
If a developer comes to me with a new idea, and it sounds viable, then I give them a bonus based on how well it executes. Everyone is incentivised and motivated to come up with new exciting projects.
Smart developers want to create, so set them free! Autonomy, mastery, purpose = productive and happy