Re:Ask HN: Should I learn Scala or Go?
by kasey_junk on Wednesday April 15, 2015 @12:09PM
(#9381923)
For background, my last few years experience were in Scala and I'm now writing golang systems.
Item 1:
Both golang and scala communities are large enough now that you aren't dealing with lack of community as an issue. There are very bright people working in both communities and there is a lot of passion for the languages. Unlike something like Java or Php, if you are working in one of those languages it is largely because you want to be. That said, I'd say both communities suffer from an abundance of arrogance that is above normal for other languages.
Item 2:
You can learn go in a couple of hours. Its warts are obvious on casual inspection and typically if you aren't doing something the "go way" you will pay for it. This usually isn't a practical problem but occasionally the "go way" leaves you stuck.
It took me a solid year to learn Scala to the point I would call myself competent. I still have zero degree of confidence in dropping into an existing Scala project for the first time. Part of that is a design decision as there is "no" Scala way. Part of that is the community itself has a large contingent of language tinkerers who will try out experimental features. But I've never seen a problem that couldn't be solved in a Scala code base in an "elegant" way. Incomprehensible is also easier in Scala.
Item 3:
I doubt there is any way to predict this and it is largely not the way I would choose a language.
Personally, golang the language irritates me like crazy. I do like the simplicity for small web services or cli tools though. If something starts approaching the "bash is too much" here, I happily do a quick golang program. This is more a function of the go tool chain than anything else, but if golang has proven anything, its that the tool chain matters.
Conversely, I doubt I will ever write a system again in Scala. I'm glad I did, and learning Scala made me hone some development chops I wouldn't have otherwise, but it isn't something I love programming in (even though it doesn't irritate me like golang does).
My advice would be to learn Scala, but that is largely because I think paradigm shifts are more long term rewarding than language/framework shifts. Golang hasn't taught me anything I didn't already know and if you do need to learn it for a job or something it isn't hard to do.
Item 1:
Both golang and scala communities are large enough now that you aren't dealing with lack of community as an issue. There are very bright people working in both communities and there is a lot of passion for the languages. Unlike something like Java or Php, if you are working in one of those languages it is largely because you want to be. That said, I'd say both communities suffer from an abundance of arrogance that is above normal for other languages.
Item 2: You can learn go in a couple of hours. Its warts are obvious on casual inspection and typically if you aren't doing something the "go way" you will pay for it. This usually isn't a practical problem but occasionally the "go way" leaves you stuck.
It took me a solid year to learn Scala to the point I would call myself competent. I still have zero degree of confidence in dropping into an existing Scala project for the first time. Part of that is a design decision as there is "no" Scala way. Part of that is the community itself has a large contingent of language tinkerers who will try out experimental features. But I've never seen a problem that couldn't be solved in a Scala code base in an "elegant" way. Incomprehensible is also easier in Scala.
Item 3: I doubt there is any way to predict this and it is largely not the way I would choose a language.
Personally, golang the language irritates me like crazy. I do like the simplicity for small web services or cli tools though. If something starts approaching the "bash is too much" here, I happily do a quick golang program. This is more a function of the go tool chain than anything else, but if golang has proven anything, its that the tool chain matters.
Conversely, I doubt I will ever write a system again in Scala. I'm glad I did, and learning Scala made me hone some development chops I wouldn't have otherwise, but it isn't something I love programming in (even though it doesn't irritate me like golang does).
My advice would be to learn Scala, but that is largely because I think paradigm shifts are more long term rewarding than language/framework shifts. Golang hasn't taught me anything I didn't already know and if you do need to learn it for a job or something it isn't hard to do.