Speaking of politics, this is as good a time as any to drag that much-maligned word out for a closer look. Many engineers like to think of politics as something other people engage in. “I’m just advocating the best course for the project, but she’s raising objections for political reasons.” I believe this distaste for politics (or for what is imagined to be politics) is especially strong in engineers because engineers are bought into the idea that some solutions are objectively superior to others. Thus, when someone acts in a way that seems motivated by outside considerations—say, the maintenance of his own position of influence, the lessening of someone else’s influence, outright horse-trading, or avoiding hurting someone’s feelings—other participants in the project may get annoyed. Of course, this rarely prevents them from behaving in the same way when their own vital interests are at stake.
If you consider “politics” a dirty word, and hope to keep your project free of it, give up right now. Politics are inevitable whenever people have to cooperatively manage a shared resource. It is absolutely rational that one of the considerations going into each person’s decision-making process is the question of how a given action might affect his own future influence in the project. After all, if you trust your own judgement and skills, as most programmers do, then the potential loss of future influence has to be considered a technical result, in a sense. Similar reasoning applies to other behaviors that might seem, on their face, like “pure” politics. In fact, there is no such thing as pure politics: it is precisely because actions have multiple real-world consequences that people become politically conscious in the first place. Politics is, in the end, simply an acknowledgment that all consequences of decisions must be taken into account. If a particular decision leads to a result that most participants find technically satisfying, but involves a change in power relationships that leaves key people feeling isolated, the latter is just as important a result as the former. To ignore it would not be high-minded, but shortsighted.
— Karl Fogel, Producing Open Source Software
In my opinion it is rather simple: it is good when you give people more and/or new opportunities, it is bad when you take away opportunities. More generally, it is good when you add, it is bad when you subtract.
This is why I don’t like the idea most people have that it is necessary to demolish what exists before building new things or improving. It doesn’t seem like a good idea to make some civilization collapse, walk through thousand years of dark ages to finally emerge with a renaissance.
In the IT business we see this sort of things every day, not only with the usual “lets throw this old software away and rewrite it from scratch” but also with the more annoying “users are stupid so we must enforce our vision on them”. About politics we see the “progressives” who mechanically despise anything that comes from “tradition” and dream of a “brave new world” they could build by re-educating ignorant bigots.
The common mistake is to think that while you are demolishing something you are “adding” opportunities. You are not. You are instead hoping one day in the future there will be more opportunities. But meanwhile you are taking away.