This is the eighth in my series of best books to learn Go in 2023. Read my conclusion or browse the entire series:
- Go Programming Language for Dummies by Wei-Meng Lee
- Go Programming In Easy Steps by Mike McGrath
- Learning Go by Jon Bodner
- Beginning Go Programming by Rumeel Hussain and Maryam Zulfiqar
- Learning Go Programming by Shubhangi Agarwal
- Go For Beginners by Edward Thornton
- Learn Go With Pocket-Sized Projects by Aliénor Latour, Pascal Bertrand, and Donia Chaiehloudj
- Go Fundamentals by Mark Bates and Cory LaNou
- The Go Programming Language by Alan Donovan and Brian Kernighan
- Get Programming with Go by Nathan Youngman and Roger Peppé (this post)
- For the Love of Go by John Arundel
This book did not meet my original selection criteria, because it was published in 2018. But I had a number of people recommend it, so I decided to include it in my review series.
Get Programming with Go by Nathan Youngman and Roger Peppé, 360 pages. Published August 2018 by Manning Publications Co.
I believe the tone and content of this book make it appropriate for those who have never programmed at all before. This means that if you are experienced with programming, this book will feel too basic for you.
And if your goal is to get up to speed for professional or serious Go development, this book really isn’t for you. I think this is made most clear by the fact that this book assumes that you’ll only be using the Go Playground. Early on, we’re told, “Every code listing and exercise in this book can run inside the Go Playground, so there’s nothing to install!” This is emphasised on the very last page of the book, we’re told “If you’re new to computer programming, you may have apprecaited the web-based Go Playground, but the playground has some limitations. To … build the next cool thing, you’ll need to install Go on your computer.”
There is no further mention of how to install or configure Go for local use.
The book is written in a light, fun style, which works well for beginners in my opinion. Many of the examples are very light-hearted, which also makes for enjoyable (although perhaps less practictal) reading. Want to know how much you would weigh on the surface of Mars? Listing 2.1 has you covered!
And many of the code listings have very explicit comments, complete with arrows to the relevant code, which makes it very accessible and easy to follow.
Sections are introduced with small robot-themed iconography, and often lightened up with some Gopher-themed illustrations. And each main section ends with a little “Quick check” section, a sort of self-quiz to check that you learned the key concepts.
The organization of this book is in line with the target audience and goals. As it explains in the preface, “This is a beginner’s guide to Go, intended to be read from cover to cover, with each lesson building on the last.”
If you use the book as intended, and read through from cover to cover, you’ll get a quick grasp of the feel of the Go language, and many of the core concepts.
But this means that it’s also not a good reference book. But of course, that’s not its goal, either.
This book is light on content. I think that’s okay, given the intended audience, and the apparent intent of the book. But it does mean that this book will not equip you for serious or professional Go programming.
The end of the book has a “Where to Go from here” section, which spells out a number of things omitted in this book:
- Bitwise operations
- Complex numbers
- Creating packages
- Many other things
In addition to this list, the book also doesn’t cover any of the key areas I’m looking for: the
testing packages, modules, or generics (because they didn’t exist yet at the time of publication).
However, given the intended audience, the only one of these I really consider a problem for the audience, is the omission of Go modules, and configuring the local environment. This omission means that it’s really not possible to use Go effectively after reading this book. Even for hobby projects.
This book is fairly short, and not very in-depth, so I didn’t find any real accuracy problems.
However, if I’m allowed to be hyper-nit-picky, there is a slightly misleading statement on the bottom of page 14:
NOTE Though listing 2.1 displays weight in pounds, the chosen unit of measurement doesn’t impact the weight calculation. Whichever unit you choose, the weight on Mars is 37.83% the weight on Earth.
Of course this is technically true. But much of Earth uses kilograms to measure bodyweight. Which isn’t, strictly speaking, a measurement of weight. It’s a measurement of mass. And mass doesn’t vary by relative gravity.
So if you’re accustomed to stepping on a scale that reports kilograms, don’t expect a migration to Mars to help you lose weight. Sorry. 😔
I ordered this book on Amazon.com, so that I could read the physical copy. Then I saw that it wouldn’t be delivered until some time in March. WUT!?
So I cancelled that order, and purchased a PDF copy straight from Manning’s web site. This means I don’t have the physical book in my possession to review. However, as I mentioned in my review for Learn Go with Pocket-Sized Projects from the same publisher, I have no reason to doubt the physical quality will be good.
The Amazon “look inside” feature does show black-and-white only pages, while the PDF version includes color. But either format will be perfectly readable and usable.
This book does include a large number of illustrations, mostly just for fun, and more whitespace than many of the others. This does mean that the page count can’t be directly compared to some of the more dense books.
This book stands out as clearly geared to beginners of programming. If that describes you, and you’re just trying to dip your toes in the water to see what this Go thing is about, this could be a reasonable starting point. But don’t be under any illusions that this book will make you a professional programmer, or even prepare you to start writing complete hobby projects for personal use.
While I appreciate that every example in this book can work in the Go Playground, this is also a serious limitation for anything more than trivial play. Even most trivial Go programs use multiple source files and packages; both things the Playground does not accomodate. This limitation of the book is enough to deduct a full star from my Amazon review, even considering that the audience is essentially complete beginners.
For most beginners, Go Programming Language for Dummies will be a better introduction to the language.