/gotraining

Go Training Class Material :

Primary LanguageGoOtherNOASSERTION

Go Training Build Status

Review our different courses and material

To learn about Corporate training events, options and special pricing please contact:

William Kennedy
ArdanLabs (www.ardanlabs.com)
bill@ardanlabs.com

Our Experience

We have taught Go to thousands of developers all around the world since 2014. There is no other company that has been doing it longer and our material has proven to help jump-start developers 6 to 12 months ahead of their knowledge of Go. We know what knowledge developers need in order to be productive and efficient when writing software in Go.

Our classes are perfect for intermediate-level developers who have at least a few months to years of experience writing code in Go. Our classes provide a very deep knowledge of the programming langauge with a big push on language mechanics, design philosophies and guidelines. We focus on teaching how to write code with a priority on consistency, integrity, readability and simplicity. We cover a lot about “if performance matters” with a focus on mechanical sympathy, data oriented design, decoupling and writing/debugging production software.

Look at our current schedule

Our Teachers

William Kennedy (@goinggodotnet)

William Kennedy is a managing partner at Ardan Studio in Miami, Florida, a mobile, web, and systems development company. He is also a co-author of the book Go in Action, the author of the blog GoingGo.Net, and a founding member of GoBridge which is working to increase Go adoption through diversity.

Video Training
Ultimate Go Live Lessons

Blog
Going Go

Writing
Running MongoDB Queries Concurrently With Go
Go In Action

Articles
IT World Canada

Video
dotGo 2017 - Behavior Of Channels
GopherCon Singapore (2017) - Escape Analysis
Capital Go 2017 - Concurrency Design
GopherCon India (2017) - Package Oriented Design
GopherCon India (2015) - Go In Action
GolangUK (2016) - Dependency Management
GothamGo (2015) - Error Handling in Go
GopherCon (2014) - Building an analytics engine

Hack Potsdam (2017) - Tech Talk with William Kennedy
Chicago Meetup (2016) - An Evening
Vancouver Meetup (2016) - Go Talk & Ask Me Anything With William Kennedy
Vancouver Meetup (2015) - Compiler Optimizations in Go
Bangalore Meetup (2015) - OOP in Go
GoSF Meetup - The Nature of Constants in Go
London Meetup - Mechanical Sympathy
Vancouver Meetup - Decoupling From Change

Podcasts
Your Tech Interviews are Scaring Away Brilliant People
The 4 Cornerstones of Writing Software
Bill Kennedy on Mechanical Sympathy
Discussing Imposter Syndrome

Daniel Whitenack (@dwhitena)

Daniel Whitenack is a PhD trained data scientist/engineer with industry experience developing data science applications for large and small companies, including predictive models, dashboards, recommendation engines, and more. Daniel has spoken at conferences around the world (Gopherfest, GopherCon, and more), maintains the Go kernel for Jupyter, and is actively helping to organize contributions to various open source data science projects.

Writing
Data Dan
Elephantine Analytics

Articles
O'Reilly Data Blog

Video
GopherCon 2016 - Go for Data Science

Podcasts
Go Time - Episode 4

Jacob Walker (@jcbwlkr)

Jacob is a software developer, consultant, community organizer, and has really nice hair. Like ridiculously nice hair. He started his career creating web applications in PHP, Ruby, and Node.js. When he discovered Go he dove in deep and hasn't regretted it for a minute. Coming from the thriving metropolis of Wichita, Kansas he organizes the devICT community whose mission is to "Educate, Empower, and Connect software developers in the Wichita area". Jacob also works closely with Women Who Code Wichita, Open Wichita, MakeICT, and Kansas Linux Fest. When he isn't working or organizing Jacob is spending time with his wife and three kids, staying up too late with video games, cooking, or playing Dungeons and Dragons.

Writing
Jacob Walker's blog

Video
An Informal Intro to Docker
Women Who Code Intro To Go Workshop
Getting Started with Go
Vim and Emacs Chat: Part 1: Vim
Regular Expressions 101
Implementing OOP (Ruby and PHP)
Templating In PHP With Twig

John Gosset (@jgosset_)

