A big part of teaching myself how to program is to try and learn how to prevent common problems. After my first real project i ran into a lot of problems that was due to my limited knowledge that ended up making it very difficult to extend the app. This got so bad that i basically gave up trying to extend it and had to leave it in a state that i wasn’t totally happy with, luckily its not a commercial app. This is exactly the sort of problem that design patterns attempt to prevent. Years of experience have already discovered issue and came up with one or more approaches to fix them. At the moment i feel comfortable with my own code but recently since starting to work with other products I’ve realised that knowing the coding language is only a very small part of working as a team. In fact its often better to know the design patterns and what they attempt to resolve than it is to know all the ins and outs of the language or framework. As part of my learning process I’m going to start this blog series that will walk through different design patterns. A quote that comes to mind here goes something like “The path to mastery is through teaching others”
The idea that every object should have a single responsibility and that responsibility should be entirely encapsulated the class.