Moving a team from Scala to Golang
jimplush.com
jimplush.com
Some libraries are targeted on doing one job well and using them is a great idea. But other like scalaz are hugely filled with implications, not the least of which is to UNDERSTAND how to effectively use it.
I don't use scalaz at all, not because I don't believe in functional programming, but because I believe in Scala functional programming and I want to make sure that I write code that other Scala developers can understand.
I'm not saying that scalaz is bad or good. It's just that it is a big deal and the whole team needs to drink the koolaid to get a real benefit. You could say the same about Apache Camel which is a wonderful tool that more people should use, but when you see it tucked into only one class of an app with roughly 100 classes, you wonder what is the point. Akka is the same kind of thing. You either embrace something like that or you avoid it. And make sure that everyone in the team is involved in the discussion.
I find its best to avoid the Scalaz library and it's community.
This is basically an admission that they're using Go as their Blub language because it's all the underqualified half of their team can handle. I wish they had shown the Go equivalent of that code, because I assume it's hundreds of lines of repetitive boilerplate that takes the same effort to work through no matter how smart you are.
It has been said that you can write Fortran in any language. Perhaps there needs to be a similar proverb about Haskel?
SBT is an order of magnitude easier to debug then Make or (heaven help you) Maven. I'm not saying it's the best or simplest build tool ever made, but it has nice debugging. `inspect` and `show` are invaluable.
If you are trying to scale past 50 devs without code reviews, there is a MUCH easier improvement you can do rather than to switching to a new language and tech stack.
Even though I really enjoyed the Scala functional programming course at Coursera, I decided to not use Scala in anger on any real projects because of the complexity. Java 8 is good enough and the code is much easier for people to read and understand.
I keep going back to Haskell even though I am not that effective with the language, but that is largely for enjoyment and because I am mostly retired now so if I spend extra time using Haskell I don't mind the productivity hit.
But learning how to use IDEs and build tools and even git or svn, effectively is definitely a learning curve. Just don't blame your hassles on a programming language.