John is a consultant and software developer based in Montreal, Canada. He works on server software and embedded systems, and has worked with organizations large and small in both the public and private sectors - from the Canadian government and FinTech companies to small carpet manufacturers in Saint-Jean-sur-Richelieu, Quebec. He is also a contractor for RedHat, and volunteers with the Software Carpentry Foundation to help research scientists learn programming fundamentals. He believes coding is a useful skill for anyone to have, and is passionate about helping make it more accessible to everybody.

Video
GopherCon Brazil - Go Scratch That Itch

Ernesto Jimenez (@ernesto_jimenez)

Ernesto is a combination of engineer and product manager who has worked on different kinds of products, from webapps to APIs and games in both startups and big corporations. He sees technology as a tool to build great products that solve real problems for customers. Based in London, Ernesto spends spare time contributing to open source projects, building small hacks and rock climbing. He is originally from Spain and studied Computer Science in Spain and Finland.

Writing
Reducing boilerplate with go generate
Writing good unit tests for SOLID Go

Current Schedule

If you are interested in holding an event in your area please let me know. We will work with you and your organization to help make it happen.

2018

	Type         Type     Venue             Location               Month      Trainer            Url
	=====================================================================================================================================================================================
	Meetup       Go       Loyola University Loyola                 February   Bill Kennedy
	Conference   Adv Go   GopherCon India   Pune, India            February   Bill Kennedy
	CodeFest     Go       TBD               Novosibirsk, Russia    March      Bill Kennedy       https://www.codefest.ru/speakers/en/index.html
	Conference   Adv Go   TBD               China                  April      Bill Kennedy

