A QUICK SUMMARY – FOR THE BUSY ONES
TABLE OF CONTENTS
Golang is one of the youngest programming languages. It was created to meet the needs of programmers working on large projects.
<span class="colorbox1" fs-test-element="box1"><p>Note: Thanks to its simple and modern structure, Golang has gained popularity among many large technology companies. </p></span>
What are the benefits of using Go and what are the biggest companies using Golang? Let’s find out!
The motivation for programmers working in Google to create Go in 2007 was to establish a programming language that would be much simpler to use than the languages used at the time.
It was created by experienced programmers – Ken Thompson (designer and creator of UNIX and C), Rob Pike (co-creator of UTF 8 and UNIX format), and Robert Griesemer.
C ++ was widely used at that time (and also today), and it’s considered to be very complicated and incompatible with modern times.
This translated into lowered programmer productivity, who took a lot of time to solve problems they encountered during development.
<span class="colorbox1" fs-test-element="box1"><p>Key take-away: Go was meant to be easy to use and perfectly suited to creating large programming systems. Because of that, many programmers working together could efficiently debug complex projects.</p></span>
In 2009, Go became an open source project. Version 1.0 appeared in 2012 and now you can use version 1.13.
Golang was designed by Google engineers and is often used there for internal projects. Google Chrome and Google Earth were created in this way. It is also used in YouTube and Google App Engine.
One of the biggest companies using Golang is Uber. It is used there for the geofence service, which serves the user’s location and product availability. Geofence makes it possible to precisely define the area with special requirements (e.g. taking into account places such as airports) and to implement dynamic prices.
According to Kai Wei from Uber, the company has had very positive experiences working with Golang. The ease with which C ++, Java or Node programmers can switch to Go and the high bandwidth and delay performance have been appreciated.
The service has a guaranteed high reliability. It has been running continuously for 99.99% of the time since its commissioning. Rare downtime was caused by third-party libraries, while there were no problems in terms of the language itself.
In Twitch, Go is used for the most-loaded systems. It is appreciated for its simplicity, security, efficiency and readability, which means that it perfectly manages problems encountered when displaying live video and simultaneous chats of a large number of users.
Above all, however, Go enabled Twitch to improve 20 times the GC (garbage collection) factor responsible for automatically managing dynamically allocated memory.
Dailymotion is a video streaming website. Thanks to Golang, among others, automation of APIs has been improved.
This language makes it possible to carry out a large number of automation tests, which would otherwise cause huge loads. All because of Golang simplicity and its performance, as well as the possibility of static type checking.
SendGrid is a cloud based email service specializing in the delivery of transactional messages and the one of the biggest companies using Golang. It is mainly responsible for sending purchase confirmations, sending offers, processing incoming messages and forwarding customer inquiries.
The company uses Go as the primary programming language. The advantages of this language allow it to efficiently process over 500 million messages a day.
One of the challenges faced by SendGrid was the need for simultaneous asynchronous programming. This problem was solved thanks to the simplicity and elegance of the clearly optimized Go code.
Another argument in favor of switching to Go was the fact that the company’s developers have already used it widely to solve problems with SendGrid. It also reduced maintenance costs and resolved concurrency problems.
Dropbox, one of the leaders in cloud computing services constitutes another great example of a major company using Golang. It needs this language to scale its systems in a more efficient way. To this end, the company migrated its critical systems with Python.
To deal with the problem of insufficient depth of Go libraries and to be able to build larger systems, Dropbox began to build its own libraries.
This allowed them to improve caching, improve the standard error interface, enable programmers to generate SQL statements programmatically, and to implement fully functional memcache client libraries.
Dropbox plans to expand Golang libraries and make internally used libraries public on GitHub.
One of the biggest companies using Golang is SoundCloud. It decided to use Go language in addition to Ruby on Rails.
Its engineers described Golang as a WYSIWYG language, which means that the code entered does exactly what appears on the page. In addition, they appreciate the “one problem – one solution” philosophy, which means less time is spent thinking about the code.
For SoundCloud, the ability to perform static analysis in real time was also important, which was possible thanks to static typing and fast compilation enabled by Go.
This significantly accelerated the work on applications.
Currently, SoundCloud uses 6 services and a dozen or so repositories completely written in Go.
Go contains a relatively small number of well-known concepts from other languages, which lets it create the simplest code possible.
This has plenty of advantages.
One of them is that other developers don’t have to break through many lines of code, which is a great timesaver. This is important because reading the code is much more time-consuming than just creating it.
Creating small projects is possible using any software language, but you will encounter difficulties when you create projects that are really complex. They can require the cooperation of hundreds of programmers for many years, who have to work on millions of lines of code.
This leads to longer build times that interrupt product development.
The risk of errors is also increased because the code is rewritten myriad times and the programming styles of the project participants are varied.
Many companies use Golang because more complicated projects can be completed faster and work is more efficient.
It also reduces the risk of bugs, and their removal is faster and more effective.
<span class="colorbox1" fs-test-element="box1"><p>Key take-away: Development with Go is more efficient and it’s easier to handle bugs.</p></span>
Simple code means that the basics of the language can be learned in just one week of training and then you can start programming with it. In addition, documentation and many tutorials are available on the internet.
The language is based on the philosophy that there should be a small number of solutions to one problem (or preferably only one).
It differs from other languages, where it happens that there can be almost as many solutions as programmers…
This promotes the cooperation of large teams and additionally makes the code work faster and more efficiently.
The “one problem – one solution” philosophy means that many activities can be performed by a machine and the effects of this process will not be clearly different from the effects of programmers.
One of the pros seen by companies using Golang is that developers have many tools for automatic code maintenance at Go.
They enable, among others, code formatting and importing, searching for definitions and applications of symbols, and simple refactoring.
Programmers using Golang often perceive it as a C language devoid of its annoying flaws that reduce the efficiency of work.
In Golang, there are fewer situations where the finished code needs to be cleaned because it is simple and clear. At the same time, its syntax looks familiar to programmers, thanks to its similarity to C, which makes it easier to learn for people who know C.
Golang, as a language created in the era of modern processors, easily supports parallel processes (of course, there are also other languages supporting multi-core processors e.g. C#).
Most of the currently used software languages were created before the time of widespread use of the Internet. For this reason, they only offer general network support.
Using the standard Go library, you can create sophisticated web services without third-party libraries. This facilitates work as there are fewer options that implement the same functionality and fewer implementations than the one actually used.
In addition, external libraries may be of low quality and may not be secure enough. Appropriate support is not always offered and changes in libraries may be unexpected.
Compiling large code (even in languages that do it relatively quickly like Java or C ++) is time-consuming. Thanks to the fact that Go was designed especially for work on large projects, compilation of code written in this language is extremely efficient. As a result, the developer receives quick feedback.
The binary file in Go can be up to 10 times smaller than its Java equivalent. This advantage is particularly evident when deploying large applications (which companies using Golang often do).
When deployed on multiple servers, this can be very important because it significantly reduces file loading time. Implementations can also be made more often.
Thanks to the fact that Go is an Open Source software, a large community of programmers has been created around it. This promotes new solutions and provides users with extensive support through forums and tutorials. Above all, however, the community quickly detects and eliminates code errors.
Go is well-suited for developing microservices because it allows the creation of small, independent services that are easy to deploy and maintain. Applications written in Go typically have fast startup times and a low memory footprint compared to those written in languages like Java. This is particularly advantageous in a microservices environment where numerous services may need to be started and scaled dynamically.
Go's ability to compile into a single static binary with no external dependencies makes it ideal for containerization (e.g., using Docker). This simplifies the deployment process in a microservices architecture, where containerization is often a key component.
<span class="colorbox1" fs-test-element="box1"><p>Explore: Is monolith always worse than microservices, or is it just the hype?</p></span>
Its efficient performance in networked environments makes it a strong candidate for cloud-based applications and services.
Go’s efficiency in terms of resource usage makes it a cost-effective choice for cloud environments, where resource utilization can directly impact costs. Its performance characteristics and support for concurrency make it well-suited for scaling in distributed systems, which is a common scenario in cloud computing.
Go is backed by Google, ensuring regular updates and a strong ecosystem. The language also has a robust community contributing to its growth and stability.
Go (Golang) can be a good choice for legacy application modernization, depending on the specific requirements and goals of the modernization project. If the legacy application suffers from performance issues, rewriting critical parts or the entire application in Go can lead to significant improvements.
Go's syntax is straightforward and easy to understand, which can make the modernized application easier to maintain. This is particularly beneficial if the legacy codebase is complex or poorly documented.
<span class="colorbox1" fs-test-element="box1"><p>Explore: How to create a legacy app modernization roadmap?</p></span>
The Go language seems to be more relevant to the present day than most of the commonly used languages. Thanks to the simplicity and the principle of “one problem – one solution”, it allows the companies using Golang to work on large projects.
Every year, Brainhub helps 750,000+ founders, leaders and software engineers make smart tech decisions. We earn that trust by openly sharing our insights based on practical software engineering experience.
Full-stack software developer with 17 years of professional experience.
Software development enthusiast with 8 years of professional experience in this industry.
Top reads this month
Get smarter in engineering and leadership in less than 60 seconds.
Join 300+ founders and engineering leaders, and get a weekly newsletter that takes our CEO 5-6 hours to prepare.
No previous chapters
No next chapters