Learn Go with John
How do you know what you don’t know?
Go, also known as 'Golang', is an immensely popular open source programming language. By some estimates there are over a million Go programmers (known as gophers) in the world, and more people are learning Go every year.
Probably the best mentor ever. The level of patience and attention to detail is astonishing.
—Exercism mentee
John Arundel is the author of For the Love of Go and other books, an experienced Go programmer and mentor, a contributor to the Go language, and the author of several open source Go libraries. For some years he has been one of the leading Go mentors on the Exercism.io code practice site. He also offers private Go mentoring, training, and coaching, for both individuals and companies, and has helped literally thousands of people to learn Go. He runs a regular Code Club for Go beginners, and you can watch past episodes to get a flavour of what his teaching technique is like.
John always makes wise and thought-provoking comments. He understands Go and the art of programming on a deep level.
—Lloyd deWit
A mini-masterclass in refactoring and writing cleaner code.
—Mentee
What is mentoring?
A Golang tutorial is useful (see John's Build a Docker image with Golang, for example), but will only take you so far. Once you've mastered the basics, you can really benefit from in-person training and mentoring.
John is the chief instructor of the Bitfield Institute of Technology, a fully-remote software engineering academy specialising in Go that offers a number of respected certifications.
So what does a Go mentor do, exactly? John says:
Well, some people have no previous experience with Go, or any programming background, and they want to learn Go from scratch. That's absolutely fine, and I can teach you what you need to know, to whatever level you're interested in.
In many cases, though, somebody may already know a little Go, but feel they want to boost their skills, or concentrate on a particular aspect that's giving them trouble, such as testing, or microservices. That's where mentoring really shines. I will pair with you on whatever project you happen to be working on, or help you choose a new project to practice your skills.
Rather than a traditional teacher-student workflow of lessons and homework, I like to collaborate directly with students, on real, productive work. If you have problems with the existing code that you need help with, we'll work together to fix them. If you're not sure how to even get started, how to lay out your project, or how to organise your code, I'll give you experienced and friendly advice that will get you up and running.
Career help
It's not necessarily just about the language. John can also coach you on the skills needed to plan your career and get the job you want: resumé writing for DevOps/SRE/infrastructure positions, interview technique, how to succeed at coding tests, and more.
John's Golang mentoring has helped me build confidence and fill in gaps in my knowledge. It has provided an immeasurable amount of help and guidance, and as a result I'm applying for my dream job as an SRE!
—Melina Boutierou
Just want to say a big thank you to John for his amazing support in my career. Not only is he a great teacher, he's also an awesome mentor and coach. I almost gave up on tech after a very bad experience at my previous job. But he stepped in and gave me the boost I needed. For an industry that can be very toxic a lot of times and even resistant to people like me, people like John make it a better place.
—Bukola Jimoh
Who is mentoring for?
Many of John's mentees are already very competent programmers in other languages, such as JavaScript or C++, and they simply need a conversion course: what's different about Go and what do I need to know to use it effectively? With individual mentoring, you can cover exactly the material you want to learn, and not waste time on what you're already confident about.
Amazing. Every sentence from this guy taught me something new. —Exercism mentee
On the other hand, if you've never coded before, and you want to learn, John has an excellent track record of helping complete beginners develop confidence and fluency in Go which can really benefit them, both personally and in their careers.
John is the best mentor I have ever interacted with. He is always there to make you improve even the smallest detail.
—Luca Paterlini
The Go programming language
John will help you get a solid understanding of the fundamentals of Go, including:
Maps, strings, and
for
loopsInterfaces and
map[string]interface{}
Structs, arrays, and slices
defer
, regex, and JSON handlingThe equivalent of enum types in Go
Choosing between
dep
and Go modulesThe
log
libraryConcurrency, channels, and mutexes
John provided invaluable feedback on my code. Over 5 iterations he took my code from a sloppy, barely working mess to succinct, clear code. Cannot say enough good things! —Mentee
What else will I learn?
John aims to teach not just the basic concepts and syntax of the Go language, but everything you need to make you a better programmer:
- Setting up your Go environment and toolchain for fast and effective development
- Using Go's powerful automated test facilities to help build solid, reliable production code
- Test-driven development (TDD) methodology, to help you design your systems and interfaces from the users' point of view
- Benchmarking, performance analysis, and tuning
- Security, authentication, and encryption, for network servers and clients
- Deploying Golang applications with Docker containers and Kubernetes
- Concurrent design for scalable, reliable, and high-performance programs on multicore systems
John is an absolutely amazing mentor. Super helpful with ton of insights and fast response.
—Bjarne
What's the goal here?
John has this to say about his general philosophy of software engineering, based on 40 years experience of running code in production:
I used to delight in writing code so clever that even an expert couldn't understand it. Now I delight in writing code so clear and simple that even a beginner can understand it. The point is that over the past few decades, computers have got faster, but developers haven't got less busy. Code spends a lot more time being read than being executed, so we need to optimise for ease of understanding and maintenance, not nanoseconds of CPU time.
Therefore, I always aim to write the simplest, clearest, and most readable code that I possibly can. This is more difficult than it sounds. Many years of teaching coding have given me some useful insights into what people do and don't find simple and obvious, and I've learned to put these into practice in my own projects.
It's not hard to find books, videos, and training courses which will teach you how to write complicated Go programs. With a little help from John, you'll learn how to go beyond that level to a new one: writing simple Go programs.
I've found John to be an excellent Go mentor, who offers detailed suggestions that balance performance, readability, and modularity while offering tips, articles, and videos with each problem.
—Tom Barr
How much does it cost?
John charges a flat hourly rate of £150 (about $200) for Go training, and it will be entirely up to you how much or little time you want to use. Usually he pairs remotely with students using Zoom, Google Hangouts, or whatever screen sharing software suits you. This tends to work well for team training too.
There's no commitment or minimum amount of time involved; you can start by scheduling an initial 1-hour session, and if you find it valuable, book more sessions. If it turns out not to be right for you, that's perfectly fine—just cancel with no questions asked.
If you'd like to know more, please contact John directly and he'll be happy to answer any of your questions.
I'm completely new to Go, but John was kind and helpful, informative and not condescending. I appreciate that he encourages me to think about the problem myself, rather than just telling me the answer. One of the best mentors around.
—Exercism mentee
Is there a video course available?
Yes, there is! John has recorded over 6 hours of friendly, engaging Go instructions in high-definitiion video for you to watch and learn from at your leisure. Check it out at For the Love of Go: Video Course, and here's a free preview of the first part of the course.
Further reading
For more about Go, check out John's Go blog posts and tutorials.