def ++ [B >: A, That] (that: GenTraversableOnce[B])(implicit bf: CanBuildFrom[List[A], B, That]): That
I have no idea, but I do know that List(1,2) ++ List(3,4,5) yields List(1, 2, 3, 4, 5). No surprise there. According to Yammer, my faith that ++ does indeed concatenate lists leads to "cargo-culting snippets of code as magic talismans of functionality". Apparently, I must scrutinize and analyze each and every last letter of the method signature to avoid falling into the cargo-cult trap.
It looks to me that Yammer have invented problems where none exists. "Understanding" is a vague concept, but if you have good abstractions, you don't need to understand why something works, only how. At least not until you do need to know.
I'm referring to the Yammer moving away from Scala post btw.
Regarding the Scala community, I'll agree that it's immature. There is no consensus of what good Scala code looks like, and there is a lot of academic noise. An organization that is serious about Scala development needs to come up with their own programming guidelines and maybe also their own utility libraries. Failing to do so will result in code styles all over the place, and an impossible maintenance situation. I expect the Scala community to converge towards a common code style over time, but we're a long way off yet. Today, Scala is mostly driven by academia and hobbyists such as myself, but that will change with industry adoption of Scala.
I have never done any serious performance tuning in Scala, but I'm sure the advise on how to improve performance is accurate in the right context. But in most cases, a difference in an order of magnitude or less is irrelevant, and I from what I hear about e.g. Twitter, when performance is critical, Scala has delivered. Maybe Yammer's needs are different, and can't be met by Scala.
At the end of the day, Scala is just another language, suited for some purposes, but not all.
PS.
I wrote about the academic mind set here, here, and here.