← Back to articles

Why First Principles Beat Framework Tutorials

· 5 min read · backend · ... views
Share: Y
On this page

Here’s something that happens all the time:

You spend months getting good at Express.js. Then your new job uses Go. Or Spring Boot. Or the team picks Python for a microservice.

Suddenly you’re googling basics again. “How to define a route in Gin.” That feeling of being a beginner, even though you’ve been building backends for years.

The problem isn’t you. It’s how you learned.

The Two Paths

Path A: Framework-first (how most people learn)

  • Pick a framework (Express, Django, Spring)
  • Memorize its API surface
  • Build projects following tutorials
  • When you switch languages: start from scratch
  • Feel forever tied to one ecosystem

Path B: First principles (what senior engineers do naturally)

  • Learn what routing IS (pattern matching on method + path)
  • Learn what middleware IS (a pipeline of functions that run on every request)
  • Learn what auth IS (proving identity + checking permissions)
  • Then implement these patterns in any language in days, not months

The difference isn’t intelligence. It’s strategy.

First Principles vs Framework-First Learning

What Senior Engineers Actually See

I’ve watched CTOs parachute into codebases they’ve never seen, Rust, Elixir, languages they’ve barely used, and within 30 minutes they’re navigating confidently. They find the bug. They know where to look.

How?

They’re not reading the code line by line. They’re pattern-matching:

“Where’s the routing table? Found it. Where’s the middleware? Found it. Where does auth happen? Right there. Where are the database queries? In that folder. Okay, I understand this app.”

Every backend on Earth follows the same blueprint. The shapes are identical. Only the syntax changes. These people learned the shapes, not the syntax, and it gives them superpowers in any codebase.

You can develop this same skill deliberately, in months, without waiting for years of accumulated experience.

The Universal Backend Blueprint

Every production backend, whether it’s Netflix (Java), Discord (Elixir/Rust), Uber (Go), or your startup’s MVP (Node), implements these same building blocks:

BlockWhat It DoesFramework-specific?
RoutingMatches URLs to handler functionsNo. same concept everywhere
MiddlewarePre/post-processing pipelineNo. Express, Gin, Spring all have it
AuthIdentity + permissionsNo. JWT/sessions work the same
ValidationEnsures data correctnessNo. same patterns, different libraries
Database accessCRUD operations via repository patternNo. SQL/ORM concepts transfer
CachingStore computed results for speedNo. Redis/Memcached works the same
Error handlingGraceful failure + useful errorsNo. try-catch/result types everywhere
LoggingRecording what happenedNo. structured logs are universal

Learn these 8 blocks deeply and you can build a production backend in ANY language within a week. Not a toy, a real, production-quality one.

The Universal Backend Building Blocks

A Concrete Example

Say you’re a Node.js developer. You know Express cold. Your company wants a microservice in Rust for performance reasons.

Without first principles:

  • Search “Rust backend tutorial”, find a 12-hour video
  • Try to absorb Rust’s ownership model AND routing AND database AND auth simultaneously
  • Get overwhelmed. Mix up language concepts with backend concepts.
  • Spend 3 weeks confused. Ship something mediocre.

With first principles:

  • You already know what a production routing setup looks like
  • Google “Rust web framework routes”: find Actix-web, define routes in 20 min
  • You already know the repository pattern for databases
  • Google “Rust async database”: find SQLx, implement in 1 hour
  • You already know how JWT auth should flow
  • Google “Rust JWT library”: find jsonwebtoken crate, wire it up in 30 min

Day 1: routes + basic handlers. Day 2: database + auth. Day 3: validation + error handling + logging. Done.

The difference: you’re not learning backend engineering in Rust. You’re just translating patterns you already understand into new syntax.

The Mental Model Shift

Stop thinking: “I’m an Express developer” or “I’m a Spring Boot developer.”

Start thinking: “I understand how backends work. Express is one tool I use.”

This isn’t just philosophical. It has real consequences:

  • Hiring: companies want engineers who solve problems, not ones who memorize docs
  • Speed: you can evaluate new tools in hours, not weeks
  • Confidence: unfamiliar codebases stop being scary
  • Architecture: you make better design decisions because you understand trade-offs at a deeper level

What We’ll Cover in This Series

Every article in this series teaches one building block as a concept, independent of any framework. We’ll explain:

  • What problem it solves
  • How it works under the hood
  • What a production implementation looks like
  • Common mistakes and how to avoid them

By the end, you’ll have a complete mental map of backend engineering. New frameworks become a 2-day syntax lookup. New codebases become instantly navigable. New languages become exciting instead of terrifying.

The Takeaway

Instead of memorizing how Express handles routes, understand what routing IS. Then Express, Gin, FastAPI, they all become obvious.

Day 2 of 95 | Backend Engineering Series

Enjoyed this article?
Share: Y

Get new articles in your inbox

No spam. Unsubscribe anytime.

Get in touch

Have a question, feedback, or just want to say hi? Reach out.