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?
Sau: I’m the Director of Solution Engineering for PayPal, based out of Singapore. I head a team of engineers who develop innovative new products for PayPal all around the world, but in particular for the APAC region. I’m also an enthusiast programmer and have been programming web applications for close to 20 years. My primary programming language is Ruby, having published 3 Ruby books, the most recent is “Exploring Everyday Things with R and Ruby” by O’Reilly Media. In recent months though, I’ve been writing many of my applications in Go and I’m looking forward to doing more of that in the coming years.
Qs. Why and when did you decide to start working with Go?
Sau: I’ve always been keen to learn new languages and try different technologies. Go is amongst a few of the newer languages I’ve been exploring recently and I think so far it has been pretty rewarding. I looked at Go when it first came out, but it wasn’t really more than a toy language then. About 3 - 4 months ago I started re-looking at it more seriously and was pleasantly surprised that it’s pretty full-fledged now, with lots of libraries and a growing community.
Qs. What are you currently working on?
Sau: I’m working on a project called Polyglot, which is web framework that allows programmers to write web applications in multiple programming languages. The foundation pieces though, are written in Go (for its performance and size).
Qs. How should one go about learning the Go language? What material (books, eBooks, online tutorials etc.) would you recommend?
Sau: I normally learn programming languages through tutorials from the web until I’m pretty comfortable, then buy one or two more popular books to go in depth. Unfortunately at this moment, there aren’t any really outstanding Go programming books. I have been learning from the tutorials, blogs and also a lot from the package documentation. The closest thing to a book that I’ve used is the “An Introduction To Programming in Go”” by Caleb Doxey. It’s pretty basic but it’s a good foundation to build up those Go muscles.
Qs. What best practices are most important for a new Go programmer to learn and understand?
Sau: I think the fundamental ideas around structs and interfaces are probably the most useful initially. What a beginner who comes from an object-oriented programming background (like myself) should be aware of is that Go is both an object-oriented language and also not an object-oriented language.
Qs. Which areas in Go should a would-be Go programmer concentrate on, in your opinion?
Sau: New Go programmers should start from the basics and get familiar with the nuances and idioms in Go. While a lot of the syntax are familiar with C and languages that share the much of the syntax and keywords, there is sufficient differences in solving similar problems such as error handling, iteration, data structures and so on, that detailed attention reduces a lot of later pain.
One example is the use of arrays. Arrays in Go and arrays in something like Ruby for example, are similar yet quite different. Those who use arrays in Ruby are usually better served using slices, but slices have their own peculiarities that bear attention.
Qs. What are the pros and cons of Go that are being discussed in the development community and what is your opinion on that?
Sau: The most talked about advantage of Go is probably the speed of the software that is created with Go, and the simplicity of the language. For those who are more comfortable with dynamic languages, the static typing in Go are both a boon and a bane. While static types help to bring the errors and bugs associated with typing up front during compile time, the need to typecast sometimes confuses new Go programmers who are used to a dynamic typing.
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?
Sau: The best place to look for an open source project to contribute to is in GitHub. Beginners should try their hand at an area that they are interested in. For example, if he or she is interested in writing web applications, they should look at the various open source web application frameworks. First approach the framework by contributing to documentation and testing for the open source project, reading through the existing code and getting familiar with the roadmap of the project. Try to contribute feature pull requests only when comfortable.
Qs. What has been your biggest challenge while working with Go?
Sau: There are a few areas that remain tricky to me — data structures, interfaces and goroutines, because of various reasons. Data structures and interfaces are familiar yet different from how I would use them in Ruby, while goroutines are exciting and powerful but channels still remain difficult, but it is a challenge that is both exciting and enjoyable.
Qs. What types of applications are currently being developed in Go and what changes do you foresee over the next year or two?
Sau: Go applications are still very much focused on the server-side, with the client side Go applications almost non-existent. I foresee that is going remain in the near future but I do wish more can be done for client-side software, for example a robust and powerful GUI toolkit.
Qs. How do you see the market for Go Programmers in the work place? What is the future for Go?
Sau: Go is in an exciting phase now, where the velocity of programmers picking it up is increasing, and more companies are willing to try and use Go in production. In my company PayPal, Go is being used in PayPal Beacon, a Bluetooth Low Energy device to connect to a customer’s PayPal app when they enter a store. Companies like Google, Heroku, SendGrid, SoundCloud, CloudFlare and many others are also using Go in production. In Singapore, companies like Viki and Nitrous.IO are also using Go as part of their production stack. The future is certainly bright for Go.
Qs. How excited are you about GopherConIndia 2015?
Sau: I’m super excited that GopherCon is going to Asia. Go has big presence in various Asian countries and certainly Asia deserves a large Go conference to help boost its awareness. I’m also very happy that the conference is bringing developers around the world, yet showcasing local talents. I believe the biggest benefit of attending conferences is the opportunity of interacting with others in the same community and learning from each other. I hope GopherConIndia 2015 will be the first of many.
Qs. Do you have any other suggestions for our readers?
Sau: This is exciting times to pick up and start using Go. Momentum is definitely on the side of the Go programming language. I believe within a few years, Go will be a major mainstream programming language, and GopherConIndia will be a major event in the global calendar of Go conferences.
Thanks Sau 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 Sau would be glad to answer.
Tweet