Object-Oriented Programming, Woodworking and A Broad View

I came across an interesting quote from 2004 by Rob Pike about object-oriented programming.

The promoters of object-oriented design sometimes sound like master woodworkers waiting for the beauty of the physical block of wood to reveal itself before they begin to work. “Oh, look; if I turn the wood this way, the grain flows along the angle of the seat at just the right angle, see?” Great, nice chair. But will you notice the grain when you’re sitting on it? And what about next time? Sometimes the thing that needs to be made is not hiding in any block of wood.

The quote is about OOP, but with functional programming’s rise to mainstream prominence I see a lot of the same focus on the beauty of the tool itself. Immutability and modeling side effects in a type system and recursion and all the other pieces of functional programming are fascinating, but sometimes I worry that people will replace OOP with functional programming only to find that their code is still confusing.

In another part of this same interview he mentions his involvement in a research project for a language designed for distributed computing. A few years later he would go on to invent Golang, which is definitely not object-oriented.

Regardless of what I think, though, OO design is the way people are taught to think about computing these days. I guess that’s OK - the work does seem to get done, after all - but I wish the view was a little broader.

Try to keep a broad view.