Before Java, before Objective C, before Scrum, before Python, before web 2.0, before #noestimates, before Agile, there was darkness and there was confusion. And then, there was Smalltalk, and the world was bathed in its beautiful light, fleetingly.
A Brief History
My very first full-time position was as a technical support engineer for California-based software house called Software Products International, or SPI. We had our own 4GL environment, complete with a bespoke language and our own dialect of SQL. Ah, the good old days of no standards..
Some years later, the head of SPI created a new company, Enfin Corporation (meaning, “at last” in French, kind of) and Enfin created its own development language called Enfintalk. This was around 1990 and in 1992 I flew to San Diego to join his team. In the early 90s, object-orientation was the new thing. Business problems were getting deeper and trickier, and developers required new tools with which to model the real world and solves these new issues. Several fledgling programming languages were vying for developers’ attention and money, and it soon became apparent that the Smalltalk language developed by Xerox PARC was a natural fit. Smalltalk did OO perfectly and purely.
Enfintalk was a strange bastardisation of real Smalltalk and didn’t really actually look like Smalltalk. So, we rewrote it. Enfin Smalltalk was born. We competed against the likes of VisualWorks, Smalltalk V, IBM VisualAge Smalltalk and a host of others (imagine if today there was five or six different flavours of Java all from different companies, each requiring their own runtime environment).
A Love Affair
I’d grown up with BASIC, 4GLs, SQL, DOS, CP/M and all those great things and to then be subjected to the strange world of OO and Smalltalk was a headf*ck to say the least. But one sunny afternoon (actually, every afternoon in San Diego is sunny) the penny dropped. In the space of about 30 seconds I just got it. I got OO. I got Smalltalk. I got self. (In Java, it’s called this.)
From there onwards, my career for the next 10 years was centred on Smalltalk. I was doing Smalltalk consulting for large corporations; I was running training classes in Smalltalk and OO analysis and design; I was writing technical articles and even took on the task of writing documentation for every class in the Enfin Smalltalk system. I’m not ashamed to admit that I was in love with Smalltalk. Everything else was inferior.
And then Java happened.
Duke Nuked ‘Em
Yes, Java happened. “Write once, run anywhere,” they said. “Applets are the way to go,” they bleated. In the blink of an eye, Smalltalk’s dominance in the OO arena rapidly dwindled. Java ran faster (Smalltalk’s development image model was a memory hog) and appealed to more people due to it’s not-entirely-pure-OO way of handling primitives and coming from the then amazing Sun Microsystems (their hardware was pretty awesome). Smalltalk got pushed out. Smalltalk vendors either disappeared or were bought (Enfin got bought by Easel Corporation which then renamed it to ObjectStudio and subsequently got bought by VMark Corporation who then sold ObjectStudio to Cincom). Smalltalkers, including myself, migrated to Java because, after all, that’s where the money was. Smalltalk all but disappeared. RIP Smalltalk.
Or so it seemed.
detect: reject: collect: inject:
Smalltalk is powerful. Smalltalk embodies OO almost perfectly. A vibrant community of Smalltalkers continued to develop it and make it lighter and meaner and more suitable for today’s web-driven world. Today, it’s still there, working for companies that require that extra level of real-world modelling that Java and many other languages can’t do (well, not without numerous third party libraries and extensions). Squeak Smalltalk is a super popular and OpenSource implementation. There’s Pharo, too, which runs on multiple platforms and has many clients doing amazing things with it. ObjectStudio is still being sold, as is VisualWorks. There’s still life in the old dog. And let’s not forget that languages such as Java, Objective-C and Scala all doff their caps towards Smalltalk.
Why have I rambled on about all of this? Well, I ditched programming two years ago in order to become a full-time Scrum Master. Until now, I haven’t missed launching an IDE, or compiling code, or designing a framework. But something inside me is tugging away at the coder that I buried. And as a Scrum Master, I preach to developers about improvement, and about learning new things so I think it’s about time I practiced what I preached.
I’m waking up the Smalltalker inside of me, and I’m re-learning Smalltalk and I’m excited as the day I finally got self!