Overview of this presentation
Smalltalk & Ruby are deeply interrelated.
Much of the same syntax between the two languages
From 1970s Smalltalk was the language to watch
Smalltalk epitomized Object Orientated Design
Described C++ as a mans language (need balls to code in it and make it work)
Describes Java as an estrogen type language (presuming he means only women code in it?)
Smalltalk had a productivity benefit of a factor of 5. Compared to a C application.
Refactoring in Smalltalk was a breeze
What killed Smalltalk? ( umm, at this stage I have no idea, he jumps to a new topic)
Definition of clean code - "when you look at a routine and its pretty much what you expected"
Best metric for clean code is 0 WTFs per minute
What killed Smalltalk is that it was just too easy to make a mess (Finally, 20 mins in!) Quote from Ward Cunningham
So easy to make an indirect and impenetrable system over time
Companies developing in Smalltalk were screwed up at the time
You can make a mess in Ruby, simple, elegant, wonderful language; still easy to make a mess
Projects in Ruby start well, but the framework is often violated over time; making a mess...
Boyscout rule, leave the campground cleaner than when you entered it. (Actual quote - leave life better than you found it) - apply this to your source code. Would make code get better and better as time goes by. Most of the time, cleaning code is hard!
Quote of the presentation - "If you touch it, you will break it. If you break it, it becomes yours. The best policy is to walk away, run. the messes are hard to clean"
Test Driven Development is the solution
Rails and Ruby is great for Test Driven Development.
Other languages have TDD, was born in Smalltalk.
Talks about TDD methods; If you follow TDD, regularly write and run tests, then there is no fear to change code.
Nothing makes a system more maintainable than a suite of tests
He loves Rspec and Cucumber (Behaviour Driven Development BDD)
TDD never really became a part of Smalltalks culture but is integral to the Ruby community
TDD will keep your code clean
There was an arrogance to the Smalltalk community ( I sometimes can see this in the Ruby community )
Our tools are so good, our language is so good we don't need to follow the rules. Smalltalk people didn't want to do regular programming (Enterprise Applications, etc)
Your language may be powerful, but you must be careful with it. just because we can do a thing, it does not necessarily mean we must do that thing (Star Trek quote) Us vs them feeling in the Smalltalk community.
Ruby community is not going to go down this path because:
Discipline - TDD makes you feel good inside
Professionalism - did the doctor wash their hands, did you write your tests?
Acceptance - we need to solve the dirty problems ( Need to adapt to the enterprises needs - do not solve only the problems you like.)
We have a great tool in Ruby, we can kill it, let's not do that!
Great presentation style, he's quite funny. Very inspirational lecturer for developers confirming that TDD/BDD are the ways forward for software engineering.
About the presenter
Robert C. Martin has been a software professional since 1970. In the last 35 years, he has worked in various capacities on literally hundreds of software projects. He has authored "landmark" books on Agile Programming, Extreme Programming, UML, Object-Oriented Programming, and C++ Programming. He has published dozens of articles in various trade journals. Today, He is one of the software industry's leading authorities on Agile software development and is a regular speaker at international conferences and trade shows. He is a former editor of the C++ Report and currently writes a monthly Craftsman column for Software Development magazine.