As a startup, Haaartland needs to move fast and produce great API and backend services that scale. Back in 2015 when we founded the company, we had pretty unclear requirements and we knew that we would need to refactor our code many times to find our product/market fit. In order to achieve this, we wanted a simple language to produce really straightforward code with great possibilities when it comes to concurrency since we aimed for a viral product.
When we do refactoring we want to meet the change in requirements and not having to do major rewrites for purely technical reasons like poor performance, etc. Adding and optimizing features for our customers is what we want to focus on. Today, it looks like we did set our foundations well and our base have survived many changes in requirements (and a pivot in 2016)
I had my eyes on Golang for some time prior to 2015 and it seemed like a good fit for Haaartland.
To be transparent 😊 I also had personal reasons to go with something new and fresh. I have been coding since 1987 and have used many languages over the last 30-some years. Java has been the language I most frequently have used professionally since 1998(ish) for larger projects. I wanted a change and a challenge. This might seem like a poor motivation to choose a new language but I think that having fun while coding produce better code. I also think that if you limit yourself to one language it's like a carpenter with only a hammer, all problems start to look like a nail.
In short, GO is expressive, concise, clean, and efficient. It is what it is. No fuzz, and very straightforward.
👉 Performance: it compiles and runs fast. Golang doesn’t have a VM (Virtual Machine) it compiles directly to machine code with cross-platform compatibility.
👉 Concurrency: this is why I fell in love with go. concurrent programs have always been error-prone to develop. Simply because orchestrating independent tasks is hard. Concurrency is built into golang, the lightweight goroutines and channels for control are just mindblowing. You can theoretically run millions of goroutines on a single box.
👉 Easy to learn and use: it's a breeze to learn. There is no type-inheritance or classes (if you are coming from the object-oriented world you will feel a bit limited in the beginning) This makes it easier to develop a market ready product at a breakneck pace. Plus, its ease of use allows for quick and easy maintenance. There are tools for managing your code shipped with go, like fmt and vet. Testing is also built-in. All in all a great package.
The only thing I truly miss is golang is operator overloading. Other than that I feel the benefits outweigh the limitation.
If you are obsessed with beautiful code you should probably go another route. Golang is an eyesore compared to more poetic languages like Scala.
Community negotiated deals. Exclusive events. Posts. Polls and more. Free to members.
or