A quick quiz: Take a look at the words / phrases below and tell me in what kind of talk can you hear them?
scary, scared, lazy, don’t want to scare, risk, risky, ivory tower, functional, real life, scary, no functional, reality, customers, complex
Those are some of the words I remember from the keynote given by Mark Reinhold and Brian Goetz, and titled “Java 8 and Beyond” at Devoxx 2013 conference. And I think this fact shows the real and biggest difference between designing a programming language and marketing one.
Let me explain: Devoxx, which does not need much introduction, is the biggest Java conference in Europe, including anything related to Java, JVM, Android, languages running on JVM (and even Microsoft, this year). Close to 4000 Java developers, as well as team leads, and software project managers come together from all over the world for 5 days. And just like Devoxx, Brian Goetz, one of the keynote speakers, does not need much introduction: He is a Java and concurrency expert, having written one of the best books in this field, and serving many JCP Expert Groups and working at Oracle as the Java Language Architect. In other words, when a heavyweight Java expert such as Goetz gives a keynote at a conference such as Devoxx, and talks about the upcoming version of Java 8, and stressing features such as lambda expressions and streams, thousands of developers do listen, and they listen very carefully.
So far, so good. But there is one thing surprising. Some of those developers, I, for example, feel like listening to the aspects of human psychology and the finer points of marketing to the masses, albeit technical masses. The reasons I felt like that can be summarized as the following:
* Brian Goetz likes to call Lisp and Smalltalk scary languages. Well, ok, I can get that, not technically, but in terms of psychological manipulation, in other words, marketing. (It is really surprising, because Goetz knows better, as someone of high-caliber).
* According to Goetz, who want to talk about new features of Java 8, such as lambda expressions and Streams, programmers are lazy and it is very easy to scare them. Well, maybe not all of them, but Java is so hugely, unbelievably popular, so ubiquitous, and hence there are so many millions of Java developers that a large proportion of the “market” is made up of lazy programmers who are scared easily. So you have to be careful. Once again, I understand this from a marketing and psychology perspective, even though I feel baffled by the lack of clear definitions and technical arguments.
* Interestingly, following from the fact above, we can deduce that features such as lambda expressions are neither new, nor advanced or scary. A quick look at Wikipedia shows that some of those features existed about 50 years ago, used daily by thousands of programmers, some of them not even as smart as Goetz. And Goetz himself says that Java 8 takes most of those features are from popular languages such as C# and Scala. Apparently Microsoft programmers are not scared that easily. Who knows. Maybe we can ask Erik Meijer.
* Brian Goetz claims that some of those features, even in a slightly more “advanced” form can be very complex. Interestingly, a few days ago Venkat Subramaniam gave a wonderful talk, demonstrating those features and comparing Java 8, Scala, and Groovy. What he said was crystal clear: What is unfamiliar is not complex, what is familiar is not necessarily simple. So, … Venkat vs. Goetz, let the fight begin!
* Goetz also consistently referred to “Ivory Tower” and clearly hinted at a slightly negative interpretation and then connecting this to the market, market size and finally lazy and easily scared programmers. I started to think like there are some overlords with 300 I.Q. and hordes of minions who churn out code in platforms and languages that are designed not to scare them and make their little brains explode. In between, there are good people who know what overlords talk about and try to bring a little bit of comfort and painkiller to the hordes of minions. Am I dreaming? Or is it the market forces?
* Continuing with the Ivory Tower, as a side note, I want to mark the fact that, you don’t need to graduate from MIT to know about lambda expressions and other “advanced stuff”. Many universities in Belgium teach them and if you think even Belgium is Ivory Tower, then I can simply point to the fact that 2nd year or 3rd year students from the Computer Science programme of Istanbul Bilgi University knew those concepts and used them without any problems. I’m not talking about Ivory Tower, but a very small university that is located in a country whom most of the readers from the United States probably never heard of. That’s as un-Ivory Tower as it gets, and that was the situations many years ago, when I was there.
* Brian Goetz also said that he does not want to use scary terms such as Monad or Catamorphism. Probably even this term dropping had sent shivers down the spine of poor audience. But, thanks to the great atmosphere and many commercial and real life developers watching him, Goetz said Java 8 was embracing more of a functional programming paradigm. Well, he also added that they don’t officially use the term “Functional“. Because… yes, you might have guessed, it can be scary.
* Goetz also added the important fact that Java 8 started to support immutability, and this style of programming. This reminded me of good old Scala, and functional programming but then Goetz said that even though immutability might be related to functional programming, they don’t use the term “Functional”. Then I came to my senses.
Now, I have to say that it was a nice keynote speech. I learned a lot of new things. And they were not technical. I now have a much better understanding about what it means to do marketing to the masses, no matter how technical they are (after all they all share the human psychology). I also think that I understand what kind of strategic plans the masters of the universe design.
Irony and jokes aside, I really expected less reference to psychological aspects, much less stress on marketing concerns (after all those concerns are Oracle’s concerns, and not the developers using the platforms and languages), and close to a zero amount of not-well-defined-at-all terms. At least from heavyweight thinkers and coders such as Goetz. After so many Internet discussions, blog entries and having read and experienced a bit with what programming language research has achieved so far, I really feel extremely tired when smart people such as Goetz repeat the “ivory tower versus real life” false dichotomy again and again, with a not so healthy dose of “those millions of easily scared programmers that make up the market and hence can affect our market share” mentality.
PS: It was funny when Lars Bak gave a great talk the other day, talked about Dart and completed his talk by saying “Dart has lambda expressions, we implemented it right from the start, and it was not that hard.”