go
iprudhvi.in

Go in bits

Archive of all the links from my socials for go tuts.

October 2, 2025
GoBackend

Why I Ditched Everything for Go

I used to be a node.js guy.

I lived in the land of callbacks, promises, and the endless chaotic void that is node_modules. I thought it was fine. I thought everyone just dealt with weird runtime errors and massive memory footprints.

Then, I wrote my first line of Go.

It was like stepping out of a noisy, crowded club into a quiet, well-lit library.

Everything was just... simple.

The Magic of Simplicity

Go is not a sexy language. It doesn't have a million features. It doesn't have magical frameworks that do everything for you behind the scenes.

That is exactly why I fell in love with it.

When you read a Go codebase, you know exactly what it is doing. There is no magic. There is only code.

  • Concurrency: Goroutines ruined me for other languages. I no longer want to think about async/await or thread pools. Just toss a go in front of a function and let the runtime handle it. It feels like cheating.
  • Static Typing: It catches my stupid mistakes before I even compile. But it doesn't feel oppressive like Java. It feels helpful.
  • The Standard Library: You can build a production-ready HTTP server with just the standard library. No Express, no Fastify, no external dependencies. Just pure, unadulterated Go.

The Learning Curve

It wasn't all sunshine.

I fought the language at first. I tried to write Go like I wrote JavaScript.

I complained about the lack of generic map/filter/reduce functions. I whined about having to type if err != nil five hundred times a day.

But then I realized: the verbosity is the point.

Handling errors explicitly forces you to think about what happens when things go wrong. In Node, I would just wrap everything in a try/catch and hope for the best. In Go, you deal with the failure at the exact point it occurs.

It makes you a better engineer. Period.

The Archive

Over the past year, I've been documenting my journey with Go across Twitter and Instagram. Small bits of knowledge. Snippets. "Aha!" moments.

I got tired of them getting lost in the algorithmic void, so I'm archiving the best ones here.

This isn't a comprehensive tutorial. It's a raw, unedited log of my brain trying to understand this beautiful, stubborn language.

Channels are for signaling, not just data: Don't just use them to pass variables. Use them to tell other goroutines that an event has occurred. Empty structs struct{}{} are your best friend here.

Interface segregation: Don't define massive interfaces. Define interfaces for exactly what you need at the point of use. If a function only needs to read, accept an io.Reader, not a massive File interface.

Don't over-engineer: Go rewards boring code. If it can be done with a simple for-loop and a slice, do it. Stop trying to be clever.

Go didn't just change how I write backend services. It changed how I think about software.

Keep it simple. Keep it robust. Keep it Go.

Comments

Related Posts

The Clarity Debt

Why knowing more has made us decide less.

July 22, 2026
Read more

Routing in Next.js (App Router) - A Complete Guide (2025)

A guide to routing in Next.js (App Router) covering Catch-All Segments, Dynamic Routes, Nested Routes, and more.

March 12, 2025
Read more

Next JS Data Fetching mistakes & Security vulnerabilities

A guide to Next.js data fetching mistakes & security vulnerabilities

July 5, 2025
Read more