This was originally posted on LinkedIn on October 2016. Still, the most significant part I had to change was the title image
When people first spoke with me about GoLang they said: “It compiles in less than a second, unlike Java, where you compile for 10 minutes!”. But guess what. You want CORS in all your projects? So you add a library for that. And you need DB. Another library. And Redis? Another, please. Suddenly, it takes 10–15 seconds to compile your MICROservice. Then comes the moment you discover that your Java Vert.x has all the same capabilities, but compiles in 5 seconds. Ouch.
When people first spoke with me about GoLang they said: “It’s crazy, the syntax doesn’t change at all! You learn it once, and stay productive until the end of days!”. That’s absolutely true, syntax doesn’t change. But remember the libraries? They change all the time. So instead of spending time learning what
()-> does, you spend time switching back and forth between
sql.NullString. Yeah, like in early PHP days.
Speaking of which. GoLang documentation is only good as long as you stay in GoogleLand. Step outside, to a happy and growing GoLang community, and you’re on your own. Documentation? Sure, if you’re native Chinese reader, in some cases. And that’s before I mention dependency management. Between vendoring you dependencies like in happy C days, to GoDep, to some other dependency management tool. That’s a lot of fun in microservices world. As long as you have time for fun. My hopes are that Glide, which basically copies npm, is here to stay. Otherwise, there’s another painful dependency management migration coming.
So, if your using GoLang and happy about that — that’s totally cool. Go is an excellent tool, that allows solving many interesting problems. But if it doesn’t solve all your problems, keep looking around. There’s no one universal tool in programming that will always help you. Look around. You’ll find something that’s better for your case. Rust evolves very fast, if you like system languages. If you come from Ruby, Elixir is something to check out. And for Java guys, if there are still any, there’s Kotlin, which I find almost perfect for web development.
And if you only considering GoLang right now, remember, there’s little magic in this world. Don’t believe everything people say, or write. You win some, you loose some. Definitely try it out, but don’t put all your eggs in one basket.