2017

	Type         Type     Venue             Location               Month      Trainer            Url
	=====================================================================================================================================================================================
	Corporate    Go       GNS Science       Wellington, NZ         January    Bill Kennedy
	Corporate    Go       Pearson           San Francisco, CA      March      Bill Kennedy 		
	Corporate    Go       Intel             Portland, OR           March      Bill Kennedy 		
	Corporate    Go       Apcera            SF, CA                 April      Bill Kennedy 		
	Corporate    Go       Capital One       SF, CA                 May        Bill Kennedy
	Corporate    Go       Sky Betting       Leeds, UK              May        Bill Kennedy 		
	Corporate    Go       Intel             Chandler, AZ           June       Bill Kennedy
	Corporate    Go       Finxact           Jaxksonville, FL       June       Bill Kennedy
	Corporate    Go       Apcera            SF, CA                 June       Bill Kennedy 		
	Corporate    Go       Comcast           Reston, VA             July       Bill Kennedy
	Corporate    Go       Capital One       Washington, D.C.       August     Bill Kennedy 		
	Corporate    Go       Teradata          San Diego              August     Bill Kennedy 		
	Corporate    Go       Visa              Denver                 September  Jacob Walker 		
	Corporate    Go       Capital One       Washington, D.C.       October    Bill Kennedy 		
	Corporate    Go       CISCO             San Jose, CA           October    Bill Kennedy 		
	Corporate    Go       Wayfair           Boston, MA             December   Bill Kennedy 	
	Corporate    Go       Red Ventures      Charlotte, NC          December   Bill Kennedy 	
	Corporate    Go       Skillsmatter      London, UK             December   Bill Kennedy 		

	Public       Go       Fire Tavern       Atlanta, GA            March      Bill Kennedy       https://www.eventbrite.com/e/ultimate-go-atlanta-march-2017-tickets-31036843033
	Public       Go       1up Events        San Francisco, CA      April      Bill Kennedy       https://www.eventbrite.com/e/ultimate-go-san-francisco-april-2017-tickets-31485558152
	Public       Go       Skillsmatter      London, England        May        Ernesto Jimenez    https://skillsmatter.com/courses/563-ardanlabs-ultimate-go-workshop
	Public       Go       The Lab           Miami, FL              May        Bill Kennedy       https://www.eventbrite.com/e/ultimate-go-miami-may-2017-tickets-32131447023
	Public       Go       bol.com           Utrecht, Netherlands   June       Bill Kennedy       https://www.eventbrite.com/e/ultimate-go-netherlands-june-2017-tickets-32131027769
	Public       Data     Fieldlens         NYC, NY                June       Daniel Whitenack   https://www.eventbrite.com/e/ultimate-data-new-york-june-2017-tickets-32130974610
	Public       Web      MakeICT           Wichita, KS            August     Jacob Walker       https://www.meetup.com/devict/events/241511080/
	
	GoBridge     Go       Framingham        Framingham, MA         February   Bill Kennedy       https://www.bridgetroll.org/events/329
	WWG          Web      Buzzfeed          San Francisco, CA      March      Jacob Walker       https://www.meetup.com/Women-Who-Go/events/237660344
	WWG          Data     TuneIn            San Francisco, CA      April      Daniel Whitenack   https://www.meetup.com/Women-Who-Go/events/237660548
	GoBridge     Go       Framingham        Framingham, MA         April      Bill Kennedy       https://www.bridgetroll.org/events/343
	GoBridge     Go       SUNY Potsdam      Potsdam, NY            May        Bill Kennedy       https://www.eventbrite.com/e/ultimate-go-with-william-kennedy-tickets-33174514867
	WWG          Web      Packet HQ         NYC, NY                May        Jacob Walker       https://www.meetup.com/NYC-Women-Who-Go/events/239306971/
	WWG          Go       TBD               London England         August     Bill Kennedy       https://www.meetup.com/Women-Who-Go-London/events/241708328/
	WWG          Go       FullStory         Atlanta, GA            October    Bill Kennedy       https://local.anitaborg.org/event/go-women-with-bill-kennedy/
	WWG          Go       TBD               San Francisco, CA      November   Bill Kennedy       https://www.meetup.com/Women-Who-Go/events/243468818/
	
	Conference   Adv Go   Golab             Florance, IT           January    Bill Kennedy       http://golab.io
	Conference   Adv Go   GopherCon India   Pune, India            February   Bill Kennedy       http://www.gophercon.in/go-workshop		
	Conference   Data     GopherCon India   Pune, India            February   Daniel Whitenack	
	Dev Fest     Adv Go   SUNY Potsdam      Potsdam, NY            March      Bill Kennedy  
	Conference   Adv Go   Capital Golang    Washington, D.C.       April      Bill Kennedy       http://capitalgolang.com
	Conference   Go       Singapore         Singapore              May        Bill Kennedy       http://gophercon.sg/workshop
	Conference   Adv Go   GopherCon         Denver, CO             July       Bill Kennedy
	Conference   Data     GopherCon         Denver, CO             July       Daniel Whitenack  				
	Conference   Adv Go   GolangUK          London, England        August     Bill Kennedy       https://www.golanguk.com
	Conference   Web      GolangUK          London, England        August     Jacob Walker       https://www.golanguk.com
	Conference   Adv Go   dotGo             Paris, France          November   Bill Kennedy       https://www.dotgo.eu/
	Conference   Talk     Code::Dive        Wroclaw, Poland        November   Bill Kennedy       http://codedive.pl/
	Meetup       Talk     Golang Charlotte  Charlotte, NC          November   Bill Kennedy       https://www.meetup.com/golangclt/events/244091465/

More About Go

Go is an open source programming language that makes it easy to build simple, reliable, and efficient software. Although it borrows ideas from existing languages, it has a unique and simple nature that make Go programs different in character from programs written in other languages. It balances the capabilities of a low-level systems language with some high-level features you see in modern languages today. This creates a programming environment that allows you to be incredibly productive, performant and fully in control; in Go, you can write less code and do so much more.

Go is the fusion of performance and productivity wrapped in a language that software developers can learn, use and understand. Go is not C, yet we have many of the benefits of C with the benefits of higher level programming languages.

Go Ten Years and Climbing - Rob Pike
The eigenvector of "Why we moved from language X to language Y" - Erik Bernhardsson
Learn More - Go Team
Simplicity is Complicated - Rob Pike
Getting Started In Go - Aarti Parikh

Minimal Qualified Student

The material has been designed to be taught in a classroom environment. The code is well commented but missing some of the contextual concepts and ideas that will be covered in class. Students with the following minimal background will get the most out of the class.

  • Studied CS in school or has a minimum of two years of experience programming full time professionally.
  • Familiar with structural and object oriented programming styles.
  • Has worked with arrays, lists, queues and stacks.
  • Understands processes, threads and synchronization at a high level.
  • Operating Systems
    • Has worked with a command shell.
    • Knows how to maneuver around the file system.
    • Understands what environment variables are.

