coding exercises for budding gophers

Gophercises is 100% FREE, but is currently in beta. There will be bugs, and things will be changing significantly over the coming weeks.

We've all been there before...

You are just starting to pick up a new programming language (like Go!) and things are going great. The tutorials are clicking and you are making great progress... and then you run out of tutorials.

"What should I build next?" you ask, and inevitably everyone tells you to "Pick a side project and work on it!"

Great, but what side project should you work on?

What project will provide you with the best learning experience?

What happens if you pick something too challenging and get stuck?

Nothing sucks more than getting stuck because you didn't know you were tackling a nearly impossible problem, and when you are just getting started how are you supposed to know what those are?

Now take a deep breath and imagine having the confidence to evaluate a project and determine if it was within your grasp.

Imagine knowing that even if you have never used a library before, you will be able to figure it out by reading through the docs.

You can get there, but to do it you need to practice. You need to find projects that will challenge you, but won't leave you clueless about how to proceed.

Enter Gophercises!

Gophercises is a FREE course that will help you become more familiar with Go while developing your skills as a programmer. In the course we will build roughly 20 different mini-applications, packages, and tools that are each designed to teach you something different.

In the course we will learn about and practice using:

  • Channels
  • Mutexes
  • Goroutines
  • Functional Options
  • Chaining Interfaces
  • Various parts of the standard library (io, time, and many other packages)
  • Reading input from the command line
  • And much much more!

By completing the exercises in Gophercises you will slowly become more confident using the Go programming language. You will start to learn how to read the standard docs and make sense of them. You will even start to learn how to evaluate the difficulty of a project before doing much coding.

In short, you will start to become a great Go developer.

The course isn't quite finished, but I am opening it up to beta testers to help get feedback and shape the course. I am looking for people who want to get a headstart and are willing to give me feedback in return.

If you get stuck, tell me where you got stuck.

If a lesson is vague or unclear, let me know!

If you just don't like a lesson or find it to be boring then tell me!

In short, I just want your honest feedback about where the course shines, where it falls short, and how it can be improved.

If you are interested sign up below and I'll send you a link to access the current videos.

Ready to start working out with Go?

Gophercises is 100% FREE, but is currently in beta. There will be bugs, and things will be changing significantly over the coming weeks.

What will we be building?

Note: Sign up to get immediate access to the course and all of the published exercises.

Exercise 1

Quiz Game

Preview image
Create a program to run timed quizes via the command line.

Exercise 2

URL Shortener

Preview image
Code an http.Handler that forwards paths to other URLs (similar to Bitly).

Exercise 3

Choose Your Own Adventure

Preview image
Design a choose your own adventure book renderer that shows the story via a web application.

Exercise 4

HTML Link Parser

Preview image
Build a package to parse links (<a> tags) from an HTML file.

Exercise 5

Sitemap Builder

Preview image
Use the HTML link parser from ex. 4 to build a sitemap of public websites.

Exercise 6

Hacker Rank Problem

Preview image
Code the solutions to a few string-related hacker rank problems.

Exercise 7

CLI Task Manager

Preview image
Create a command line app to manage a TODO list stored in BoltDB.

Exercise 8

Phone Number Normalizer

Preview image
Write a program that will normalize an SQL table of phone numbers into a single format.

Exercise 9

Deck of Cards

Preview image
Code a package used to build decks of cards with custom options, shuffling, and sorting.

Exercise 10


Preview image
Using the deck of cards in ex. 9, create a blackjack game.

Exercise 11

Blackjack AI

Preview image
Refactor the blackjack exercise into a package with an exported AI anyone can implement to create a bot that plays blackjack in a simulated game.

Exercise 12

File Renaming Tool

Preview image
Build a tool used to rename files with a common pattern. Eg we might want to take many files with names like "Dog (1 of 100).jpg", "Dog (2 of 100).jpg", ... and rename them to "Dog_001.jpg", "Dog_002.jpg", ...

Exercise 13

Quiet HN

Preview image
Given an existing web application that displays stories from Hacker News, we will look at ways to add concurrency and caching to the application while looking for race conditions and other potential issues.

Exercise 14

Recover Middleware

Preview image
Build HTTP middleware that will recover from any panics in an application, even if the response write has been partially written to, and then output the stack trace if the application is in development mode.

And more to come!
The final course is expected to cover more than 20 exercises, but many of those are still undergoing changes.

I'm ready to exercise my Go skills.

If not, what can I do to convince you? Let me know!

About the author

Jon Calhoun is a full stack web developer who also teaches about Go, web development, algorithms, and anything programming related. He also consults for other companies who have development needs. (If you need some development work done, get in touch!)

Jon is also a founder of EasyPost, a shipping API that many fortune 500 companies use to power their shipping infrastructure. Prior to founding EasyPost, he worked at Google as a software engineer.

You can find more of Jon's work (both free and paid) below: - Jon's blog, which covers a wide variety of topics related to Go. All articles here are free.

Web Development with Go - This paid course spans over 33 hours of screencasts where Jon teaches web development using Go. The course covers everything from just getting started to deploying a real, production-grade web application.

Let's Learn Algorithms - This free series covers various computer science algorithms and data structures, along with examples of how to code them in Go. Articles are frequently accompanied with YouTube videos.

A picture of the author - Jon Calhoun

Photo compliments of Calhoun Photography.