Separation of Concerns

This is a core design concept that is usually helpful in simplifying solutions.

I mainly talk about separation of concerns in the context of software development but the same concept can be applied in many domains such as a well written legal contract.

It turns out that code becomes much easier to write, understand and make reliable if you separate out the concerns so that solutions to different problems are not tangled together.

Why is that?

Quite a few reasons.

  • It’s like a messy workshop - it becomes much harder to find code which impedes our efficiency as a team.

  • Messy code is much more likely to have errors and problems which are harder to identify.