@hadleywickham my first ever software design (pre OO) was an absolute spaghetti mess. I went to the IEE library and pulled out books by Coad Yourden - learnt about structured design - coupling and cohesion. Rewrote the app (in C at the time) - far cleaner, modularised with interfaces. Yourden's writing actually resonated with me because I had experienced the the poor way of tackling the problem. It took that experience to really understand why coupling and cohesion were so important.