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.
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?
Before open sourcing, I have that anxiety that people will look at my shitty code and judge.
Nobody really looks at the code in reality. People just come, write some terribly written bug report, and then they write "+1" in github issues.
That's what is pushing me away from releasing code to the public. It's really crushing to my self worth as a developer to feel good about a project only to be told how awful it is and how it's broken by design.
People, however, do like the one-note replies. "Why isn't this in Rust instead." "Why isn't the license GPL instead of MIT" (or vice versa). "The name is immature." "Will this be on Mac OS X too? Why not?"
I can tell myself it doesn't matter I can tell myself that they don't know the details or the trade offs that were made, but regardless it still takes the steam out of my willingness to work on it.
- I am not my work.
- All software sucks. Some suck less than others.
- I have simultaneously been catastrophically wrong and full of confidence in the past. Be open minded to the possibility there's a very different way to do things that will make you a better professional. Be similarly open to the possibility the other guy is full of shit.
- Developing a thick skin will make your life (in general) easier. It's better to do it in a short, intense period of time than prolonging the pain over decades of your life.
Seriously though, well put! Thanks for the reminder.
Most projects' development processes are under-documented, even healthy projects and those run by people not looking to get out. This may be the case with yours.
Have you written up a short description of your practices and the things that a maintenance takeover would entail?
Small world.
Imagine looking at your personal inbox giving you the same feeling of dread as you'd expect looking at your work inbox after being off for a few weeks..
I'm currently trying to offload one project because it's getting too much, and just finding a new maintainer who knows C and Python to a decent standard has turned out difficult. None of the regular project users have stepped up. Shrugs