🗒️ Software Engineering 101: Separation of Concerns

This concept describes that every "thing" that you can use to organize your software (module, function, class, service) should only be responsible for one aspect of the overall picture.

Put simply: If two things are different, they should be in different places.

This sounds simple enough, but in practice it's often tempting to just quickly add a small functionality where it doesn't belong - because it's way faster.

Not separating concerns is a form of technical debt (more on that in a future post), but in short it makes the software harder to understand, and challenging to change in the future. The quick time save in the beginning might become something you'll have to pay off over and over again.

Tagging this thread about Separation of Concerns with #SoftwareEngineering101 so that people can find it later.

Sorry for the spam on public!