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?
Piyush: I work as Director of Engineering at Siminars.com. Siminars is a SaaS based online platform that allows you to create quick and effective courses.
Qs. Why and when did you decide to start working with Go?
Piyush: We were primarily a Python based shop but we were hitting some problems of scale on our Subscriber/Publisher and Edge Rank model. That is when we decided to go for a framework or a language that has been written with concurrency in mind. That’s when we landed with Go. This was around early 2012. Go has been an important part of our production environment since then.
Qs. How should one go about learning the Go language? What material (books, eBooks, online tutorials etc.) would you recommend?
Piyush: The best approach is the DIY and dive into the manual. https://gobyexample.com/ is a very good piece explanation of concepts with examples that connect to Go playground. If you have the time and patience and want to get to the bottom of your concepts https://golang.org/doc/effective_go.html is a good place to be. I would suggest picking up a problem to solve on a weekend, and learn the language by what you expect it to do. Coming from a language like Python, the consistency here will nicely please you.
Qs. What best practices are most important for a new Go programmer to learn and understand?
Piyush: Spend some time understanding named and unnamed types. They are basis of your type interchangeability. Next, spend some time understanding the laws of reflection. It’s a great source of confusion but if you understand the DNA of types, they will save you a lot of time.
Qs. What are the pros and cons of Go that are being discussed in the development community and what is your opinion on that?
godepcomes quite close, but a good one can make matters just so convenient and strict where you don’t have to bother that fresh checkout might go get an incorrect version.
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?
Piyush: Check out the Go package management. Follow some Trending Go repositories. Start with bug fixes and some documentation to get a hang of the language, big project practices and a chance to code with seriously skilled people.
Qs. What has been your biggest challenge while working with Go?
Piyush: Getting a hang of interfaces and type assignability took me a long while. Also this “In the playground the time begins at 2009-11-10 23:00:00 UTC”.
Qs. What types of applications are currently being developed in Go and what changes do you foresee over the next year or two?
Piyush: Go is gaining great traction and a wide variety of applications are coming up varying from Puppet till gohadoop by hortonworks. I would like to see more of Go being used in Mobile application development. If we can get native android development bindings, it might make it a first choice language for a lot of developers. Who knows maybe iOS at some point of time?
Qs. How do you see the market for Go Programmers in the work place? What is the future for Go?
Piyush: There are a lot of job posts and there is a definite market for the language. It’s here to stay.
Qs. Do you have any other suggestions for our readers?
Piyush: Spend some time with the language. Try to solve some real-problems with the language. Don’t bias your expectations based on what you have been doing. Start with a blank slate and in no time you would be pleased with the speed at which you can start shipping production ready software.
Thanks Piyush 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 Piyush would be glad to answer.Tweet