The IT world never stands still. But over the past few years, the pace of change has been straining even the most advanced systems. With the amount of data and connections exploding, even the largest companies may find themselves struggling to keep up.
In fact, in today's environment, the bigger you are, the more problems you're likely to have. And nowhere is this more evident than at the likes of Google. Being one of the largest software developers in the world, the scale it deals in is massive, and is growing at a huge rate.
The challenges facing Google
Google has to deal with millions upon millions of lines of code within its software, with multiple programming languages being used. Servers are mainly in C++, while other pieces tend to rely on Java and Python.
Thousands of engineers are working on this code throughout the enterprise, which means that on any given day, there will be significant changes being made at all levels of the software tree. Even though Google uses a huge, custom-designed distributed build system to help make development at this scale feasible, it's still big, which in turn means it is slow and clumsy to roll out new developments.
Common pain points that Google and other large, sprawling companies face as a result of this scale include the length of time it takes to build software, and a lack of interoperability as each programmer or group uses a different subset of the language, which in turns leads to duplicated effort as teams have to reconcile different versions.
This means higher costs, more difficulties in writing automatic tools and cross-language builds, and more uncontrolled dependencies.
A different approach - Google Go
Having recognized these issues, Google realized a solution was needed, and the result of its efforts was Google Go. This has actually been around for a number of years now, but as more companies grow and encounter the same challenges of scale that Google has been dealing with for years, it is starting to gain wider attention.
This is because Go is not just another programming language. It actually takes a different approach to software development that is specifically intended to make the process more productive and scalable. It was designed by and for people who write, read, debug and maintain large software systems, so aims to address many of the particular problems that arise when working in these environments.
Go is a compiled language, which means users can enjoy a performance level comparable to native C code. However, Go also provides many of the high-level features that are common in interpreted languages, such as garbage-collection. Additionally, it integrates concurrent programming concepts, which is hugely beneficial when programming for multi-threaded, multi-core platforms.
At first glance, Go may appear to lack some key features that developers will have become used to. For instance, one of the main differences with Go is that it doesn’t use the concept of 'classes'. Instead, everything is divided into packages.
These features make Go function very differently to other object-oriented languages, and may take a bit of getting used to. However, the benefits of this makes putting the effort in worthwhile. It may mean adding a few more lines of code, but the end result will be an application that is far easier to manage for large development teams.
How Go changes things for big firms
Using Go can therefore transform how large firms develop new tools. Because the language has been designed from the ground up to address a very specific set of problems faced when working at scale, it is a much more focused approach. This means it has many unique features that address issues that may only become apparent when firms are working on programs that include tens of millions of lines of code.
Go focuses on simplicity, clarity and composability throughout its design, making it a productive, intuitive language that is more enjoyable for developers to work with. This simplicity also means that applications developed in Go are much easier to maintain.
Any member of the engineering team - which may encompass hundreds or even thousands of individuals in the largest companies - should be able to pick up from where their colleagues have left off and code in exactly the same way.
This better productivity and ease of use translates directly into improvements on the bottom line. As well as time saving, the language's ability to handle large amounts of load with less memory and CPU cycles also means reduced hardware costs. Some organizations have reportedly been able to move from using 30 servers to just two by migrating to Go, without any reduction in load. For the largest companies, the savings could therefore be huge.