Created: August 20, 2019

Underestimating Go

Pavel Kalashnikov.

Pavel Kalashnikov

ex Software Engineer

Backend development
Underestimating Go

Hi, I'm Pavel!

I'm a software engineer in Mad Devs. In the past six years, I've been working with Ruby and Rails, also I love React and Redux. I was a happy developer because Ruby is a great language, which allows the developer to create many things easily and interestingly. You just choose a tool you want to work this, and it just works!

What am I doing here?

I've noticed something. People in the software development sector have chosen Go very often when they start a new project. I asked: Why? People said: Go is popular, modern, and trendy. But is that enough to choose a programming language to use?

Why Go is so popular

We should remember that Go is popular because of Google. Some developers just want to use Go, because it's everywhere! Let's talk about Go.

Go is a good programming language. Not the best, just good. Go-creators clearly defined the basic principles of language. Core-team developers are brave people, who don't back down and improve language according to basic principles. It's pretty hard because Go-community is very big now.

Unlike Rust, which interfaces sometimes are changed, and developers can't compile after minor language updates, Go is very stable.

Who is guilty? Entrepreneurs, of course

Business is always to blame! Developers know the truth.

I'm joking, but…

I want to tell you a story. The outsourcing company has got a new client. The client wants this company to develop a web application. The client suggests using Go as the main language for the backend. Why has the client chosen Go? The client is not an IT company, not technical at all. It's easy! Go was advised to the client by his developer-friends then the client made some investigation and recognize, how popular Go is.

Why companies use Go

Moments such as the previous story happens very often. Sometimes it prevents a good development process because the outsourcing companies won't persuade the client. It needs more projects to get money. In this case, VERY BAD companies agree with the client without attempts to persuade. And they start to develop with Go, even if they don't need Go. Count of Golang projects is growing, outsource companies increase their Golang departments. They motivate their programmers to learn Go. It can go on for a long time. When the count of Golang projects gets less, this VERY BAD begins to use Go in cases, where it's useless. Because they already have a big Golang department. Count of Golang projects is still growing.

That's why we have a lot of projects on Go, but many of them don't need Go.

What is Golang good for?

Golang has its own scope of tasks, like every other popular programming language. This scope is built historically. It depends on tools and popular and successful projects, which were developed with a language. Sometime core-team developers have their own vision of language applicability.

In my opinion, now Golang is useful in this scope of tasks:

What is Golang not good for?

In my opinion, there is one very important point: you shouldn't use to create REST API!

Well actually, you can use it, but only if you create REST for one model. If you need one action for many models, you shouldn't use Golang. If you need many actions for many models, use Rails, Django, ASP.NET, Pheonix, Spring, etc. There are many great frameworks, which allow you to create REST faster, more secure and easily. They have stable ORM, migration tools, views, controllers, etc. Golang doesn't have any full-featured web framework. Every time you need to create a web application from components, which sometimes do not match with each other.

Golang now supports Web Assembly. I don't know how it will work. Stayed tuned.

Experience of using Go: advantages and disadvantages

These are my thoughts about language after three months of use. Just remind you about my experience. Six years of a development web application with Rails and React, I'm a full-stack developer.

The first impression of Golang disadvantages looked like this:

There are some good advantages with Go:

As you can see we have more bad points than good. But bad points are just emotions, besides good points. There are all about practice and architecture.

Summary

Golang is a good programming language, but only in the scope of applicability.