β€’ 177 words

In system theory there is the the principle of suboptimization, which states that Optimizing each subsystem independently will not in general lead to a system optimum, or more strongly, improvement of a particular subsystem may actually worsen the overall system..

In software development a certain way to divide labor in an organization leads to a similar problem. When there are specialists for cross-cutting concerns (sometimes also known as quality attributes), which have no end-to-end responsibilities for a particular product, yet a mandate to coerce those who do, to work on their particular topic, it can bring a whole project down. The reason is that the folks who have both the skills and interest to steer a system end-to-end, will become trapped in a permanent defensive position, dragged down by endless bikeshedding over details of varying significance. And over time it is nearly certain that they will run out of fucks to give. When that point is reached their choice is to either resignate or leave. Software producing organizations ought to be aware of that.