6 reasons why my team decided to use Golang
Hi! My name is Herbert and I’m a software engineer at SumUp. We’re a multi-language company, so we use a lot of languages in our ecosystem. These include Golang, Ruby, Elixir, Erlang, Javascript (Node, React), Swift, Kotlin, and Java.
My team worked extensively with Ruby for over a year. When the time came for us to create a new microservice, we had to decide whether to stick with Ruby or change to a new language. Even with all the existing languages in our ecosystem, we decided to try something new, because we spotted an opportunity to solve problems and grow our customer base.
Here are the main reasons why we ultimately chose Golang.
1 — Engineers want to use it
SumUp is a fast-growing company, and we’re always on the lookout for new engineers. As such, we needed to choose a language that people want to use.
Go was among the most wanted languages in 2019's Stack Overflow Survey, so we were confident that potential new team members would like to work with it. It’s also very simple to onboard engineers and get them productive early with Go.
2 — It’s easy to learn
Go is one of the easiest languages to learn, with only 25 keywords. The docs are good, and there’s plenty of great material like A tour of Go, which flattens the learning curve even further.
Our developers had a lot of experience with the Object-Oriented Paradigm. If we’d chosen Elixir, for example, a change to functional programming would make the learning curve steep for the team.
Go is very explicit, making it clearer and easier to understand. There are no unnecessary complexities.
Our team was so enthusiastic about learning Go that we hosted a Go Meetup in São Paulo, to talk about our initial experiences.
3 — It’s a compiled, statically-typed language.
I’ll tell you a secret if you don’t currently work with a typed language: You’ll either love it or hate it.
If you initially hate it, rest assured that you’ll eventually begin to see the benefits.
At the end of the day, software’s biggest cost lies in maintenance rather than the time it takes to create the code. Typed languages make it much easier for you to understand how the software is working. And statically-typed languages help you identify errors early on in the development process.
Static typing usually results in compiled code that executes quickly. The compiler knows the exact data types that are in use, so it can produce optimized machine code.
4 — Go’s tooling is helpful and opinionated
If you install Go, you’ll have already lint, format, and test tools.
Use gofmt
or goimports
in your code, and you'll instantly have all the settings and best practices adopted by the community. You can go a little further with more restrictive rules. I did this for a few projects and learned even more about the language. Go is very opinionated by default with its code style. By following what is already defined, you can avoid wasting time arguing with your team about small details.
Go also comes with a test framework, so you have all the basics to create good and maintainable software without having to worry too much or choose frameworks.
5 — We wanted a common language within our tribe
At SumUp, we work with the concept of squads and tribes, as per the Spotify Tribe Engineering Model. My squad was part of a tribe that uses many programming languages. We wanted to have a common language that all our squads could use, so that any engineer can switch between squads and deliver value quickly. I realise that this goes a little bit against the principles of a multi-language company, but we saw real benefits in using Go as our main language.
This is good for the company, but also for developers who want to change their current context, or maybe even live in another country. Our tribe has squads in two locations, Berlin and São Paulo. If someone wants to move and continue working in the tribe, they won’t have technological issues. Last year, one of our software engineers enjoyed life at SumUp across two continents.
6 — No Silver Bullet
Go will never be our silver bullet and we don’t expect this from any single language. As a rule, you shouldn’t expect this from any particular technology.
Go proved to be a good solution for our specific needs this time, but this doesn’t mean that it will be the solution for everything.
And we’re perfectly happy with this. We need to also have space to create new things and find the right tools for the job.
Bonus reason — Amazing mascot, great package names.
Did you see their mascot? You can even create your own gopher! Go also has incredible library names like Gin Gonic, Gorilla, and Buffalo.
—
Are you using or planning to use Go in your company?
How is your experience with Go? Are you enjoying working with or learning this language? Send me a tweet at @herberth3nrique.
I hope you liked the reasons I shared with you. I chose to focus on benefits that the language brought to my team, so I haven’t even mentioned the most common benefits of the language, such as concurrency, performance and garbage collection.
If you enjoyed this article, don’t forget to share it on Twitter!
If you understand Portuguese, we have a podcast about how we deal with hardware, multi-languages, and microservices at SumUp.