We all know it's best practice to separate our code into individual components, each dedicated to a single task. This sounds simple enough, but rarely do we get it right the first time. Or even the fourth time. I find that within my projects, it can take me several attempts