clarry: The flipside is companies, micromanagers and pointy haired bosses not allowing developers to take ownership. They just want you to crank out feature after another, and can we do it ASAP please? When you say you want to go back and revisit parts of the architecture that don't hold up well and are a real burden to maintain, when you want to add automated testing, when you want to see if a part of the program could be reimplemented with much better performance, when you want to modernize and document the workflow and make things easier to build, test and deploy, when you want to think about how to make the new feature a little more generic and future-proof instead of just a quick hack that barely achieves what's being asked for.. nope nope nope we don't want that, we're not paying you to do that.
I see a lot of developers who are burned out / pissed off / jaded with everything by their 40s because honestly there's a ton of shit to put up with. The lucky ones might land a job where they get to do things their way, others hop jobs because they might have resigned to the fact that money is the only thing they get out of it.
There will always be tensions with management and there are a lot of bad bosses.
A couple of things:
- If you want to get anywhere with your career, you got to learn A LOT of stuff on your own time (which in my experience at least half of devs don't do) otherwise opportunities will be a lot slower to materialise because you won't be skilled enough to meet them. Open-source projects are great for that (it helps the world and gives you practice AND credibility). In an ideal world, you'd do a 30 hours week and you'd take an extra 10+ to learn, but the reality is that you got to work 40 and still take an extra 10+ to learn. This is why I'm not ashamed to ask for a very nice salary.
- Using the leverage you got from what you know, if your current job is a dead end, you just move on as long as it takes for your job not to be a dead end. Bad managers don't deserve a quality workforce. As simple as that. If you find yourself working 50+ hours without learning anything worthwhile, leave (to emphasise my point here, if the 50+ hours is you working 40 hours, and spending an extra 10+ to learn about some great technology your employer wants to use, that's fine, that's learning time, you're getting leverage in your career in exchange for your extra time). Not only you're getting burned out, but you're not gaining any leverage to work elsewhere.
- There will always be tension with management regarding quality and many managers are allergic to the word refactoring so don't use it. Just silently slip in some refactoring in everything you do (say, a +25% refactoring debt) and make that the norm that doesn't need to be adverstised loudly. If they micro-manage you to the point where you have to justify every line of code you change, look elsewhere.