Go From Scratch - Beginner to OSS Contributor¶
This path takes you from "I have never written code" to "I can clone a real Go project, read most of it, and submit a pull request for a small fix." It is unhurried, honest, and assumes nothing.
Who this is for¶
- You have never written code, OR
- You have copy-pasted code from tutorials but couldn't explain it line by line.
That's it. No "you should already know X." If you need to know something, this path will teach it.
What you'll need¶
- A computer (any OS - macOS, Linux, Windows all work).
- A text editor. VS Code is a good free default. Notepad/TextEdit work too, just less comfortable.
- A terminal. Built into every operating system.
- About 5 hours per week. The path is sized for ~4-6 months at that pace. Twice the hours, half the time. Half the hours, double the time. The path doesn't expire.
Why Go (and not some other language)¶
A few reasons that matter when you're starting:
- The language is small. You can fit most of Go's syntax in your head. Other popular languages have more features than any person uses.
- Errors are blunt. Go's compiler tells you exactly what's wrong and which line. You'll spend less time confused.
- It's used in real things. Docker, Kubernetes, Terraform, much of cloud infrastructure is Go. The OSS projects you'll graduate to contributing to are real and important.
- You'll be productive in weeks, not months. People who pick Go as their first language tend to ship something useful within a month.
How this path works¶
Each page does one thing:
- Says what you'll learn this session.
- Shows you a small program.
- Walks through the code line by line.
- Gives you a tiny exercise.
Do the exercises. Reading without doing won't stick - I promise. Type the code yourself; don't copy-paste. Your fingers learning Go is part of how your brain learns Go.
The deal¶
- I will not pretend things are easy when they aren't. When something is confusing the first time, I'll say so.
- I will not send you to "consult the primary source" or "read the standard library." If you need to know it, this path will teach it.
- There are no stupid questions, only stupid skipped exercises.
- The goal at the end is real: a pull request to a real open-source project. We will work up to it.
The pages¶
The path is 16 pages, sized so you can do one or two per week.
| # | Title | What you'll know after |
|---|---|---|
| 00 | Introduction | What we're doing and why |
| 01 | Setup | Go installed; "hello, world" printed |
| 02 | First real program | Variables, numbers, text |
| 03 | Decisions and loops | if, for |
| 04 | Functions | Named reusable blocks |
| 05 | Making your own types | struct, methods |
| 06 | Many things at once | Slices, maps |
| 07 | Errors | Go's way of handling failures |
| 08 | Pointers and memory | Gentle introduction |
| 09 | Concurrency 101 | Goroutines and channels |
| 10 | Tests | Writing your first test |
| 11 | Packages and modules | Using code other people wrote |
| 12 | Reading other people's code | The bridge |
| 13 | Picking a project | What "manageable" looks like |
| 14 | Anatomy of a small OSS repo | Case study |
| 15 | Your first contribution | Workflow + PR |
Start with Introduction.
Print this path
Want to read offline or archive? Open the printable version - every section of this path concatenated into one page, styled for paper. Use your browser's Print → Save as PDF.