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-selves?
Ron and Adrian: We work at The Hybrid Group, a software consultancy based in California. We are the creators of Gobot as well as several other frameworks and tools for open source robotics, such as Gort and Cylon.js. We’ve been on the “robot world tour” these last months, thanks to the popularity of our work, as well as the excitement behind the new maker movement and the Internet of Things (IoT).
Qs. Why and when did you decide to start working with Go?
Ron and Adrian: We decided to start getting serious about Go around September of 2013. Working with our Ruby robotics framework Artoo, we were running into some of Ruby’s performance limitations. We knew that Go would have the concurrency support, speed and portability which we need for our hardware and IoT applications. And it was true! Even though Go was originally intended for writing system software, it is really great for writing software for robots and connected devices.
Qs. How should one go about learning the Go language? What material (books, eBooks, online tutorials etc.) would you recommend?
Ron and Adrian: http://tour.golang.org/, http://golang.org/doc/effective_go.html and reading the Go std lib are a great place to start. There is a really active and friendly community, too.
Qs. What best practices are most important for a new Go programmer to learn and understand?
Ron and Adrian: Interfaces are a very powerful and important concept in Go programming. You may be tempted to use reflection as an early Go programmer, but 99% of the time you can use an interface instead of reflection and you will be much happier you did!
Qs. What are the pros and cons of Go that are being discussed in the development community and what is your opinion on that?
Ron and Adrian: One issue that keeps cropping up is dependency/package management. We love the fact that you pull your package dependencies directly from a source code repository, but having it pull the latest master by default with no configuration is a weak spot. Being able to specify a branch or tag in some type of Go package meta data file would be a great addition which will be appreciated by many people!
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?
Ron and Adrian: Documentation and tests are always a great place to start with a new project. It may not be as glamorous as developing new features, but writing tests or documentation for a project helps everyone and is always greatly appreciated by the project maintainers. Reading existing code well enough to write good tests for it is a great way to really learn how something works.
Qs. What has been your biggest challenge while working with Go?
Ron and Adrian: The transition from writing Go code which looked like dynamic languages like Ruby, to writing idiomatic Go code. Just let Go!
Qs. What types of applications are currently being developed in Go and what changes do you foresee over the next year or two?
Ron and Adrian: Currently there are a lot of backend servers being written in Go, but we think it will develop into a more general purpose application software language as well as targeting smaller size platforms. And of course, for robots and devices!
Qs. How do you see the market for Go Programmers in the work place? What is the future for Go?
Ron and Adrian: Go will definitely increase in market share and we for sure see Go replacing older Java applications, or alternatively rewriting projects written in a dynamic language which require more performance.
Qs. Do you have any other suggestions for our readers?
Ron and Adrian: You’ll write a lot of bad Go code before you start writing idiomatic Go. Don’t get discouraged! Go is a great language and it will make your programming life a lot simpler and faster. Use the built-in tools, Go is unique in that the tools help enforce a lot of good practices, if you use them correctly.
Thanks Ron and Adrian 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 Ron and Adrian would be glad to answer.
Tweet