Design Patterns: Elements of Reusable Object-Oriented Software – I had to read and study this for a class, and then we played Design Pattern Poker, where we “played” the design patterns we had in order to solve a problem.
Seemed like nonsense at first, but then I read the book. And saw solutions that I’d been applying – and solutions that I should have applied, but didn’t.
It’s nice to solve problems from scratch and feel that sense of “aha”, but the Patterns give us a shared language to talk solutions – that CompSci students should know. Also, it’s all very well solving a contrived university assignment, but in the real world – problems are bigger, and have more dependencies. The more we expose ourselves to lessons learned in real life, as opposed to the ivory tower, the better. We don’t always get that insight from professors, unfortunately.
After a chat with someone today about design, and realizing how much I’d learned from this – I’m officially adding it to my “books I’m glad I read before I interviewed @ Google” list.