We were all new to Go once. We all had to learn the syntax, the error handling, the interfaces. We all work with people new to go. It is inevitable. We want our gophers to be productive Do we need to take different approaches to different levels of development experience? Let me tell you how!
To teach a developer Golang we need understand What is the developers skill level? What do they need to learn next to be a proficient programmer? What go tools will help them grow quickest?
Using the answers to these questions developers can be put into one of 3 categories: *Never programmed before and I will make my computer explode if I use the command line *Familiar with the basics and ready to diversify my resume *I have been doing this for so many years I quit keeping track.
To a hiring manager these categories could have the following titles: Junior, Mid-level and Senior++.
So, we want everyone to learn go. I want to outline the best tools to use for each level.
Never programmed before and I will make my computer explode if I use the command line
At this point everything is intimidating. You want to learn but every time you start it is like drinking from the firehouse. You first need to build up the tool belt before you start using the tools. Learn about logic, loops, functions and operations. Once you know how to read and write code, you can start learning how to make programs and execute them with skills like git and bash commands.
In the work place, we tend to want to give group of developers small task. Bug fixes, code reviews. This slows down their growth. They are intimidated by large code bases and the complex functions and data flows that they can not follow. To give them confidence and skills, give them their own project. Every team has that one project that they have been putting off because of more pressing priorities. Give that to the new guy. Give them time to work on their skills and hammer out the logic. Following agile, break it into small tasks that can be put into tickets that are assign to the developer. They can take all the time they need. Allow more experienced members of the to rotate working with the new dev. People are often the best resources for new developers.
With these new skills, experience, and confidence the new dev will be contributing to team projects should be no problem.
Here are some tools to help beginners: * Tour of Go * Go By Example * Go playground for programming basics * Git tutorials * Command Line/Bash tutorial
Familiar with the basics and ready to diversify my resume
Say that you have just finished a bootcamp or an online course. You know the basics of web dev, and you know git and bash. Now you are looking to gain skills you get a raise, get a new job, or for a new project you are working on. Here online exercises, tutorials and a good book will help you relate golang to the skills you already have.
This developer wants to be a part of the team. They are anxious to show their skills and acquire more. Working in pairs on bug fixes, time sensitive deliverables, and parts or big projects. Let them learn the code base and contribute to planning and architectural decisions. Show them how to get to the next step.
I have been doing this for so many years I quit keeping track
At this point learning new languages is trivial. You have several under your belt it is easy to notice patterns that relate one language to another. A good book and some simple exercises with get you to the point of being a functioning programmer in no time.
This developer has more than likely learned other languages on the job. They know what works for them and what doesn’t and they are very comfortable transitioning. They need to know that they have access to learning resources. Show them what makes go great, and better than any other language.
Here are some tools to help: * https://github.com/cdarwin/go-koans * Good book like The Go Programming Language
The best way to learn go is always going to be just dive in and program! It is easy for anyone with a little bash experience to download the latest version of Go and jump in, but for those true beginners, who are starting from zero, Go isn’t very inviting. So it is up to us as a community to help all beginners, whether they are starting from zero or have been doing other languages for years.