Video Coming Soon...

Created by Zed A. Shaw Updated 2025-10-07 14:32:54

00: Introduction

WARNING This exercise is in DRAFT status, so there may be errors. If you find any, please email me at help@learncodethehardway.com so I can fix them.

For many years I felt that Go was a terrible language. It's syntax was too simple, it had weird tooling that enforced the formatting, the error handling was laughably basic, and it's package management just grabbed things off the internet without any registry. Madness!

That was probably a decade ago, and maybe I've just grown old but looking at these "disfeatures" I realized they end up being Go's strengths. Simple syntax is easier to work with and explain. Tooling that helps you keep things organized is really nice. Error handling that's simple is usually all you need. Packages with no centralized authority turn out to be more robust and censorship resistant.

After using Go I've finally realized that Go is a great language for total beginners because of these "limitations." It's not a limited language at all. You can create really great perfectly fine software that is easy to install and maintain almost anywhere. Big companies use it. Very successful open source projects are written in it.

Saying that "Go is simple" doesn't mean "Go is stupid." It means there's less to learn, and what you do need to learn isn't that complicated. Combine that with Go's very nice tools and readily available modules and you have a great first language for someone who wants to learn to code.

Go's Strengths

I believe that Go has three key strengths that make it a very pleasant language for someone who knows nothing about programming:

  1. You can install Go easily, on almost anything, and it'll run the same everywhere.
  2. Go's syntax and language features are so ridiculously simple that I believe anyone can learn it.
  3. Go comes with great tooling out of the box, and many others you can install that will run anywhere you run Go.

These may not seem like amazing features, but I've found beginners struggle the most with these exact three things. They have a hard time installing and using most language and/or the packages they need for their projects. They have to learn too many strange concepts like Object Oriented Programming or The Lambda Calculus. Many language provide zero tooling, or the tooling is laughably pathetic.

Go seems to solve these three in reasonable ways. I wouldn't say Go's solutions are perfect, but for 95% of people out there they are good enough to do everything you want to do with programming.

Go is Easy to Install

Go is very easy to install. It's a single download that's ready to use. It runs everywhere, it runs the same everywhere, and you can even run it totally locally so you don't need administrator privileges to use it. You don't need another compiler, other tools, or any extra dependencies to get it working.

Programmers vastly underestimate how frustrating and crippling bad installs are for beginners. A programmer will sit and bang their head on the casing of their Framework ArchLinux Linux laptop until the sound works (barely). Beginners can't handle debugging their installs. It needs to install and work mostly without tinkering, and Go gives them that.

NOTE At the same time, it's important that people who want to learn to code actually learn how to install difficult to install software. I believe nobody is helping beginners by removing installation from the educational experience since installing and managing software is a fundamental aspect of programming. It's just in the beginning this a frustrating motivation killer that ruins the language they're trying to learn. They can suffer through Windows PATH hell when they're stronger.

Easy to Learn

Go's syntax is about the simplest you could get without getting really weird. It has everything you need, but instead of many different versions of the same thing Go went with only 1 version of each. For example, JavaScript currently has I think 7 different ways to write a loop. Go has one. A single loop you need to learn. That's a huge win.

Go also doesn't have Object Oriented Programming (OOP), but it does have a way to package code into consistent modules. This means you get a simpler "OOP like" experience without have to learn about nightmares like Multiple Inheritance and "abstract virtual const functions."

A good way to say this is if you struggled with programming in the past because the concepts were too weird, then Go was probably designed for a programmer just like you at Google.

Let's take a closer look at these three strengths Go has.

Great Tooling

Go comes packaged with a great set of tools to help you. There's tools to format your code for you, download and install packages, install other tools, manager your databases, convert data to different formats, and even install all of the documentation you need locally.

This also combines with Go's ability to run everywhere. Do you need to install the documentation browser pkgsite on a MacOS computer for a weekend? It'll work the same. Need to teach your 12 year old cousin how to do it on their Windows PC from 2010? It'll work the same.

Having a similar experience in tooling across all platforms is a huge win for both the student, and also for me the educator. Gone are the special videos and instructions just for Windows. Once you get Go installed you can use everything I tell you to and it'll work the same (I hope).

It's Not All Unicorns

Obviously, Go isn't a perfect language, and I'd be a fraud if I didn't warn you that it does have problems, but hopefully you're adult enough to know that nothing's perfect. While it may have a few strange things about it, all of those warts are easy to learn about it. What really matters is that an average person who knows nothing about programming can get it installed on their computer and begin.

As we go through this course I'll be honest with you about things Go does weird or problem areas to avoid. In programming we call these "footguns." Imagine if someone made a shotgun that only pointed down at your foot waiting for you to press the trigger and blast your foot off. That's a footgun. A feature that's way too easy to use wrong. Many languages have these footguns, and Go is no exception. Go just has a lower ratio of them because of it's simplicity.

Can't have a ton of footguns if there's not a lot of features to get wrong.

Next Steps

Hopefully that tells you why I think learning Go is worth it. Ultimately I can't tell you why you should learn to code. I can only hope that I teach you what you need, and I very much hope that you learn to love programming as a fun, intellectually challenging, creative practice. Maybe you get a job with Go, but I hope you do more than just use Go at a job.

Enjoy!

Back to Module Next Lesson

Register for Learn Go the Hard Way

Register today for the course and get the all currently available videos and lessons, plus all future modules for no extra charge.