
The Rest of the Story (Yammer & Scala) - pbreit
http://codahale.com/the-rest-of-the-story/
======
headius
I can appreciate that having a personal opinion about Scala's use in one
particular context belched out into the world is unfortunate, but I have to
say that Coda's email reads like my laundry list of concerns about Scala. I
could have written this email just by theorizing about Scala's shortcomings
based on my short time playing with it. Except in this case, it's correlated
with real-world stories.

I like Scala, and I think it's the most powerful and flexible mainstream
language available today. Unfortunately, that's the problem.

~~~
donjigweed
Wow. If this is Charles Nutter I'm surprised no one has commented on this. I'm
sure someone could make the argument that as there is ample evidence that
humans are much less rational than we typically care to admit, that we are
feeling animals who also happen to think rather than thinking animals who also
happen to feel, so it is that the creator of what it is today easily the most
popular non-Java JVM language could conceivably be "blinded" by their own
personal investment in a "competing" language. But I think the much more
interesting fact about this comment is that the commenter is basically a
fucking programming god. And he thinks Scala is too complex. If I was
Colebourne I would be posting on my blog, a very short post, basically just
saying "Hey, all you bitches telling me 'Yeah, yeah, yeah, you wrote a little
date library, WTF are you again?' Does Charles Nutter carry enough weight for
you?"

My own personal viewpoint is that the Nutters and Colebournes are totally on
the money. I remember reading a quote from Miguel DeAcaza talking about thread
based concurrency programming models in the new N-core paradigm, he said it
didn't scale, because "there are not enough PhDs in the world." Despite it's
name, I don't think Martin's baby will in the end have lived up to it. Didn't
scale, not enough PhDs in the world.

------
jbellis
"If someone asks me for an honest opinion of them or their work, in private, I
feel morally compelled to be as honest as I can with them."

I can vouch for that. Around a year ago I asked him for feedback on Cassandra
and his response was both thoughtful and helpful. I appreciated that a lot.
Thanks, Coda.

~~~
johnx123-up
Can you share _that_ Cassandra feedback, please?

------
swah
He wouldn't say that in public because it would be harmful to the Scala
community, but everyone who read it is very glad for having read it.

But if everyone thinks this way, those innovations will have one view on the
web (where there is an image to care for) and another one of engineering
departments, where people get real... and that sucks.

~~~
technomancy
Obviously he took the time to write this post in such detail because he hopes
that its intended recipients can take action to address the issues he raises.

It's not like there isn't already plenty of Scala bashing going around these
days anyway.

~~~
soc88
I think it is very constructive and I expect that improvements caused by it
will land in trunk soon.

~~~
swah
I found it constructive too, but its not like the Scala implementors only
heard about those problems now and can easily fix it.

------
martingordon
I'm curious to know why Yammer went with Scala to begin with (not to imply
that it was a bad decision at the time).

Was it Language of the Week the week they started building Yammer? Were they
trying to follow in Twitter's footsteps? Were they a bunch of Java developers
looking for something better than Java? Did someone on the team have previous
Scala experience?

Would Yammer be where it is today had they gone with Java (or another
language, JVM or not)? Before running into the limitations described in the
leaked email, was everyone happy with Scala?

~~~
castaside72
Their whole product is a ripoff of Twitter so that was probably it.

~~~
foobarbazetc
Not just Twitter. Twitter and Facebook combined.

------
melling
It's good to see honest evaluations of technologies. It helps people better
decide when something is mature enough to adopt for their organization, and
helps in avoiding the landmines when they do. It also lets the the "owners"
know what is impeding adoption so they have better focus. Scala is several
years old now and really is gaining adoption in larger (ie conservative)
firms.

Scala is far from perfect and has some warts, but that's the type of
technology that always seems to win. C++ vs Eiffel, Intel vs Motorola.

------
ShardPhoenix
Why are the needs of the "Scala community" to save face more important than
the truth?

~~~
weego
The reality of the Scala community is that most of the major players (the
Typesafe side) prior to commercialising directly were hoping for some level of
popular adoption with devs that would bubble up into startups/SME and for
whatever reason that hasn't happened. So now they are banking on the idea they
can sell directly into large enterprise space as a one size fits all approach
that involves cross training developers (as there are very few out there due
to the mentioned lack of adoption). This is pretty risky and needs momentum
that can easily be killed by negative stories.

A lot in the original email is correct (I can't speak for the performance
stuff as my skills are more webdev side of Scala), especially the way that
libraries/OSS projects/sbt pan out. Something like Dispatch that is a
fantastic tool and should be simple is a mess of functions-as-operators and
poor to no documentation or examples to the point where for some things even
reading the source code is not a lot of help. I'm not going to type out my
thoughts on the shambles that was the sbt rewrite at 0.10+... just complete
madness.

------
tptacek
He's not even a little wrong about HN.

~~~
orenmazor
He's not. And so I laughed when I opened this thread and the highest rated
comment was a java vs scala post. Rather than a reply to his thesis.

