Episode 202: Andrew Gerrand on Go
Andrew Gerrand works on the Go programming language at Google. His conversation with Jeff begins with a history of the language, including the details behind how Go was conceived and how the open source community contributes to it. Andrew explains how Go intends to simplify problems which have been motifs as Google has scaled. The development of Go is an opportunity to fix issues that weren’t being considered when C was being designed. For example, dependencies are managed more efficiently, shortening build times. The conversation proceeds to a discussion of the unique interface model of Go, which encourages Go objects to have fewer responsibilities, allowing systems to be built with small pieces with small hierarchies. Next, the “slice” data structure is explored. A slice is a view of an array. Following this is a discussion of the concurrency model of Go, the import system, the garbage collector, and the compiler design. Andrew also explains some philosophies about syntax, development, and the standard library. Much of Go’s development is about deciding what can be left out of the language, so that it remains simplified. The conversation concludes with a discussion of the Go community and some suggested learning materials for getting started with the language.
Related Links
- http://golang.org/
- https://plus.google.com/+AndrewGerrand/about
- http://www.gophercon.com/
- http://tour.golang.org/#1
- http://golang.org/doc/effective_go.html
Podcast: Play in new window | Download
Tags: Andrew Gerrand, arrays, build times, C, compilers, garbage collection, Go, golang, Google, imports, interfaces, open source, readability, scalability, slices, standard library, syntax



Excellent and lively interview, with loads of very interesting background to how and why Go came into being. Its obviously still relatively early days for the whole project, but I’d definitely recommend this to anyone into software development of any kind – because it explains in practical detail the fundamental features that make dev languages better or worse, along with how Go is designed (and continues to be designed) to make a developer’s job much easier especially in a larger project.