I left, and in my next job I tested the waters a little to see if they'd value such contributions. They did, and so I happily continue to make them. Had they not, I would have stopped quickly and moved on to another job. As an engineer, my job is to solve problems that need to be solved. I could be like everyone else and just go along with it (not solve them and maintain the status quo), but that's not why I became an engineer.
More than once, not only did he ask for the money before the date, as upon being denied, he went around in coffeeshops and bars defaming them, telling people they'd stolen from him, etc.
If even individuals can be this inconsistent, we shouldn't be surprised that companies - composed of multiple private interests, as many as their employees and board members - exhibit similar behaviors.
Code bases, get full of half-arsed framekworks and automation tools that nominally solve all your problems, but don't, either because they address the wrong issue, or because bugs prevent them from doing even the nominal job. Yet these half-working things can become the required internal standard that teams have to adopt against their wishes. They will not be forgiving when the maintainers start ignoring bug reports.
Now this is fundamentally a management failure: pushing a solution without knowing its limits or counting the cost of backing it up and compensating the maintainers. But as engineers we tend to be complicit, because when we make a new shiny thing, we also want to push it and don't want to tell mangement that it will really cost three times more than they were hoping.
You take the initiative and develop a new feature, automate a task, increase productivity, optimise costs, or increase revenue. You would like to reap the benfits (promition, bonus) but not increase your workload or take the blame for bugs that are unavoidable in the new tech.
1. Automate tasks and keep it to yourself or your immediate team and hopefully work less.
2. Talk to your boss before you reveal your solution, such that he will 'discover' it and let it be his idea. Depending on your idea, this might be hard.
Any other ideas?
It works like this according to my experience: You see a problem before it really does financial harm to the company. You start developing a solution. You expect to get rewarded with prices, raises, titles and public encouragement, because you solved the problem before anybody even saw it.
But instead this will happen: The employees who run into the problem first and therefore would be the one who suffer from it, find that your solution may be an answer. But instead of making it work they find ways to complain about it publicly. Since management hasn't yet realized that there is a problem, they just hear that you are not doing your job and put pressure on you to fix all the bugs, because of your bugs nobody else can work, so it seems.
This is not stupid by the other people or by accident. The moment they have found a way to complain about you it doesn't matter anymore if the task will be successful or not, since a failure wouldn't be blamed on them anymore as well. Everybody knows that the bugs are your fault, right?
In this regard open source seems less harmful to me. In open source at least there is no boss who can push you to solve the bugs, or fire you if you don't.