Update: July 2, 2013. At the end of this article I made a list of some of the most important points that Mr. Johnson made during his keynote. See the “Excellent points” section at the end of the post.
To me, he said some things that needed to be said -- or needed to be said a while back -- but he presented his thoughts in a poor way. In short, he was a downer. At a venue and presentation where you want to celebrate, learn, and enjoy, his presentation reminded me of Al Gore running for President in 1999: It had all the joy of a child scolded by a parent.
How it should have gone
I would have started the presentation like this (with the words corresponding to each slide shown below the slide):
Welcome to Scala Days 2013.
and good morning.
You know I have a name for people like you.
In fact, I have an acronym for it: SAKE,
pronounced like that fine Japanese beverage.
What does SAKE stand for?
It stands for “Scala Ass-kicking Early-adopters”.
So let me say it again:
Good morning, you Scala ass-kicking early adopters!
(Wait for applause to die down)
I just adopted Scala within the last year
so I'm still something of a noob,
but while I wasn't part of your community,
you ass-kickers, you early adopters
really created something awesome here.
Let's take a moment to give yourself some applause,
because this is an insanely great programming language
with some tremendous tools like SBT, the Scala IDE,
the Play Framework, Akka Actors, and much more!
Wish list for a futuristic programming language
Next, I’d say something like this:
You know, if I didn’t know any better and I had a wish-list
for a futuristic programming language, my wish-list would look like this.
Having learned the lessons of trying to build large applications with
dynamically-typed languages, my wonderful new programming language
would be statically-typed.
Although it would be statically-typed,
I’d see if I could take advantage of
Martin Odersky’s wonderful brain
to make it feel dynamic.
One thing we learned from Ruby is that a concise language is really nice.
So it would be concise like Ruby, and also still readable.
In a word, it would be expressive.
It would support the OOP and FP paradigms.
It might say, “Hey, take a look at FP, there are some really cool advantages here.”
But I’d be subtle about this. People like to discover things,
so I’d want them to adopt the language because
it’s a better OOP language,
and then let them
It would run on the JVM to take advantage of JVM performance
and all those awesome Java libraries out there.
It would have a great high-performance, production-ready Actor Model to simplify concurrency.
Shoot, let’s hope for everything: It should also have a Rails-like web development framework.
And wouldn't it be cool if we could write our code in an IDE,
where we could also easily refactor it?
Wouldn’t you agree that wish list would make for a
wonderful futuristic programming language?
Of course I’d follow that up with this:
Wait, that’s not a futuristic programming language -- Scala does all those things today!
(Tiger Woods fist-pump here.)
(Wait for the applause to stop.)
“I have a dream ...”
After that, I’d follow it up with something like this:
You know, I led the development of the Spring Framework and its community,
and we learned some lessons while building that community,
and I'd like to share those lessons here, while I share
my dream for Scala in 2018.
My dream is a simple dream.
Right now Scala is the 15th most popular programming language
in the world ...
And I think it should be #1.
So the question is,
“How does Scala get to be
the #1 programming language
in the world?”
I’d then go on to talk about how the Spring Framework and Spring community grew and prospered, and how “Lessons Learned” from that experience apply to Scala.
In addition to sharing those lessons learned, the essence of my talk would be, “There is something like ten million Java developers in the world, and it’s our duty to let them know that we took the plunge, swam across the shore, and we found something great. The water is safe, so come on in.” We all need to be Scala evangelists, because a bigger Scala community is better for everyone.
I’d summarize it like this:
"Have you helped a Java developer today?"
A watershed moment
To me this seems like a watershed moment for the Scala community, and I think it’s important to put the “downer” tone of Mr. Johnson’s speech behind us, and continue to build the Scala community.
The overall goal of having Scala be the #1 programming language of 2018 is a good and worthy one. It’s a heck of a good language, and as developers, we always want to be using the best tools. We traded in CVS for SVN for Git, right?
While being #1 is important because it means we have a big, strong community, being “the best” is a more worthy goal. Being the best means we have a great programming language to help the human population evolve for the next 10-20 years or more -- a programming language we can be proud of. So we have to ask ourselves, “Is Scala the best programming language available?” Personally I think it is, but if others think it isn’t, we need to listen to their concerns and respond to them.
I know that after switching to Scala it would be really painful to have to go back to Java. (As a consultant, you’d have to pay me quite a bit more to make me program in Java.) So I think it’s our responsibility to “put out the good word” about Scala, and support the Java, C#, C/C++, and Ruby developers that are thinking about “making the switch.” Once they make the switch, and see that Scala is a safe and wonderful place to be, they’ll help recruit more developers, and so on.
Please don’t get the point of this blog post wrong: I don’t disagree with most of what Mr. Johnson said; I just thought the tone was a downer, especially for a keynote address.
I think all of the following points from his slides are very important:
- Most of those using Scala in 2018 aren’t using it today: How do we welcome them?
- Shouldn’t feel guilty for using OO design
- Myth: We don’t need frameworks
- Myth: Java sucks, and Java coders aren’t as smart as us
- Backwards compatibility matters
- Does anyone stick with Java because Scala doesn’t have enough features??
- Need to be paranoid about footprint
- The Scala community will determine what happens next
- Community needs to welcome newbies
I don’t know if he said this directly or not -- I didn’t listen to his keynote again, I just scanned through the slides -- but this can also be implied:
- Backwards compatibility and faster compiler is more important than new features
These are all excellent and important points. If the Scala community wanted to make these points their mantra for at least the next year, I wouldn’t disagree at all.