“When the team is not familiar with a design pattern, and the timeline of the project is limited, it will not be the best choice to lose the time over introducing a difficult design pattern”.
The above statement by a peer caught my attention. When doing the initial design of a system, design patterns do not help. When starting the design of a system instead of focusing on design patterns, our primary concern and focus should be to implement the business logic and operations correctly. Once that is done, the emphasis should be on the architecture. Design patterns are not helpful during the initial stage as they can limit your ideas of what your code can do. Design patterns can act as a great tool for refactoring. Programmers who have experience and completely understand what a design pattern can do will be able to implement it with ease to achieve fast solutions for refactoring complex projects. A programmer with experience with design patterns can easily comprehend looking at the code structure to why it was organized in a way. A programmer who does not have experience with the design patterns might end up using an unsuitable one causing disaster for the project. Hence, using them at the beginning of a project is not sensible. Once you have got a detailed architecture/structure, only then you would be able to find a suitable pattern. Just for the sake of using a pattern often ends in projects that cannot be maintained (Jones, 2016).
“Software design patterns are tools, not goals. Use them as such, and only when you actually need them, not before (Jones, 2016).”
Jones, M. (2016) Software Design Patterns are not goals, they are tools. Available at: https://www.exceptionnotfound.net/software-design-patterns-are-not-goals-they-are-tools/ (Accessed: 18 September 2017)