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.