Going through Pharo By Example, and especially the similar book "Dynamic Web Development with Seaside"[0] (a smalltalk web framework), really helped me to understand many concepts in OOP. Seaside is worth checking out simply for how differently it does things (the author describes it as a "heterodox" framework). As others have said, once you experience the joy of the flow of programming in Smalltalk with a great environment, it's difficult to not miss it when using other languages.
Edit: Actually, I guess some of the things done in Seaside are now more common, such as building up a webapp from reusable components that have code and some local state coupled with a view.
[0] http://book.seaside.st/book
Edit: Actually, I guess some of the things done in Seaside are now more common, such as building up a webapp from reusable components that have code and some local state coupled with a view.