How To Convince Your Team To Use Golang in Your Company
After talking with thousands of people I came to know there are many people out who want to either work on Golang or want to make use of Golang in their project but are unable to do it.
Some of the following was the reason why they were not able to use Golang in their project or their company:-
1. Working with a team that prefers to use another language.
2. The team member said Golang lacks language features they need
3. Technology decision-makers of the company were not ready to migrate existing technology to Golang
4. Technology decision-makers of the company were not ready to adapt Golang
To help my connection, I decided to write some informative content that will help them to convince their Team to use Golang in the project/company.
Quick History of Golang and its Creators:
Golang is a statically typed, compiled programming language designed at Google by Rob Pike, Ken Thompson, Robert Griesemer. Golang is syntactically similar to C, but with memory safety, garbage collection, structural typing, and CSP-style concurrency.
About Golang’s Creator:
Ken Thompson : He is Creator of Original Unix & C Language(Along with Dennis Ritchie )
Rob Pike: He is Member of Unix Team creators and Creator of Plan 9 from Bell Labs
Robert Griesemer : He worked on code generation for Google’s V8 JavaScript engine, the design and implementation of the domain-specific language Sawzall, the Java HotSpot virtual machine, and the Strongtalk system.
Why Golang was created?
The Free Lunch Is Over A Fundamental Turn Toward Concurrency in Software By Herb Sutter. The biggest sea change in software development since the OO revolution is knocking at the door, and its name is Concurrency.
Herb Sutter says that Your free lunch will soon be over and what can you do about it and What are you doing about it. The major processor manufactures were busy in their traditional approaches for boosting the CPU performances. Soon core, dual-core, and then multicore came in the picture but this was not sufficient as no matter how fast processors were, the software was consistently finding their new ways to consume the extra speed the limitation on hardware optimization was seen, and which caused the physical barriers.
This physical barrier inspired Golang’s implementation.
Previously performance on the servers side was dictated by adding more and more cores to the CPU. Multicore is not only expensive but also not indefinitely scalable. Applications, where multicore is used, cannot always be able to exploit them. And the overhead caused due to synchronization between the operations has a direct impact on performance. In such an incidence the compute-intensive operations like deep learning, simulation, engineering can get parallelized.
The languages build before were not natively build to take full advantage of all the Cores of CPU. Golang is built to take full advantage of modern hardware, Golang has concurrency inbuild in the language itself and it’s easy to take full advantage of all the cores of CPU if we have to write programs in Java/Python to take full advantage of CPU we have to use multi-threading and have handle communication between multiple threads and it becomes a tedious job for a developer write such programs, where in-case of Golang it very easy to use core features like Goroutines, Channels to communicate between multiple co-routines.
Some Golang Features
1. Concurrency : Golang offers an inbuilt concurrency feature which makes Golang extremely easy language to implement concurrent systems. Golang has goroutines which are its fundamental unit. Goroutines are cheap, lightweight threads. Spawning a goroutine is simple in Golang.
2. Standard library : The Golang has a great standard library. Libraries related to network protocols, API developments, etc.
3. High performant: Golang compiles to a single native executable that can run on any operating system. Many users of Golang come from Python, Ruby, or Node.js. For them, this is a mind-blowing experience as they see a massive increase in the number of concurrent requests a server can handle. Golang’s garbage collector is designed to prioritize latency and avoid stop-the-world pauses, which is particularly important in servers. This may come with a higher CPU cost, but in a horizontally scalable architecture, this is easily solved by adding more machines. Compared to Java, the Golang GC also has less work to do: a slice of structs is a contiguous array of structures, and not an array of pointers like in Java. Similarly, Golang maps use small arrays as buckets for the same purpose. This means less work for the GC, and also better CPU cache locality.
4. Standardized test framework : Go comes with a great test framework in its standard library. It has support for parallel testing, benchmarks, and contains a lot of utilities to easily test network clients and servers.
Golang Performance Related Case Studies:
1. http://marcio.io/2015/07/handling-1-million-requests-per-minute-with-golang/
2. https://peabody.io/post/server-side-io-performance-node-php-java-go/
Popular tools built using Going:
1. Container: Docker
2. Container Orchestration: Kubernetes
3. Service Mesh: Consul, ETCD, Istio
4. Blockchain: Hyperledger Fabric , Ethereum
5. Tendermint
Some Success Stories:
- Building a modern Bank on Golang
- From 30 Servers to 2 using Go
- Uber: How We Built Uber Engineering’s Highest Query per Second Service Using Go
- The Business Benefits of Building Your Next Project With Go
- Some more links
Total Golang Developers in the world:
1.15–1.96 million Golang Developers Worldwide
Golang Community
Below are two of the articles, one about Golang’s increasing demand based on the Golang Survey and why Golang is one the preferred technology for your project which will help you to understand the Golang demands graph and Some major features of Golang that will you to convince your team for adapting and get ready to Go with Go (Golang)
-> Some Interesting Facts and Takeaways from Golang Survey
-> Here Is Why Golang Is One Of The Preferred Technology For Your Project