I just returned from the Smalltalks 2018 conference in Salta, Argentina, where I gave a keynote address. It was well received, and it inspired Vance Kershner, CEO and founder of LabWare, to fully fund The James Robertson Memorial Programming Competition. I am most pleased with the outcome.
What follows is the transcript.
Thank you for that kind introduction.
It is a pleasure to be here to deliver this keynote, especially in your beautiful country. I’d like to thank Leandro Caniglia for inviting me and making this happen.
I’ve been a staunch advocate for Smalltalk over the past four years. I would like to explain why I did it, what my motivation was, what my strategy was, and what the outcome was.
But, first, let’s begin with a little bit of history…
The IT industry has held a dirty little secret for more than five decades. Since the 1960s, we wrote programs in a singularly consistent fashion using textual programming languages and text editors, and storing our source code in files and folders. These files contained long reams of code that were arduous to read.
We compiled our source code and built our application from the command line. Even with today’s modern IDEs, we are indirectly still doing this.
We tested our application and if it failed, we had to diagnose the problem, edit the code, and recompile. And if it failed again, we had to repeat. This edit-compile-test-debug cycle was time-consuming and inefficient.
Very little has changed today. Our languages are a bit fancier. Our text editors are more comprehensive. But we are still slaves to files, folders, and the command line. To borrow a phrase from Star Trek’s “The City on the Edge of Forever,” we are effectively programming “using stone knives and bearskins.”
As a result, our productivity has suffered. With the right tools, we could double our productivity. We could create software in half the time that it takes us now, on average. How much is that worth to our economy and our industry?
Ironically, this possible future has been staring us in the face for more than 40 years, but we’ve been too blind to see it.
There is a Peter Allen song that goes like this:
Don’t throw the past awayYou might need it some rainy dayDreams can come true againWhen everything old is new again
This is most applicable to Smalltalk.
It has a great historical legacy. It has been proven in the field countless times. According to Capers Jones of Namcook Analytics, the leading authority on software metrics, Smalltalk is the most productive of all the major programming languages. Only languages like MUMPS and Mathematica are more productive, but who really wants to use those languages for general programming?
Ever since a friend of mine introduced me to Smalltalk about eleven years ago, I’ve been fascinated by the language. I wondered why it wasn’t more popular. Despite all the technical material you could find on the web about Smalltalk, including some advocacy, people just weren’t paying much attention to it.
I believed it was because Smalltalk wasn’t being marketed properly. Technical conferences didn’t reach enough people. Technical articles full of code examples weren’t compelling.
Smalltalk was roundly ignored in social media. A loud voice was needed, in my opinion. And I decided to be that voice, because, frankly, nobody else was stepping up to the plate.
My strategy was to publish lots and lots of articles extolling the virtues of Smalltalk. These articles would have to be eye-catching, so I adorned them with attractive images. I made heavy use of the famous hot air balloon motif that was popularized by BYTE magazine.
When BYTE published a cover story on Smalltalk in August of 1981, Smalltalk became something of a sensation in the programming community. It was so influential that languages like Objective-C and Erlang and the Common Lisp Object System would draw their inspiration from it. Much later, Ruby and Python and Groovy and Scala and Dart and others would follow suit.
Here’s a favourite image that I’ve used frequently. It is simply breathtaking. It evokes freedom and adventure in one’s mind.
Here’s another. I have a collection of about two dozen similar images, and I’ve used them very effectively.
I hammered home the six key advantages of Smalltalk. In particular, I emphasized the power of live coding and the fact that Smalltalk is a system of live objects. The IDE organizes code as a collection of classes and methods, not long reams of code stored in text files.
Bret Victor referred to this as representing source code in a two-dimensional spatial fashion. There are no source files. Your eyes are focussed only on classes and methods. On Wednesday’s presentation, Tudor Girba showed us the next major evolution of this idea (the Glamorous Toolkit).
I showed that Smalltalk syntax was supremely simple and easy to learn using a post card that I meticulously created. Smalltalk post cards have been used in the past, but they weren’t particularly attractive.
This one has been quite a hit. It is easily the most viewed image in my collection.
I discussed live coding as the premier quality in Smalltalk programming and how it was responsible for Smalltalk’s incredible productivity.
In a 2017 paper, Capers Jones ranked programming languages according to productivity. Here were some of the numbers:
Among the least productive languages are C and Fortran and, most interestingly, JavaScript. JavaScript is currently a very hot language, but not as productive as web developers claim.
Ruby is fairly productive. So is Objective-C. But very few are as productive as Smalltalk.
It’s important to understand that the Namcook Analytics study is not saying all of these languages are productive across the board. Excel is most productive for spreadsheet applications. MUMPS is most productive for hospital and healthcare applications. But the most productive all-round language is Smalltalk.
A word about the apparent clustering in the data, for example, C++, Java, and Python all have the same number of work hours. As Capers Jones explains it, this table represents the synthesis of data sources from numerous client studies collected over the years and “normalized” to give you the clustering. The clustering is a side effect of statistical methods applied to the data.
In the 1990s, Smalltalk became the most popular OO language in the world, after C++. C++ had the lion’s share, but Smalltalk got a respectable 15 per cent, well above the rest of the field.
Here’s a page from Computerworld, November 6, 1995, showing Smalltalk and C++ duking it out.
Smalltalk was so good for business use that IBM chose Smalltalk as the centrepiece of their VisualAge enterprise initiative to replace COBOL. Obviously, IBM did not make this decision lightly.
So, how do you market Smalltalk? My strategy was simple. For years, people had written numerous technical articles, and given numerous technical talks. People had been contributing to various open source Smalltalk projects.
However, the “if you build it, they will come” philosophy wasn’t working. Appealing to people on an intellectual basis wasn’t working. Smalltalk was still being ignored. What needed to be done, I surmised, was to appeal to people on an emotional level, the way it’s done in marketing and advertising. Smalltalk needed to promote itself in the same way that Apple promotes iPhone and Elon Musk promotes Tesla.
I recounted the numerous historical contributions by Smalltalk. I reminded the public of Smalltalk’s popularity three decades ago. I listed major users of Smalltalk. I showed how versatile Smalltalk could be.
I kept the marketing messages clear, simple, and focussed. And I repeated these messages over and over again.
The result is that my articles have reached many tens of thousands of people around the world. One of them, entitled “How learning Smalltalk can make you a better developer,” garnered over 70,000 views. At Code Project, a similar article received 12,000 views.
On Quora, I answered thousands of questions with recommendations to learn Smalltalk programming. These answers were read by tens of thousands, as well. So, overall, a lot more people today are aware of Smalltalk. I believe I’ve dispelled the perception of Smalltalk’s demise, but perhaps that’s just hubris.
I tried to create a Smalltalk programming competition in my home country of Canada. Unfortunately, I couldn’t secure the funding. However, my effort may give you some more marketing ideas.
Here’s a poster I created.
Here’s the competition website I created…
Here’s the promo video:
Here are a couple of T-shirt designs:
And
Another thing I’m hoping for is continuing advocacy from the Smalltalk community. I’ve made a lot of noise these past four years, but it mustn’t stop with me. I urge all Smalltalkers around the globe to continue the work that I’ve done. Make your voice heard on social media. Write blogs that target newcomers and business executives. Go beyond just technical writing.
Make the marketing of Smalltalk a priority.
I have some suggestions for making your voice heard more clearly. When you write, write with clarity and passion. Use attractive eye-catching images in your blogs.
It’s not easy to develop one’s writing skills. It can only come from practice. Just like programming, the more you write, the better you’ll become.
Let passion be your guide. It will show in your writing. Use your imagination. It never ceases to amaze me how many ideas pop into my head when I’m relaxed and focussed on Smalltalk.
Tell people your story. Why did you choose Smalltalk? Why did you stay with it? What makes you happy when you use Smalltalk?
Know the history of the language so that you can present lots of intriguing facts to support your recommendations. Many of my articles contain good examples.
In closing, let me just say this. Smalltalk deserves a better fate than it has received in the past 20 years. Far too many developers today have either never heard of Smalltalk, or they believe Smalltalk is a defunct language.
Smalltalk has the potential to double the world’s software development productivity, on average. This would be hugely impactful on the IT industry, as well as our economy.
For me, however, the greatest benefit of Smalltalk is that it brings fun back into programming. The cognitive load presented by Java and Python and JavaScript and C++ was never fun for me. With Smalltalk, I can understand the entire system. There are no dark corners. Programming in Smalltalk brings a smile to my face.
And at the end of the day, that’s the only thing that truly matters. Muchas gracias.