Organizing code is a core skill for software developers and as with all skills the most effective way to improve is to reflect on your previous choices and the fallout from them. There are a wide array of different strategies for organizing code and learning to recognize both the useful and the dangerous ones is very important.

https://medium.com/@msandin/strategies-for-organizing-code-2c9d690b6f33#.3fcr619nk