Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Happy Path To Go - GothamGo 2018

Avatar for Jonas Jonas
April 27, 2018

Happy Path To Go - GothamGo 2018

You’ve been hired for an exciting new role where you’ll use Go for the first time. After your whirlwind week of training, guess what? You have to transition your team of engineers to Go. Good luck! This talk gives practical advice for building a learning culture that empowers engineers to master Go.

Avatar for Jonas

Jonas

April 27, 2018

More Decks by Jonas

Other Decks in Technology

Transcript

  1. Adam Smith Job Responsibility • CMS engineer responsible for all

    website related features • Drupal module development Experience • 5-10+ years with the Economist • Extensive Drupal community contributions • Javascript, CSS, PHP, MySQL Goal • Escape a limited enterprise system in search for a flexible, adaptive technology solution
  2. Allie Greenspan Job Responsibility • Backend Engineer responsible for content

    distribution platform and API • Microservice development Experience • 2-10+ years with the Economist • AWS environment with emphasis on devops • Golang, SAM, Node.JS Goal • Apply their new technology toolset to deliver evolving business needs
  3. Drupaler to Gopher How do you transform a team of

    CMS developers to a team of happy Gophers?
  4. Exchange Rates package blogs type Blog struct { ID string

    `json:"id"` Site string `json:"site"` Zone string `json:"zone"` } func (b *Blog) SetSite(site string) { b.Site = site } func (b *Blog) SetZone(zone string) { b.Zone = zone } package article type Article struct { ID string `json:"id"` Zone string `json:"zone"` Site string `json:"site"` } func (a *Article) SetSite(site string) { a.Site = site } func (a *Article) SetZone(zone string) { a.Zone = zone }
  5. The Invisible Hand PPROF and ExpVar • PPROF collects CPU

    profiles, traces, heap profiles, and mutex profiles. • Expvar exposes variables via an HTTP endpoint. It can also expose standard metrics such as memory usage and custom metrics
  6. When you transition a team, suddenly everyone is a rookie

    and you’ll inevitably ship some questionable code to production. • Goroutine Happy: Let’s put this in a Goroutine because it’ll be faster then right? • Interfaces? Yea I guess we should use those more. • Let’s import a library for every new functionality we need. Actually, looks like we can do it with the standard lib Market Failure
  7. White Papers • Submitters: Include explanations for your approach. Include

    an overview of the functionality, special processing, key decisions, and any areas of uncertainty • Reviewers: Ask clarifying questions. Cite GoDocs and other blogs or resources when recommending changes.
  8. Wealth Redistribution • Pairing • Brown bags • Team demos

    • Rotations on stories • Documentation • Community!
  9. • Recognize what is not the same about Go •

    Consider adopting TDD and a methodology for learning Go • Familiarize your team with tools like PPROF to better understand more complex Go concepts • Refactor early and often • Peer Review like your life depended it on • Create opportunities for team knowledge sharing • Celebrate Economies of Scale