As we go through time, learning and growing our software craft, there are often pieces that catch and become indelibly marked in our minds as pivotal. I hesitate to use the word "game-changer", but the effect is the same - after reading it, you are forever altered in your way of thinking.
I'd love to share a couple of mine that I've encountered, and reference and re-reference to friends and colleagues frequently. These are blog posts that I hope never see removed from the Internet:
I caught this when it was more-or-less originally published, and it sparked my love of programming in a way that was literate. Putting focus on understanding how to write code in a way that made sense to humans, but could also be parsed my machines, was the jump I needed to realize I could do this as a lifetime pursuit.
I played around with looking at other ways of writing code outside of OOP (Scala, Lisps, Haskell), but it never really clicked until seeing it presented as Steve presents it here. Obviously it demonizes OOP a little bit, but in the effort to show that there's a better way that exists.
Apparently I understand things better when you give me examples in terms of 'verbs' and 'nouns'. :)
Daniel's vim tutorial helped me to finally get out of a spiral of "try to learn vim, put it down, come back in x months, repeat". Once I had the understanding of the commands I entered into the editor were speaking a language that was actively interpreted by vim, it made my familiarity with the editor skyrocket, and made me feel much more comfortable in vim as well.
Even though I no longer use vim directly (I keep my vim config up to date at times, but I've moved to Emacs with the evil package), I'll always send someone learning vim to this page, to help enlighten them.
I've had tons of times where I've used one of these terms, and have been met with a look like this:
I then promptly send them to this post, laughs are had, and all is made clear. I'm sure I'll use "Yoda conditions", "Pokemon Exception Handling", and "Smurf naming" for the forseeable future. :)
Daniel's introductory book on Clojure bridged a lot of gaps for me when trying to learn the language. The humor reminded me a lot of _why's Poignant Guide, and put the 'fun' in thinking 'functionally'.
Please share some of your blog posts or vignettes that have changed your way of thinking around programming! Looking forward to adding more to my list. :D