Dave is an Australian speaker, blogger, and open source author. He co-organises the Sydney Go Users group and has been an active contributor to the Go project since February 2011. Here, in this brief interview, the GopherConIndia team talks to Dave Cheney.
Qs. Why and when did you decide to start working with Go?
Dave: I was first exposed to Go when I saw the presentation by Rob Pike in 2009. I was impressed by the language’s goals of simplicity and pragmatism which were clear in that first presentation.
I rediscovered Go in 2010 with this presentation and soon after had an opportunity to use it for a project I was working on at the time. From that point I was hooked, spending as much free time as I could using the language, on the IRC channel, contributing to the mailing list and writing about Go on my blog.
I became a contributor in February 2011 and a committer in April 2012.
Qs. What are you currently working on?
Dave: By day I work on Juju, Canonical’s first public Go project.
Work at Canonical tends to align to our six monthly release cycle, and my major contribution for the last cycle, aside from my day to day roles as a Juju programmer, was to get Juju up and running on the IBM PowerPC platform using gccgo.
Last year I collaborated with Aram Hăvărneanu to port Go to Solaris, which shipped in April with the 1.3 release.
Outside my day job, my main focus is the port of Go to ARM. In addition, I try to help out by reviewing commits and triaging the bug queue. I also maintain quite a few of the dashboard builders which power Go’s home brew continuous integration system.
With Andrew Gerrand, I run the Sydney Go users meetup group, which doesn’t meet as frequently as it should due to our travel schedules.
I’m off to Canberra in a few weeks to help them start a regular Go meetup.
Qs. Where do you see Go in the foreseeable future?
Dave: Go started as a language to write large software programs, or more correctly, a language where a large number of programmers could collaborate on a software project; at the time this meant the large distributed projects inside Google.
Since the 1.0 release in 2012, in addition to solidifying its usefulness on the server side, some other interesting use cases have emerged:
Qs. How should one go about acquiring knowledge and skills in Go? What’s the best approach?
Dave: I am told that people learn in a variety of ways, so I can only relate my own experiences.
I’m an experiential learner, and tend to show little interest for learning without a specific goal in mind. That said, when I do have a goal, I tend to engross myself in it, and that often leads to many diversions into related fields.
Although I’ve programmed in many languages throughout my life, I don’t consider myself a polyglot, preferring instead to focus on one language at a time.
I think this is the best way to truly understand Go and learn to work within its strengths, and weaknesses, rather than being distracted by the continuous choice of an array of languages.
In summary, my advice would be:
Qs. Which areas in Go should a would-be Go programmer concentrate on, in your opinion?
Dave: This may be a little controversial, but my advice is to avoid, at least initially, the concurrent aspects of Go; channels and goroutines.
This may sound strange as these are one of the headline features of the language. This is not to say that the concurrent aspects of the language are too hard for new programmers to learn; they are not. However they are easy to overuse, and Go is a language which responds well to moderation.
If you were unfortunate enough to use the go.crypto/ssh library before Han-Wen Nienhuys and Jonathan Pittman cleaned up my egregious overuse of channels, you’ll know what I mean.
Some concrete advice might be:
Qs. How excited are you about GopherConIndia 2015?
Dave: Over the last few years I’ve had the opportunity to visit and speak to Gophers in several countries. I’ve decided to make it my goal to visit each of the Go communities in the Asia Pacific region.
I am delighted to be invited to speak at GopherConIndia in 2015.
Qs. Do you have any parting words for our readers? Anything you would like to share with them?
Dave: The Go community is clearly growing, but remains fractured by the tyrannies of distance and the barriers of language.
Conferences like GopherConIndia 2015 are an excellent opportunity to meet other Go enthusiasts, but there are many other ways that you can contribute to the growth of the community.
One way is if you are interested in Go, dabbling with it on the side, or using it professionally, consider visiting your local Go meetup if there is one, and consider speaking if that is something you are comfortable with.
If you have the opportunity to travel, and have the ability to, make the effort to visit the Go community at your destination.
Visiting user groups is a way to demonstrate to people who are considering the language that there exists a wider community of users, supporters, and employers, than are visible inside that room.
This really is a case where the whole of the Go community is greater than the sum of its constituent parts.
Thanks Dave 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 Dave would be glad to answer.Tweet