Important Reading

Please check out this page of important reading. You will find articles and videos around mechanical sympathy, data-oriented design, Go runtime and optimizations and articles about the history of computing.

Before You Come To Class

The following is a set of tasks that can be done prior to showing up for class. We will also do this in class if anyone has not completed it. However, the more attendees that complete this ahead of time the more time we have to cover additional training material.

Joining the Go Slack Community

We use a slack channel to share links, code, and examples during the training. This is free. This is also the same slack community you will use after training to ask for help and interact with may Go experts around the world in the community.

  1. Using the following link, fill out your name and email address: https://gophersinvite.herokuapp.com/
  2. Check your email, and follow the link to the slack application.
  3. Join the training channel by clicking on this link: https://gophers.slack.com/messages/training/
  4. Click the “Join Channel” button at the bottom of the screen.

Installing Go

Local Installation

https://www.goinggo.net/2016/05/installing-go-and-your-workspace.html

Using Docker

Installing Go may not be needed if you choose to use Docker. With running a gotraining container, you can download the training material at any location on your disk without having to set $GOPATH. And you can still access (e.g. for editing) the training materials locally.

git clone https://github.com/ardanlabs/gotraining.git
cd gotraining

NOTE: This assumes you have Git installed. If you don’t, you can find the installation instructions here: https://git-scm.com/

To build and run docker container to start your training right away, see here.

Editors

Visual Studio Code
https://code.visualstudio.com/Updates
https://github.com/microsoft/vscode-go

Sublime
http://www.sublimetext.com/
https://github.com/DisposaBoy/GoSublime
http://www.wolfe.id.au/2015/03/05/using-sublime-text-for-go-development/

VIM
http://www.vim.org/download.php
http://farazdagi.com/blog/2015/vim-as-golang-ide/

Atom
https://atom.io/
https://github.com/joefitzgerald/go-plus

LiteIDE
http://sourceforge.net/projects/liteide/files/

Emacs
https://github.com/creack/dotfiles

For a full list of editors, see the wiki: https://github.com/golang/go/wiki/IDEsAndTextEditorPlugins

Installing the Training Material

