@thomasfuchs The strategy of breaking complex problems into small pieces that can be solved falls apart if you cannot acknowledge an unsolvable problem/contradiction. In that situation, the tendency is to abstract away the contradiction.
In a liberal society, many conflicting views can be (and should be tolerated). The one view that cannot be tolerated is intolerance. This is a contradiction.
Your software engineer, instead of acknowledging the contradiction, has chosen to abstract it away.