...  You can’t accumulate all that knowledge just by writing some code every day. Read books, discuss them with others, read other people’s code, experiment, draw on a whiteboard, or take a walk and just think.

http://verraes.net/2014/10/software-design-is-just-theory/