Daniel Lyons' Notes

Delegated Complexity

I’m starting to realize that a lot of developer frustration is rooted in the fallacy that some technology will make something simpler. It won’t. It doesn’t. That complexity still exists. The only difference is now something else is handling it. The complexity isn’t eliminated. The complexity is delegated.

The word for this is abstraction.

Abstractions don’t eliminate complexities. They don’t even reduce complexities. In fact, they actually increase complexities.

But they also delegate complexities. And if the delegate handles the complexity satisfactorily then that results in a reduction of complexities (that you need to be concerned about).

The problem with delegation is it’s only nice if the delegate satisfactorily handles the task. But if it doesn’t then now you have to handle the task and you have to handle the added complexity of delegation.

Delegated Complexity
Interactive graph