If you want to design software then you should study design patterns.