Slide 1

Slide 1 text

How to Raise a Gopher in Record Time Tiffany Jernigan @tiffanyfayj

Slide 2

Slide 2 text

@tiffanyfayj Raising a Gopher ● Gophers eat more than half their body weight in food a day ● They particularly like plants/vegetables ● They love digging holes

Slide 3

Slide 3 text

@tiffanyfayj Who Am I? ● Georgia Tech - Electrical Engineering ● Intel - Product Dev Engineer, Software Engineer ● Docker - Software Engineer Consultant ● Amazon - Developer Advocate ● I am learning French (J’apprends le français)

Slide 4

Slide 4 text

@tiffanyfayj Who Will This Help? ● You've heard about Go ● You're interested in learning the language ● You want to start on the right foot ● You’re interested in learning more ● You want to help someone else learn

Slide 5

Slide 5 text

@tiffanyfayj Why Learn Go? ● Not niche anymore! ● Adapted for concurrent I/O ● Readable ● Fast ● Compiles into single binaries ● Great for ○ Distributed systems ○ Microservices Can’t use this excuse as easily :P

Slide 6

Slide 6 text

@tiffanyfayj Outline ● Where to Begin? ● More Websites ● Tools ● Training ● Coding Practice ● Communities ● Conferences

Slide 7

Slide 7 text

Where to Begin? Where to Begin?

Slide 8

Slide 8 text

@tiffanyfayj Where to Begin? ● Tour of Go ○ https://tour.golang.org ○ Basics to advanced topics (e.g. concurrency) ○ Examples ○ Exercises ○ Available in many languages ○ Available offline

Slide 9

Slide 9 text

@tiffanyfayj Where to Begin? ● Godocs ○ https://golang.org/pkg ○ What are they? http://blog.golang.org/godoc-documenting-go-c ode ○ Offline godoc -http=:6060

Slide 10

Slide 10 text

@tiffanyfayj Where to Begin? ● Source code ○ https://golang.org/src ○ https://github.com/golang/go

Slide 11

Slide 11 text

More Websites More Websites

Slide 12

Slide 12 text

@tiffanyfayj Code Examples ● Go by Example ○ https://gobyexample.com/ ○ Has code as well as explanations and output ○ Shows more general concepts

Slide 13

Slide 13 text

No content

Slide 14

Slide 14 text

@tiffanyfayj Code Examples ● Socket Loop ○ https://www.socketloop.com/ ○ Has code comments and output ○ Not as verbose as Go by Example ○ Generally longer code blocks

Slide 15

Slide 15 text

No content

Slide 16

Slide 16 text

@tiffanyfayj Blogs ● Official Golang blog ○ https://blog.golang.org/ ○ Written by Googlers who work on Go ○ Detailed descriptions of every big release

Slide 17

Slide 17 text

@tiffanyfayj Blogs ● Dave Cheney’s blog ○ http://dave.cheney.net/ ○ Frequent and very informative posts ○ My go to for learning about channels ■ http://dave.cheney.net/tag/channels ○ http://dave.cheney.net/resources-for-new-go-p rogrammers

Slide 18

Slide 18 text

No content

Slide 19

Slide 19 text

@tiffanyfayj Blogs ● Bill Kennedy’s blog ○ https://www.goinggo.net/

Slide 20

Slide 20 text

No content

Slide 21

Slide 21 text

@tiffanyfayj Blogs ● Gopher Academy ○ https://blog.gopheracademy.com/ ○ Written by several people

Slide 22

Slide 22 text

Training Training

Slide 23

Slide 23 text

@tiffanyfayj Online Training ● Todd McLeod ○ https://www.youtube.com/user/toddmcleod ○ https://github.com/GoesToEleven/GolangTrain ing ● Pluralsight ○ Nigel Poulton https://app.pluralsight.com/library/courses/go- fundamentals

Slide 24

Slide 24 text

@tiffanyfayj Workshops ● Ultimate Go by Ardan Labs/Bill Kennedy ○ https://www.ardanlabs.com/ultimate-go ○ https://github.com/ardanlabs/gotraining ○ Basics through more advanced concepts ○ Examples and exercises ○ On site assistance

Slide 25

Slide 25 text

@tiffanyfayj Books ● The Go Programming Language by Alan A.A. Donovan and Brian W. Kernighan ○ http://www.gopl.io/ ● Go in Action by Bill Kennedy, Brian Ketelsen, and Erik St. Martin ○ https://www.manning.com/books/go-in-action ○ Code samples https://github.com/goinaction/code

