"If you’ve interviewed for programmer jobs a few times you will probably recognize some of these patterns. If you are just beginning your career as a programmer learn these patterns to prepare yourself."
Guy Steele's keynote at the 1998 ACM OOPSLA conference on "Growing a Language" (mostly about JAVA) discusses the importance of and issues associated with designing a programming language that can be grown by its users.