If you want to design software then you should know about design patterns