~~~
mhansen
A Java vs Scala post is far more interesting to me than discussing the "shut
up about the tools and just work" thesis.

------
cfontes
I am getting more and more tried about this kind of arguments, I am studding
Scala and I like it, It can be right for some things and wrong for others,
it's just another tool in my toolbox like Java, JavaScript, Ruby... You gotta
have tools, and be able to choose between a Hammer and a screwdriver when
needed, that's the real "Hacker"

------
randysavage25
I would like to see a time where JVM languages completely overshadow and
remove Java from the scene, leaving only the VM itself as a requirement. It's
a terribly depressing tool to use, and it's frustrating when I have to refer
to it when using Scala or Clojure, particularly in I/O .

------
jdefarge
Coda's opinions, even if leaked, were highly appreciated. This guy has
invested a _lot_ of time on Scala so it's in better position to say what he
thinks about the language. In the end, it should help to fix imperfections and
help the community.

------
SWengineer
Yammer using or not using Scala isn't going to make or break the language.
Adoption seems to be ramping up in organisations of all sizes:
[http://thecodegeneral.wordpress.com/2011/11/27/scala-
adoptio...](http://thecodegeneral.wordpress.com/2011/11/27/scala-adoption/)

------
rbxbx
Can't help but upvote half the replies in this thread. Sometimes I forget how
many ridiculously smart people hang out around here. Happy to be amongst you
all, even as a generally passive participant.

------
michaelochurch
Here's why I, personally, prefer to put all my investment into languages like
Scala and Clojure.

Scala and Clojure, for their problems (which are not severe, but not to be
ignored) have the advantage of being closer to the languages and approaches of
the future, in which building comprehensible systems at very high levels of
complexity/intellectual intricacy will be even more important relative to
performance of executables. I expect that the problems of these languages
(including performance) are going to become much less major over time, just as
performance gaps between Java and C and between C and hand-written assembly
have nearly disappeared.

Spending another 5 years in Java means you're preparing yourself for a 1996
job in 2016.

Why Scala and Clojure? Unfortunately, the 10-year forecasts for Haskell and
Ocaml aren't great. I wish they were, because those are great languages. The
reason: libraries and tooling matter, and they seem to be mattering _more_ as
the years pass (while differences in performance between languages narrow and
matter less over time).

Hiring and talent: It's true that you can't hire 50 Scala programmers per
month. On the other hand, most startups are far away from being in a position
to hire 50 programmers per month at all, much less 50 good ones. Choosing an
"esoteric" language works both ways. On one hand, it reduces the total pool of
ready developers. On the other hand, I know companies that use Haskell and
Ocaml and are able to hire 60-75% of their in-office interviewers while
remaining selective; this would be impossible for a Java shop-- there are just
too many unqualified Java developers. Choosing a language like Scala or
Clojure will do a lot of the filtering for you.

~~~
socratic
Do people think the hiring and talent argument holds water?

The more I hear this argument (e.g., from the "Python Paradox"), the less I
buy it.

Is the theory that true "hackers" care more about the programming language
syntax and semantics than whether it has the right libraries for the subject
domain of the startup?

Is the theory that true "hackers" care more about whether the startup uses a
new and un-tested programming language than traction, likelihood of success,
money, or the actual problems being solved?

Do the best "hackers" come in by searching job sites for niche programming
languages, rather than referrals?

Even ignoring the huge disadvantages in library support, tooling, community
sizes, and so on, are the hiring and talent advantages believable? Are the
sort of people who learn Haskell also the sort of people who would be 99th
percentile C++ systems engineers for some reason?

~~~
michaelochurch
I think it's this: the best programmers generally want to learn new languages
and approaches. This means that by mid-career, they've been exposed to at
least 5 languages and seriously used two or more. They've at least tried
functional programming. Rarely is the general-case favorite, for such a
person, C++ or Java.

Finding great programmers who know C++ and Java is not very hard. Finding
great programmers who _prefer_ those languages is quite difficult.

~~~
danieldk
_I think it's this: the best programmers generally want to learn new languages
and approaches._

This is true, however an inherent danger to Haskell/Lisp/ML-filtering is that
this group has also a relatively high percentage of people who think every
problem is a nail.

So filter for people who know functional languages, but also have plenty of
experience with, say, C or C++ projects.

~~~
j_baker
You really believe functional programmers are more willing to treat their
language choice as a golden hammer than C++ or Java programmers? You must have
installed a different version of reality than I have.

~~~
danieldk
I didn't say filtering on Java was any better. Just that 'filter on Haskell or
Lisp' is no golden rule. You will miss out on good candidates. There are great
programmers out there who never really touched Scheme or Haskell outside a CS
course.

Also, I think that a fairly large subset of C++ programmers who think that C++
is an ugly and complex language. But it's often practical, e.g. because it is
used in legacy software, because it's fast (and provides more abstraction than
C), or because many good cross-platform UI libraries use C++.

------
castaside72
Pompous. If you ever tried to use Yammer's "API" you wouldn't be asking this
guy for an opinion on anything.

