April 7, 2020

Go Remote Meetup - Notes from the Meet and Greet

We had a nice first session of the Go Remote Meetup today, welcoming guests from the Americas, Europe, and India. Following some quick introductions, we focused on a couple shared topics for discussion.

Learning Go

As is common among developer communities, we have a wide range of backgrounds and quite a few new programmers. One question that got many responses was: what tutorials are people using to learn go?

In no particular order, our responses were:

I’m reminded how eager the go community is to teach and improve one anothers skills! The last item in this list, by Paul Balogh, interests me in particular. It’s an end-to-end demonstration of an application, complete with a CLI and Docker contained API server. Such demonstrations are particularly useful for students, as they give a view of a working application to study in the abscence of on-the-job experience.

Build Processes

Another interesting question that came up: how do go programmers structure a build system? Say you’re tasked with restructuring a legacy project, what’s the approach that people reach for?

One common pattern is to use a build enviornment like Jenkins to run tests and produce a Docker image. The image then gets deployed to Kubernetes running on AWS – I presume EKS. Consensus seemed that Docker is the state-of-the art in preparing applications for deployment.

I might add a few more options in addition to the Jenkins workflow described in the meeting:

  • GitLab’s CI/CD; this has excellent integration with both the git repository storage and with GCP Kubernetes platform
  • Amazon Web Services’ CodePipeline; I personally find CodePipeline far inferior to GitLab in terms of usability, despite having the convenience of being within the security boundaries of your AWS account
  • TravisCI (golang example), one of the earlier CI/CD platforms and widely used by many projects, including go itself

Note that, if requirements state the the build process cannot occur in the cloud, Jenkins or a self-hosted GitLab instance likely are the best two options.

Career Path

Another excellent pair of questions: What’s the path to becoming a good go programmer? What does that path look like if you don’t need to be a full-time developer?

I didn’t think of it at the time ( which is why I write these notes! ), but a good place to look for answers is the Go Annual Survey. In fact, Paul’s answer (roughly, “look into DevOps teams” ) matches the 2018 survey’s observations almost verbatim.

I assumed that the majority of attendees had a “tradition” computer science backround, unlike myself – the StackOverflow Developer Survey, for instance, might suggest that I’m more likely than not to meet a CS major than a non-CS major during these meetups. This turned out to be untrue in today’s meeting. Many of us had learned programming after encountering computers during the course of our previous careers. So it’s probably healthier to assume that there is no one path to writing code for work.

Announcements / Local Concerns

Some firms still remain in a hiring freeze. Partly this is due to financial considerations; sometimes, the company wishes to wait until in-office operations return to normal. Perhaps a topic for conversation next time will be, “how do we get our organization to work distributively?”

We have another meet and greet scheduled for the Asia time zones: GMT/+9 : Remote Developers Meet and Greet/GMT/+9 : Remote Developers Meet and Greet. This session has been dual-scheduled on the Tokyo Gophers Meetup and the Go Remote Meetup, respectively.

We’re also looking forward to GMT/+2 : Cloud-Native Go Dev-Environment: A Year Later at the end of the month.

Content by © Jared Davis 2019-2020

Powered by Hugo & Kiss.