Slide 26

Slide 26 text

Tools Tools

Slide 27

Slide 27 text

@tiffanyfayj Editors ● Go Playground https://play.golang.org/ ● Vscode (what I use--with vscode-go) https://code.visualstudio.com/ ○ Can have Delve debugger ● Sublime (with GoSublime) https://www.sublimetext.com/ ● Vim (with vim-go) http://www.vim.org/ ● And there are many more

Slide 28

Slide 28 text

@tiffanyfayj Tools ● Gofmt ○ https://golang.org/cmd/gofmt/ ○ Formats your code to the Go standard format ○ I have format on save set

Slide 29

Slide 29 text

@tiffanyfayj Tools ● Goimports ○ https://godoc.org/golang.org/x/tools/cmd/goim ports ○ Automatically will add packages you’ve used to the imports when you save

Slide 30

Slide 30 text

@tiffanyfayj Tools ● Autocomplete ○ https://github.com/nsf/gocode ○ Start typing and it will show options ○ Very helpful for learning

Slide 31

Slide 31 text

@tiffanyfayj Tools ● Godef ○ https://github.com/rogpeppe/godef ○ Jumps to where the code you’re looking at is defined

Slide 32

Slide 32 text

Coding Practice Coding Practice

Slide 33

Slide 33 text

@tiffanyfayj Coding Challenges ● These aren’t Go specific, but you have the option of using Go ○ https://www.hackerrank.com/ ○ https://www.codeeval.com/ ● The monthly Go Challenges ○ http://golang-challenge.org

Slide 34

Slide 34 text

@tiffanyfayj Projects ● Recreating previous projects you’ve done ● Finding a project to do ○ Golang Github wiki ■ https://github.com/golang/go/wiki/Projects

Slide 35

Slide 35 text

@tiffanyfayj Testing ↔ Features ● Testing testing testing! ● Unit tests (require less context) ● Integration tests (requires broader understanding of the project) ● Features (once you get the big picture) ● Repeat

Slide 36

Slide 36 text

Communities Communities

Slide 37

Slide 37 text

@tiffanyfayj Communities ● Coworkers/mentors ● Communities at work ● Gopher Slack ○ http://bit.ly/1zUTGKh ● Go-nuts Google Group ○ https://groups.google.com/forum/#!forum/gola ng-nuts

Slide 38

Slide 38 text

@tiffanyfayj Meetups/Organizations ● Local Go Meetups ○ http://http://www.meetup.com/ ○ For everyone ● GoBridge ○ http://golangbridge.org/ ○ For underrepresented communities ● Women Who Go ○ http://www.womenwhogo.org/ ○ For people identifying as women

Slide 39

Slide 39 text

Conferences Conferences

Slide 40

Slide 40 text

@tiffanyfayj Conferences ● The large scale version of meetups ○ More talks ○ More people ● Many are Go-specific https://github.com/golang/go/wiki/Conferences

Slide 41

Slide 41 text

@tiffanyfayj Conferences ● GopherCon (Denver, Colorado) ○ https://www.gophercon.com/ ○ Videos https://www.youtube.com/channel/UCx9QVEA pa5BKLw9r8cnOFEA/playlists ○ Slides https://github.com/gophercon/

Slide 42

Slide 42 text

@tiffanyfayj Conferences ● GopherCon India ○ http://www.gophercon.in/ ● GopherCon Dubai ○ http://www.gophercon.ae/ ● GopherCon Brazil ○ https://2016.gopherconbr.org/en/ ● GopherCon Singapore ○ https://2017.gophercon.sg/ ○

Slide 43

Slide 43 text

@tiffanyfayj Conferences ● GolangUK ○ http://golanguk.com/ ● dotGo (France) ○ http://www.dotgo.eu/ ○ https://www.youtube.com/user/dotconference s/playlists ● GoLab (Italy) ○ golab.io

Slide 44

Slide 44 text

@tiffanyfayj Conferences ● GothamGo (New York) ○ http://gothamgo.com/ ● GopherChina ○ http://gopherchina.org/ ● And there are others too!

Slide 45

Slide 45 text

@tiffanyfayj Image Credits ● http://www.shauntmax30.com/group/gopher/ ● Gopher on horse: ○ GopherAcademy, LLC ● All Gopher images are from or based on (created by various designers): ○ Go mascot designed by Renée French and copyrighted under the Creative Commons Attribution 3.0 ● XKCD

Slide 46

Slide 46 text

Thanks! @tiffanyfayj Thanks! @tiffanyfayj