Interview: Gopher Andrew Gerrand

Andrew Gerrand

Qs. Welcome and thanks for taking out time to share your thoughts. For the benefit of the readers, could you tell us something about your-self?

Andrew: I’m from Melbourne, Australia and now live in Sydney working at Google Australia on the Go project. I’ve been writing code since I was a little kid, and have been working in the industry since I was a teenager. Before Google I worked for various Internet companies using most of the common languages in that sphere (Perl, PHP, Python, JS, etc). At the same time I spent most of my personal hacking time writing assembly for 8-bit systems from the 80s. I also have a Bachelors degree in Fine Arts (my major was photography).

Qs. Why and when did you decide to start working with Go?

Andrew: I interviewed with Google just after Go was launched, and so I learned Go to use it in my interviews. It worked, apparently. I was hired to work on the Go team as a Developer Advocate; my mission was to make Go approachable and easy to use for programmers everywhere. Getting that job was a pivotal event in my life, both as a programmer and as a person. (I spoke a little about this in my GopherCon Keynote.)

Qs. How should one go about learning the Go language? What material (books, eBooks, online tutorials etc.) would you recommend?

Andrew: First stop is the Go Tour. Then get Go installed and you must read the “How to Write Go Code” page. Then, check out the articles linked from golang.org/doc/ and the Go Blog in general. I like Go By Example for lots of clean examples of Go in action. There’s also the very nice Learn Go in Y minutes document, which walks through most of Go’s language features.

If you’re the kind of person who would prefer to kick back and watch some videos, try my “Code that grows with grace” and “A simple programming environment”, as well as Russ Cox’s “A Tour of Go”.

Qs. What best practices are most important for a new Go programmer to learn and understand?

Andrew: New Go programmers tend to trip up on the build environment and package model. That’s why I stressed the “How to Write Go Code” document in my previous answer. It can be deceptively simple, but once you understand how it works it’s just awesome.

My more general advice to new gophers is: don’t be afraid to write code. A lot of programmers have this mindset that everything and anything should be as abstract as possible; heaven forbid we write one more keystroke than is necessary. (I have certainly been there myself.) Go sometimes makes you write a little more “in the small” as a tradeoff against systemic complexity. At first it can seem painful, but over time you start to see the benefits.

I talked about this in detail in my GopherCon Keynote.

Qs. What are the pros and cons of Go that are being discussed in the development community and what is your opinion on that?

Andrew: When Go was first released it attracted a lot of negative attention, largely because it was different to what people expected from a modern programming language. With its focus on simplicity, Go is pretty uninspiring for people who judge technology by feature lists alone. Over time, however, many developers have come to see benefit of the tradeoffs we have made.

In fact, I think Go’s presence in the ecosystem has gotten more programmers thinking about the complexity of their tools. That’s a good thing for everyone.

Qs. Most beginners in Go would like to contribute their time, skills and expertise to a project but invariably are unaware of where and how to do so. Could you suggest some?

Andrew: My advice here is to start somewhere that matters to you; where you can be the domain expert. Then as you gain experience you will naturally use libraries and tools from the open source ecosystem, and find ways to improve them by contributing fixes, new features, or documentation.

Docs are one place where people can start contributing earliest. It’s often the newbies who can best see where the documentation is lacking.

Qs. What has been your biggest challenge while working with Go?

Andrew: Letting go of old bad habits, and realizing that making something simple is much harder than just making something that works.

Qs. What types of applications are currently being developed in Go and what changes do you foresee over the next year or two?

Andrew: There’s a ton of exciting stuff happening in the Go world now. The language seems to be taking over the cloud infrastructure sphere, with Docker, Kubernetes, and Terraform leading the way. Projects like go-qml and the Android work scheduled for Go 1.5 are bringing decent native app development closer to a reality, which I am particularly excited about.

Qs. How do you see the market for Go Programmers in the work place? What is the future for Go?

Andrew: Go usage continues to grow, and with it the demand for Go programmers. Obviously, I’d like to see Go supplant Java as the language of choice for the enterprise. I don’t think that’s an unreasonable goal. It’s hard to see how exactly it will play out, but I think Go will be important in the programming world for years to come.

Qs. Do you have any other suggestions for our readers?

Andrew: If you want to learn Go, try using it for the very next thing you would write. When I started learning Go I decided to use it for everything: instead of bash for small scripting tasks, instead of Python for web apps, instead of C for low level system stuff, and so on. It was a great way to get up to speed fast., and you’ll be surprised how great the standard library is for most things (and how much open source code is out there). You won’t be disappointed.

Thanks Andrew for sharing your views with us. I am confident that your insights would help all the would-be Go programmers. In case you have any queries and/or questions, kindly post your questions here (as comments to this blog post) and Andrew would be glad to answer.


← Back to blog home
comments powered by Disqus