“It’s very much India’s Go Conference. It’s not just us coming in and talking at you,” says Dave Cheney, an Australian speaker, blogger, and open source author. Dave co-organizes the Sydney Go Users group and has been an active contributor to the Go project since February 2011. He spent some time during GopherConIndia 2015 to talk with Atul Jha, Community Manager for The New Stack, for this episode of The New Stack Analysts.
Atul shares his reflections here on GopherCon India, which was held in his own city of Bengaluru and had an invitee list of about 350 participants. Also at GopherCon India and joining Atul for the podcast were:
- William (Bill) Kennedy, managing partner at Ardan Studios, a mobile and web app development company in Miami, Florida. Bill is a co-author of the book Go In Action, the author of the blog goinggo.net, and the organizer for the Go and MongoDB Meetups in Miami.
- Julia Poladsky, a frontend developer for CommericialTribe in Denver, CO.
- Francesc Campoy Flores, who joined the Go team in 2012 as Developer Advocate after several years as a Python and C++ developer.
- Verónica López a mobile developer and computer science researcher at UNAM (Mexico’s National Autonomous University) focusing on data structures, and was the lead mobile developer of Mexico’s tax collection service (SAT).
- And, Satish Talim, organizer of GopherConIndia.
For more episodes, check out the podcast section of The New Stack.
Speaking with Dave, Bill and Julia in Part One of the podcast, Atul focuses the discussion on using Go for front-end development.
“At Ardan Studios we were originally building the front ends and all of our APIs in Ruby,” says Bill. “My business partner, Ed, was very hesitant to even learn Go because he was moving so fast in Ruby.”
“He didn’t want to lose that,” Bill recalls, “but he started seeing articles, and more and more about the performance gains that everyone was seeing switching over to Go.”
Bill says that Ed was able to pick up golang in about two weeks, “then he just went head-down and replaced all of those Ruby APIs for one of the products that we were building in a couple of weeks.”
“He was so excited that he had this super-fast API now. He saw it, too, from our Outcast mobile app,” says Bill. “He saw immediately the response time he was getting back on the app and he was just freaking out.” Through his new venture GoingGo Training, Bill continues the cause by working with individuals and groups who want to take their Go knowledge and coding skills to the next level.
“Performance is one of the reasons why people are moving to Go,” says Dave. “In Go there’s exactly one HTTP server, and it’s exactly the one that you run on your laptop. It’s the one that you run in staging; it’s the one you deploy in production. In Go, the HTTP server package powers every Go-backed website out there, and it has the capacity to handle more traffic than a machine can.”
For making the transition over to Go, Atul asks about what frameworks are available for developers. Bill recalls that Ed asked for an MVC framework during the transition to Go. “He wanted it really bad,” Bill says, “and we ended up choosing Beego.”
“But,” says Bill, “as Ed got more comfortable with Go and started reading more and learning that he could do more, he realized that he didn’t need this framework, and he ended up doing his own stuff with the standard library.” Nevertheless, Bill recommends frameworks like Revel, Beego and Negroni as possible frameworks and middleware to help developers transition.
Julia says that she started learning Go in order to broaden her experience as a developer and engineer. Julia’s expertise is in designing and developing client-side applications. She has worked with a number of different web-based technologies such as PHP, Node.js and now Go. She is self-taught and has been hacking web design and development since the age of twelve.
But making the transition also involves a mental paradigm shift. “Part of learning Go and becoming proficient in Go is to accept the common idioms that we use,” says Dave. “Come with an open mind to Go and don’t try and apply your pre-conditions from your previous language to it.”
Bill expands on this idea of leaving preconceived ideas behind: “I don’t have to understand how the processors work and how caching works and all of these things if I follow the idioms. I’m going to get all of that knowledge for free, because it’s built into the language,” he says. “One of the reasons Go out-performs so many other languages is because mechanical sympathy was built into the syntax and implementation,” says Bill.
Part One of the podcast wraps with a discussion on the variety of resources available for Go education, and with glowing reviews of GopherConIndia. For developers wanting to learn more, there are a variety of helpful resources and an exponentially growing community around Go. Bill mentions that there are new blogs about Go popping up all the time, plus the mailing list, Slack, Twitter and IRC. Dave emphasizes the diversity of resources: whether they are interactive or otherwise, there’s something for everyone, and he mentions Damien Gryski as one resource who has been curating every Go-related presentation out there.
In Part Two with Francesc, Verónica and Satish, Atul further explores developers’ transitions to Go.
Satish notes that in India it’s a service industry, and that people emulate whatever happens in the US. “There are a lot of requests coming in from the US for back-end jobs and DevOps which can be done in Go,” says Satish. “Whether it’s startups or relatively big companies, they are are on the lookout for Go developers, so it’s going to increase very rapidly.”
“We’re going to keep on improving the runtime, making it better every day,” says Francesc, adding that the Go team is migrating all of the codebase from C to Go. “That means that the whole community is able to contribute,” says Francesc, who is excited about his mission to make Go useful and fun.
Atul asks what is attracting cloud providers to Go, instead of to other languages.
“You can compile it, get a binary and just distribute it,” explains Francesc. “That, for the cloud, is awesome. If you’re going to distribute something to hundreds of servers, and you have to handle dependencies for every one of those servers, there are lot of things that are going to break. There’s a solution for that: you can use Puppet, and so on. But that’s actually adding complexity to your solution, and Go provides this really simple way.”
Verónica’s switch to Go came when she led the back-end team of an advertising digital agency, and was looking for ways to improve things there. “When I arrived (at the digital agency), they had half of the code in PHP and half of the code in Python with Django,” she recalls. At the time she was still new to golang, but Verónica was in a unique position to recommend switching to Go.
The agency agreed, but with some reservations, due in part to the scarcity of Go programmers in Mexico, and the possibility of being left without a Go programmer if Verónica were to leave. Consequently, Go was limited to the servers and to smaller projects. Another issue was training the existing team comprised partly of PHP and Django developers.
“Then I discovered GopherCon,” says Verónica, “and I love the community.” Verónica praises the friendliness and openness of the Go community, compared to other communities she has been a part of.
Atul wonders whether Verónica misses anything about the previous programming languages that she would like to see implemented in Go.
“I’m a former physicist, so I used to do a lot of Python simulations,” Verónica says. “So I would like to create, or see someone create, some sort of scientific or math thing for Go, because it’s a really suitable, straightforward language for that.”
“I used to do a lot of C++,” says Francesc, “and when I joined the Go team, I really missed generics, but then I understood that the way I was writing my code was the way I used write C++ code, and that’s not the way you write Go, so I don’t miss it anymore.”
“I love doing graphic things. I’m excited about being able to do OpenGL things,” Francesc says, “but I would like to do more than that. I would like to have some way of either generating video from the server and playing it into the browser, or having a desktop app that’s fully ready in Go.”
For developers switching to Go, Francesc suggests a number of resources and not being afraid to ask for help, but he also suggests freeing oneself from prior programming languages in order to best embrace the philosophy of Go.
Verónica agrees, and adds that, “For beginners, it is useful to first try to get all of the documentation, all of the online resources, the literature, everything.” Join the community and be receptive, she says, but be advised that your initial questions have probably already been answered in the growing knowledge base.
From his perspective, Satish admits that jobs might not be waiting at the end of everyone’s Go training, and that other languages may be a higher priority for new developers entering the workforce. But, for established developers who want to make a shift, or if their current company is stuck in an old language and isn’t adapting, Satish sees no downside to learning Go: “If they’re really keen, there are so many ways of getting and learning Go. Look at GitHub, look at the popular projects, read the documentation, contribute, and start developing.”