Welcome aboard

Station 0.0 4 min

Hi, I'm Paul

I'm a lead-level PHP developer based near Redcar in North East England. I've been writing PHP professionally for over 15 years, and these days I work in ecommerce, mostly on the B2C side: the shops where people click "Buy now".

My professional PHP life started around 5.3, back when namespaces and closures felt like the future. I went through CodeIgniter, CakePHP, more than one hand-rolled MVC framework, and yes, WordPress too. Laravel arrived around version 5 and never left. Over the years I've built checkouts and payment integrations, order and stock systems, high-traffic storefronts, and plenty of internal tools that "only needed to last a few months" and are somehow still running.

I picked up Go about two years ago as a side project, purely for fun. What kept me there was a bit of everything: the performance, concurrency that doesn't need a queue worker and a prayer, deploying a single binary, and plain curiosity. The biggest surprise coming from PHP was how verbose it can be, especially around error handling. You'll write if err != nil more times than you'll want to count. I've come round to thinking that's a good thing. Every failure is right there in front of you, not hiding in an exception three layers up.

I built this course because most Go material assumes you're either brand new to programming or arriving from Java or C. You're neither. You've shipped real things in PHP, you know your way around a framework, and you've got years of instincts. Some of them carry straight over to Go, some need adjusting, and a few will actively trip you up. This course is about telling those apart.


How the course is laid out

The course is a transit map. Each unit is a line, and each lesson is a station. Every station has a few regular fixtures:

  • The Interchange tab, beside each lesson, puts PHP you already know next to the Go that does the same job, so you can compare the two at a glance.
  • Mind the gap boxes flag the places where your PHP instincts will lead you astray.
  • Laravel corner boxes connect an idea to the framework you use every day.
  • Exercises run real Go against real tests, and a short quiz checks the idea stuck.

Mind the gap

This is what a Mind the gap box looks like. When you see one, slow down: it's usually the bit you'll get wrong in your first week.

Laravel corner

And this is a Laravel corner. It's where "oh, it's like Octane" or "so that's Go's version of a service provider" moments live.

What's on the Orientation line

Before the language itself, this first line gets you comfortable with how Go thinks and how its tools work. No variables-and-types grind yet. That starts on the next line.

Station What you'll get out of it
0.1 Why Go, for a PHP dev The big mental shift: a Go app boots once and keeps running. Plus an honest take on when PHP is still the better choice.
0.2 Hello, Go Where a Go program starts, how imports work, and how to read a function signature. Your first exercise.
0.3 The toolchain One go command that replaces php, php -l and a good chunk of PHPStan.
0.4 Modules vs Composer go.mod as your composer.json, and why there's no lock file.
0.5 gofmt ends the style wars One formatter, no config, and no more whitespace debates in code review.
0.6 How exercises work here What happens when you click Submit, and how to read a failing Go test.

By the end of the line you'll be able to read a small Go program, run it, format it, pull in a dependency and make a failing test pass. That's everything you need before the language proper begins in Unit 1.