Even though I have some Assembly language under my belt and have worked with, what I like to see as, wide variety of programming languges, I am still from the spoiled generation that learnt object-oriented programming before calculus and got on Java bandwagon early on.

I was fortunate to have had privilege to work with a wonderful group of programmers. In my earlier days, one of them was kind enough to spend some time (and I imagine patience) to argue with me that Java is not panacea and \'"hard facts" that "best-practice" literature tries to feed us is just one side of the truth. An often-used example was dynamic vs static and strict vs lose typing. Lisp would come up in the discussions habitually.

Lisp is one of those languages that may be regarded as a dinosaur one but people with more insight know it is too important to simply disregard or ignore.

There is a wonderful review of Common Lisp by Peter Seibel, given at Google, that gives some insight in Lisp, but more importantly - in software architecture generally and how patterns in different programming languages relate.

I think it is a great video. Highly recommended.