Martin's arguments (summarized well by beilabs and stcredzero) are interesting and represent various real problems. But none are what killed Smalltalk.
As always, everything points to money...
1 - Smalltalk tech was owned by a small clutch of companies. All had revenue driven by developer licensing. None were able take seriously the thought of radical change to their revenue model.
2 - Lack of licensing costs for Javascript enabled it to be dropped into Netscape with Microsoft following suit. Lack of licensing costs for Java enabled Sun to give it away during a time when revenue for other Sun products was able to fuel the Java giveaway.
3 - Corporate decision makers took a wait and see approach to further engagement with traditional internal IT investment starting around 1996. This was mainly fueled by drive from within these companies to start focusing on internet strategy. Up to this point, most IT organizations were internal focused.
4 - All the major IT companies wanted to try their hand at capturing the internet technology stack.
It took about a year, maybe less, to kill Smalltalk's momentum. In my retrospective opinion, the only thing that would have saved Smalltalk is for the investors at any one of the major Smalltalk vendors to make a radical shift in their business model and give away the core technology and runtime. This would have enabled Smalltalk to be dropped into a browser instead of Javacsript and enabled Smalltalk to make meaningful progress as an "open" language. Even if this happened, IT companies would have attempted to co-opt this new free-er Smalltalk in much the same way they did with Java and Javascript.
He basically warns for the ruby community to become too arrogant about their technology and tools and stop following all the good practices of software engineering (especially unit testing), because they "don't need them".
It's actually a really inspiring video, I watched it twice so far : )
Described C++ as a mans language (need balls to code in it and make it work)
Describes Java as an estrogen type language
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!
My thoughts - Great presentation style, he's quite funny. Very inspirational lecturer for developers confirming that TDD/BDD are the ways forward for software engineering.
I've been working in Smalltalk since 1998. The most important points:
- Companies developing in Smalltalk were screwed up at the time
- There was an arrogance to the Smalltalk community
- TDD never really became a part of Smalltalks culture
I just got a vendor to pay attention to an (admittedly subtle) bug in GUI event processing that's been around for 12 years, causing mysterious unhanded exceptions at every company I've worked with since 2003. Their theory before this: delusional customers.
Heed this man's advice.
Your developer culture is more important than your technology! A good culture will help maintain good companies and good public relations.
Smalltalk is not dead, just hiding in niches. I plan on starting new projects soon.
Thanks! I'm really intrigued with Smalltalk by way of Squeak (I've been working through Squeak by Example). I wasn't sure where I should be looking regarding web development. Thanks for your sharing!
Just try, it's equally inspiring & entertaining pro-TDD anti-ego talk, with some interesting points to history and people behind the scenes (Ward Cunningham!)
Come on, it's easy to make a mess in any language except the straitjacket ones nobody uses. Smalltalk is not as well-integrated with Unix as other languages, and also the syntax and libraries are kind of anal, I think that's what killed it.
As always, everything points to money...
1 - Smalltalk tech was owned by a small clutch of companies. All had revenue driven by developer licensing. None were able take seriously the thought of radical change to their revenue model.
2 - Lack of licensing costs for Javascript enabled it to be dropped into Netscape with Microsoft following suit. Lack of licensing costs for Java enabled Sun to give it away during a time when revenue for other Sun products was able to fuel the Java giveaway.
3 - Corporate decision makers took a wait and see approach to further engagement with traditional internal IT investment starting around 1996. This was mainly fueled by drive from within these companies to start focusing on internet strategy. Up to this point, most IT organizations were internal focused.
4 - All the major IT companies wanted to try their hand at capturing the internet technology stack.
It took about a year, maybe less, to kill Smalltalk's momentum. In my retrospective opinion, the only thing that would have saved Smalltalk is for the investors at any one of the major Smalltalk vendors to make a radical shift in their business model and give away the core technology and runtime. This would have enabled Smalltalk to be dropped into a browser instead of Javacsript and enabled Smalltalk to make meaningful progress as an "open" language. Even if this happened, IT companies would have attempted to co-opt this new free-er Smalltalk in much the same way they did with Java and Javascript.