This is an interesting keynote presentation by Robert Martin delivered during RailsConf 2009. According to Robert Martin, Smalltalk was the most superior language of its time and even with such unique features and even being the epicenter for introducing Pattern based development, Test Driven approach and various OO principles we are following, Smalltalk was never successful with mainstream developers and eventually extinct with the popularity of JAVA in early mid 1990s. He believes that failure of Smalltalk users to ignore problems commonly faced by enterprises and attitude of Smalltalk users in being more superior than other platform developers were one of the crucial reasons that killed SmallTalk. He further expressed during the keynote that if Ruby and Rails community fail and/or ignore problems faced by enterprises then, there is a chance what happened to Smalltalk could also happen to Ruby.
I think the video is a must watch if you a Ruby developer and/or want to jump to Ruby/Rails band wagon. There’s no doubt that Rails is one of the leading web frameworks that have embed the concept of test driven development at its core and Ruby developers have always been in the fore front adopting agile development strategies. But whenever I read some blog posts/articles and writings by Ruby enthusiasts and developers, I feel some kind of rebel and attitude of superiority in their expression which is somewhat same as mentioned in the keynote. Ironically, most of the Ruby syntax is also inspired from Smalltlk with small blend of C; that’s why Ruby is also called reincarnation of Smalltalk but lets hope Ruby won’t be next Smalltalk and as Microsoft new initiative Make Web Not War.
I have found relatively old article about the design principle of design patterns dating around June 6, 2005. Though, the article is a bit old dated ( about 2.5 years), after reading it I have definitely learn something new and refreshing about design patterns and especially about the power and flexibility that can be gained from the use of interface.
After reading it, I was able to summarize following points that seem quite interesting and important to me:
Program to an interface, not an implementation.
Integration between current refactoring tools and XP.
Composition over inheritance for low coupling and design flexibility in the sense that sub-class always have to make assumptions about the context of the method it overrides (my favorite).
Something can be public but that does not mean you have published it. Quote from Martin Fowler, but I’m still a bit confused about it and still researching. I have even posted a question in the stackoverflow but have been unable to get any response clarifying my confusion.
Smaller objects configuring the container and customizing the behavior of the container.
Consistency in API design (for example: using depravation support in JAVA, .NET). Seems easy but really hard to achieve especially for beginners like me
According to the author, this is a collection of cheat sheets and reference guides links related to various tech components and languages from VIM to CSS to Javascript to LINQ to Design Patterns especially dedicated to .NET and ALT.NET developers. But really these links could prove to be handy to all developers and IT professionals. Here is the link.
One can download really cool programming foundation bool from codebetter.com. Moreover the book is free and it is worth to read for all developers of my level i.e. college students or enthusiast learner. The link is here. Happy programming and reading