Code testability is an essential component of good design.
Code that is simple to test is essentially more maintainable and thus better designed than code that is difficult to test.
A combination of high-level systems thinking and low-level component knowledge is a must.
Best practises in modern software design revolve around creating modular components that can be called and deployed as needed. By doing so, we create software that is reusable, extensible, and simple to test. However, before we can create these components, we must consider what functionality users will require from the software you are developing. This is where proper planning comes into play.