Learning C++

Most of the software I write day to day uses languages that handle a lot of messy details for me — memory, performance trade-offs, talking to the machine. C++ is the opposite: you are closer to the metal, which means more control and more ways to trip over your own feet.

I am learning it on its own schedule. Not because I plan to rewrite everything in C++, but because I want to understand what is happening underneath the tools I already use.

The simple idea

Think of it like driving:

  • Go / Python — like an automatic car. Smooth, practical, gets you where you need to go for most trips.
  • C++ — like a manual transmission. Harder at first, but you feel every gear change and you decide exactly when to shift.

Neither is “better.” They are for different situations.

flowchart LR
  subgraph easy["Languages I use most days"]
    A[Write code] --> B[Language handles details]
    B --> C[Working software]
  end

  subgraph deep["C++ when it matters"]
    D[Write code] --> E[You manage memory and speed]
    E --> F[Very fast, very precise software]
  end

Why bother?

Honestly? Curiosity and practicality.

When something is slow or eating too much memory, C++ is often what teams reach for — games, databases, networking tools, anything where milliseconds matter. If I only ever read Go and Python, those conversations feel like a black box.

Learning C++ is my way of opening the hood — even if I am not becoming a full-time C++ developer.

How I am learning

No cramming. Small side projects in my homelab when I have an evening free — things where the point is learning, not shipping on a deadline.

So far the main hands-on project is Logpipeline — a tiny program that reads structured log lines (level=INFO msg=hello) and pulls out the pieces. Boring on purpose. The learning is in the doing.

flowchart TD
  A[Raw log line as text] --> B[Parser reads key=value pairs]
  B --> C[Structured fields: level, message, timing]
  C --> D[Easier to search and alert on later]

Where this goes

I want to read low-level code without glazing over. I want to know when C++ is the right call — and when it is overkill. And I want to stop treating it like a language I will “get to someday” in one giant sprint.

That is the whole goal: understand the layer below, one small project at a time.