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?
Ketelsen: I am the CIO of a stealth startup using a 100% Go stack. I co-organize GopherCon along with Erik St. Martin, and also a co-author of the Manning Press book “Go in Action”. I am the creator of Skynet, SkyDNS and the once-useful RailsLiveCD Linux distribution that made it easy to spin up a Rails development environment long before tools like rvm existed.
Qs. Why and when did you decide to start working with Go?
Ketelsen: I investigated Go when it was announced in 2009, but didn’t really start writing Go applications until 2010. I was looking for ways to speed up pieces of a large monolithic Rails application that had grown too big. Go provided me a way to carve out small pieces of poorly performing Ruby code and gain some quick performance wins. It was this time period that I created Skynet, which was my first useful Go project.
Qs. How should one go about learning the Go language? What material (books, eBooks, online tutorials etc.) would you recommend?
Ketelsen: One can learn a lot using the resources available on the Go website, I strongly recommend reading Effective Go. I would be remiss if I didn’t also mention the book I’m co-authoring “Go in Action” by Manning Press.
Qs. What best practices are most important for a new Go programmer to learn and understand?
Ketelsen: If you don’t take the time to learn and truly understand Go’s interfaces, you’ll be doomed to write Go code that looks like your other favorite languages. I still catch myself writing Go code that looks like C or Ruby sometimes. Embrace interfaces and channels!
Qs. What are the pros and cons of Go that are being discussed in the development community and what is your opinion on that?
Ketelsen: One of the hottest topics right now is dependency management. I personally vendor all my dependencies using godep. Many people believe that this is a problem that should be solved by the language, but I disagree. I think that this problem is easily solved by the community and should be left to team preferences.
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?
Ketelsen: I frequently find new Go projects using this Github filter. I’d recommend looking at new projects that interest you and reaching out to the authors asking them to suggest small bugs or features that you can work on. Most open source project maintainers will be glad for the help, and a pull request is a great way to learn good Go style.
Qs. What has been your biggest challenge while working with Go?
Ketelsen: There are always challenges working with a younger language but my biggest frustration has been my inability to convince everyone I know, to stop writing code in other languages and start writing Go code.
Qs. What types of applications are currently being developed in Go and what changes do you foresee over the next year or two?
Ketelsen: There certainly seems to be a sweet spot on the server side for Go. Many operational tools are being written in Go, and it’s been proclaimed that Go is the language of the Cloud. Large projects like Docker and SkyDNS are relatively easy to write in Go, and they’re highly performant.
Qs. How do you see the market for Go Programmers in the work place? What is the future for Go?
Ketelsen: I’ve seen a tremendous increase in the demand for Go developers. I think that demand for Go developers will continue to rise quickly over the next few years as more and more companies realize that Go is built for developer productivity.
Qs. Do you have any other suggestions for our readers?
Ketelsen: Learn to use the amazing tools that come with Go, like go fmt
and go vet
. They’ll help to catch errors before they become problems. And in the case of go fmt
, having well formatted Go code will help others who are looking at your projects.
Thanks Brian 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 Brian would be glad to answer.
Tweet