Wednesday, December 7, 2011

Recent Community Conversation on Scala

For several years now, I've thought about investing more time and effort into learning and trying out Scala. However, there always seems to be something else that I run across that moves ahead in the queue of things I want to examine more closely. With this in mind, the recent postings on general usefulness of Scala have been particularly interesting.

John Stevenson's post Defending Scala's honour - why you should give it a go writes about why developers, especially Java developers, should give Scala a try. The reasons are a little more pragmatic than some of the Scala evangelistic posts and the post provides a nice summary of some compelling reasons to try Scala.

Another recent post with positive coverage of Scala is Scala - Popularity and Use Grow. This post cites ThoughtWorks' take on Scala; growing Scala user groups, community, and conferences; Scala job opportunities; and language popularity ratings as "indicators [demonstrating] how the world wide popularity and momentum [of Scala] continues to increase."

Stephen Colebourne's post Scala feels like EJB 2, and other thoughts was on the opposite spectrum of feelings about Scala and provoked quite the community discussion on the virtues and evils of Scala. There are not many things in the world of Java that are more negatively perceived than EJB 2, so comparing Scala to EJB 2 definitely implies negative feelings about Scala. Colebourne does more than coming up with a compelling and controversial title, however, and provides details from his own experience that have led him to conclude, "I don't like Scala. And that dislike is increasing. Specifically, I do not want to spend any of my future working life having to write code in it."

Not surprisingly, there has been significant feedback to Colebourne's "Scala is like EJB 2" post. As of this writing, that post itself has 126 feedback comments and Colebourne has written an entirely new post (Scala EJB 2 feedback) in response to many of those comments. There are already 92 feedback comments to that response post and Colebourne concludes it with, "My final thought is that it is OK to look at Scala and decide against. You're not alone." I don't know enough about Scala to take a side, but I certainly have felt the implication that anyone who doesn't like Scala simply doesn't understand it. That very narrow characteristic, at least, is in common with that of early EJB 2 evangelists and the lemmings that we were in following them.

Perhaps even more controversial was the unintended releasing of communication that was intended to be private between Yammer personnel and Typesafe personnel. The communication was intended as a constructive criticism of perceived shortcomings in Scala and a requested explanation of why Yammer was moving from Scala to Java for its "basic infrastructure stack." Colebourne's post Real life Scala feedback from Yammer emphasizes that this post with a critique of Scala is valuable because "I do believe that the most valuable feedback comes from those that have tried Scala." Colebourne concludes that post, "It's not for me to add any more to this, Yammer's opinion. There is a gold mine of information about Scala in there. And in my opinion, everyone thinking of adopting Scala should read it - in detail."

The intended-to-be-private message from Coda Hale does provide one person's critique of a language. I think there are some telling observations made from this whole episode. First, this reminds me that the most useful truth is often what's not meant for the public. It sounds like this message was more forthright (and potentially more useful to Scala's developers and to developers considering Scala) than it would have been if meant for the public. The reminder here is that writers of blogs and articles may have a different opinion that they express publicly than that they really believe. Second, all languages have problems and issues, but there seems to be significant defensiveness in this case. Third, credit should be given to the folks at Typesafe for a desire to learn what went wrong with Scala for certain users in an attempt to possibly address some of those issues.

The original post's content was a personal opinion of a Yammer employee, but a follow-on post titled Scala at Yammer explains Yammer's official position on Scala. It doesn't pretend that all's well with Scala, but instead points out the truth that should be obvious: all languages (even Scala) have their negatives. I have heard Scala touted as if it has no negatives and I think this unbelievable position does its cause a disservice. I do recall EJB receiving similar evangelism in its earliest days. I believe that the original post has worthwhile content even if it's one person's opinion. Many of the things outlined in that post are not seeing their first mention online. In particular, the discussion about complexity of Scala is anything but new.

Seeing a post from a developer familiar with Scala that outlines that language's potential deficiencies in his situation should be neither surprising (even if Scala evangelists might have you believe otherwise) nor necessarily mean abandon the language (even if Scala detractors might have you believe otherwise). All languages have issues and all new languages in the future will have issues for given situations and given developers. It's time to stop pretending otherwise. The post about Yammer returning to Java for portions of their basic stack merely provides food for thought in making a careful decision about my own use of Scala in the future.

In the end, all of this recent coverage of Scala has not changed my position on Scala appreciably: I'd still like to learn more about it sometime in the future so that I can make my own informed decision. The recent Scala posts simply remind me that Scala still is a young language and it won't hurt too much if I put that learning off for a little longer. No tool or language can be everything to everyone and I appreciate reading posts from people on both sides with regard to Scala.

4 comments:

Jean Hominal said...

Another recent item (I don't know whether it was already published when you wrote that article comes from the Lift team at http://lift.la/scalas-version-fragility-make-the-enterprise - this article focuses on the problems caused by Scala's compiler instability.)

@DustinMarx said...

Jean,

Thanks for pointing that post out. I saw it referenced on DZone (currently #1 link) after your comment, but your comment was the first time I saw it. The post Scala's version fragility make the Enterprise argument near impossible is another one that is useful because it's written by an experienced Scala user ("more than five years") and provides a concrete and specific example of something that could be improved.

It is also interesting to read Josh Suereth's (Typesafe Software Developer) response post Scala Fresh is Alive.

Thanks for pointing that article out.

Ðavîd said...

The recent Scala posts simply remind me that Scala still is a young language and it won't hurt too much if I put that learning off for a little longer.

The main benefit of learning the language, in my opinion, is actually the programming concepts that one will learn along the way that will make one a better programmer.

So it's not about adding another notch or keyword to your resume but deepening and generalizing your knowledge of programming, which has benefits that will carry over to your use of other languages as well.

@DustinMarx said...

Nikita Ivanov's Offbeat: Scala by the end of 2011 – No Drama but Frustration is Growing is an interesting read by a person who has used Scala for some time and seems internally conflicted about the language. He seems to like the language itself, but does offer some ways it could improve, especially to gain greater market share and to become more attractive.

Using Scala API Documentation talks about some nuances of using Scaladoc-generated API documentation.

Another interesting post is Scala IO versus Guava: The Basics.