While many of the examples can be done using the online playground (http://play.golang.org), some may find it easier to complete them with their local editor. To do so, you will want to load the training material locally to your machine. From a command prompt, issue the following commands:

mkdir -p $GOPATH/src/github.com/ardanlabs && cd $_
git clone https://github.com/ardanlabs/gotraining.git

NOTE: This assumes you have Git installed. If you don’t, you can find the installation instructions here: https://git-scm.com/

Starter Material

http://golang.org/
https://tour.golang.org/welcome/1
http://www.goinggo.net/

Go Get The Training Material

go get github.com/ardanlabs/gotraining

Twitter

Jessie Frazelle (@frazelledazzell)
"@goinggodotnet you were amazing!!! So enthusiastic!!! Thanks for doing this for everyone!"

Kelsey Hightower (‏@kelseyhightower)
"Day 1 of the [Ultimate] Go workshop was outstanding! Big shoutout to @intel, @golangbridge, and @goinggodotnet for bringing this to Portland."

Katrina Owen (@kytrinyx)
"OH: "You thought you knew Go..." (You do Go? You want to do Go?) You should take this workshop. Seriously.) "

Ian Molee (@ianfoo) "If you're at @GopherCon, get yourself to a session with @goinggodotnet. Superb! Pretty sure his pic appears with the definition of "dynamo.""

Matt Oswalt (@Mierdin)
"Should be mentioned that though I am no expert, I have been using Go for about a year - and this meetup is kicking my ass."

Testimonials

Paul Yeoh
_"Today’s workshop was just mind blowing! You kept us all on the edge all day long - it was the most exhilarating all day workshop I have attended, period. The content was inspiring, moving - caused me to think deeply and gave me a lot of meat to chew on about what it is we are really doing as programmers, what an awesome day!

And most of all, I just got such a kick out of the energy which you were putting out - larger than life, it felt like you were turned up to 200%. I really took a lot from it at many levels. Thank you!!"_

Ana-Maria Lazar, Software Engineer at Sainsbury's
"Intensive crash course in Go that literally takes you to a whole new level. Not only Bill provides lots of examples and exercises to familiarize yourself faster with the language but there is also a lot of information that can be applied to other languages as well. Perfect combination!"

Susan Dady, Software Engineer - GE Digital
"Rarely will you come across a course as worthwhile as this one. I learned many things relevant and useful in my daily work and William's energy kept me engaged. I came back to work excited to get coding in Go."

Richard Stanley, Software Engineer - GE Digital
"Not only does Bill deeply understands the technical details of Go, he also can explain them in an effective, enthusiastic manner that helped me retain somewhat dry material. His passion for the language and its capabilities are obvious through out his training."

Shalab Goel, Ph.D.
"It was a pleasure taking this course — learning lot of "dry" stuff in such animated and enthusiastic environment. The exercises were spot on for building what you called as "memory muscle. I have good amount of background in conventional multithreaded and distributed environments, but I have not put that knowledge to use more recently; so it was good refresher from that point of view as well. From Yuck to completely Wow-ed is how I will like to describe my respect for Go within three days. I knew nothing about GO before the course."

Geoff Clitheroe (@gclitheroe)
"Your training is awesome! Myself and three colleagues recently caught variations of the training at GopherCon and OSCON. We all thought the Bootcamp was the best thing at any of these conferences (and I went to both). Awesome work to Bill for presenting and anyone involved in developing the training. I really liked the structure, emphasis on deeper understanding, me doing a small number of examples to emphasize this, and general content. Night and day to other training which is to often just watching someone else live code. Great work."

ACL Services (@ACLServices)
"I'd just like to thank you again for just a phenomenal training session. The feedback from everyone was overwhelmingly positive. You probably could tell first hand that there were skeptics at first, but you've turned many into golang converts and we are really excited in growing golang adoption internally."

Joshua Shuster (@naysaier)
"I would consider Ardan Studio's 3 day course to be invaluable. Bill and his staff, being some of the foremost authorities in the Go language, were able to make many of the complex go topics understandable. Covering everything from memory management, all the way up to building concurrency programs and web API's. It has given me the knowledge to write idiomatic Go, and make the best use of its features. I would highly their courses to anyone new to Go, or to anyone wanting to widen their existing knowledge."

Neeru Dwivedi
"I attended the one day workshop by Bill Kennedy from Ardan Labs. I was in for a surprise as before the workshop I was concerned whether I would understand concepts and whether I would be able to follow along. Bill has this wonderful way of explaining concepts and his knowledge on the concepts is so good that, I didn't feel that I was learning something new & complicated. The Go Workshop got me started on the Go language. This workshop is perfect for beginners and anyone who wants to learn more about Go. I highly recommend this."

Todd Rafferty (@webrat)
"I highly recommend William Kennedy / Ardan Lab for Go Training. William is extremely passionate about the Go language and his energy feeds into his training. Very professional, very informative. My favorite section of his training, if I had to pick, was the segment on MultiWriters. I highly recommend a 3 day course, over a 2 day course. Even after the classes were over, William was always responsive with additional questions via various social media channels."

Georgi Knox (@GeorgiCodes)
"The Intro to Go Workshop enabled me to come into class with very little knowledge of Go and leave having a firm grasp of the key concepts of the language. Each topic was followed up with hands-on coding problems which helped to solidify what I was learning. My teacher Bill was not only approachable, but very excited about the language and his enthusiasm was contagious. I enjoyed that we talked about some of the lower level implementation details of Go which was something that I had found lacking from some books on the language. Overall I would highly recommend this workshop to anyone looking to learn Go quickly and effectively."

Past Events

Look at how busy we have been training thousands of developers in Go over the past four years.

	2017 : 35 Events and counting  
	2016 : 37 Events  
	2015 : 33 Events  
	2014 :  3 Events  

Running Docker

Install Docker Toolbox
https://www.docker.com/products/docker-toolbox

Build Docker container

# current path is the source root where Dockerfile exists
docker build -t ardanlabs/gotraining:latest .

Start Docker container

cd $GOPATH/src/github.com/ardanlabs/gotraining
docker run -i -t -p 8080:8080 -v "$PWD":/go/src/github.com/ardanlabs/gotraining ardanlabs/gotraining:latest /bin/sh

What is running

docker ps -a

All material is licensed under the Apache License Version 2.0, January 2004.