How to Become a Software Engineer
The generalist trunk that backend, frontend, full-stack, and platform careers fork from. Deep foundations in code, systems, and shipping product.
1. Programming Fundamentals
coreA Primary Language, Deeply
Pick one — Python, TypeScript, Go, Java, C# — and get past syntax. Understand its memory model, concurrency model, and error handling.
- tutorial free Go by Example →
- docs free TypeScript Handbook →
- docs free Python Docs →
- book paid Fluent Python (Ramalho) →
Data Structures & Algorithms
Arrays, hashmaps, trees, graphs, dynamic programming — not just for interviews. Knowing when a hashmap collapses O(n²) to O(n) is table stakes.
- tutorial free NeetCode Roadmap →
- docs free Competitive Programming Algorithms →
- book paid CLRS — Introduction to Algorithms (MIT Press) →
- book free Hello Algo (interactive) →
Clean Code & Refactoring
Names that don't lie, functions that do one thing, tests that document behaviour. The daily discipline that separates seniors from juniors.
- book paid Clean Code (Robert C. Martin) →
- book paid Refactoring (Fowler) →
- tutorial free Refactoring Guru →
2. Version Control & Collaboration
coreGit Fluency
Beyond commit/push — rebase, cherry-pick, bisect, reflog. When production is broken and you need to find the commit that did it, this is what you reach for.
- book free Pro Git →
- tutorial free Learn Git Branching (interactive) →
- blog free Oh Shit, Git!?! →
Code Review
Writing PRs that are easy to review, reviewing PRs kindly and rigorously. This is where team culture is transmitted.
- docs free Google Engineering Practices — Code Review →
- blog free Michael Lynch — Human Code Reviews →
3. Computer Science Foundations
coreOperating Systems
Processes, threads, memory management, filesystems, syscalls. Explains every weird production behaviour you'll ever encounter.
- book free Operating Systems: Three Easy Pieces →
- course free MIT Missing Semester →
Networking Basics
TCP/IP, HTTP, DNS, TLS. When your service can't reach another service, this is what you debug.
- book free Beej's Guide to Network Programming →
- docs free HTTP Semantics (RFC 9110) →
- tutorial free How DNS Works (comic) →
4. Systems Design
coreDesign Fundamentals
Latency, throughput, availability, consistency. The five words every senior interview loop hinges on.
- book paid Designing Data-Intensive Applications (Kleppmann) →
- repo free System Design Primer (GitHub) →
- channel mixed ByteByteGo (Alex Xu) →
Caching Strategies
Cache invalidation is one of the two hard things. Learn Redis, cache aside, write-through, TTLs, and stampede prevention.
- docs free Redis Docs →
- docs free AWS Caching Best Practices →
Monolith vs Microservices
The industry has swung back toward modular monoliths. Understand when each shape actually serves the team, not the résumé.
- blog free Martin Fowler — Microservices →
- book paid Building Microservices (Newman) →
5. Testing
coreUnit Tests
Fast, deterministic, isolated. AAA (arrange-act-assert), test doubles, table-driven tests.
- blog free Martin Fowler — Unit Test →
- book paid GOOS — Growing Object-Oriented Software →
Integration & End-to-End Tests
The tests that catch what unit tests miss. Docker Compose, testcontainers, Playwright, Cypress.
- docs free Testcontainers →
- docs free Playwright →
6. Databases
coreSQL
Every backend engineer writes SQL. Master joins, aggregations, window functions, and reading EXPLAIN plans.
- tutorial free SQLBolt →
- book free Use The Index, Luke! →
- tutorial free PostgreSQL Tutorial →
NoSQL — When and Why
Document (Mongo), key-value (Redis, DynamoDB), wide-column (Cassandra), search (Elasticsearch). Pick by access pattern, not hype.
- docs free MongoDB Docs →
- docs free DynamoDB Guide →
7. Web Fundamentals
coreHTTP
Methods, status codes, headers, caching, cookies, CORS. The layer everything web-shaped runs on.
- docs free MDN — HTTP →
- book free High Performance Browser Networking →
REST, GraphQL, gRPC
When to use each. REST for public APIs, GraphQL for aggregating many backends, gRPC for internal service-to-service.
- docs free Google API Design Guide →
- docs free GraphQL Learn →
- docs free gRPC Docs →
8. CI/CD & DevOps Basics
coreDocker & Containers
Every modern deploy is containerized. Learn images, layers, multi-stage builds, and image size hygiene.
- docs free Docker Docs →
- docs free The Twelve-Factor App →
GitHub Actions / CI Pipelines
Build, test, deploy on every push. Pipeline-as-code is the norm.
- docs free GitHub Actions Docs →
9. Security Fundamentals
recommendedOWASP Top 10
The vulnerabilities that ship in production every day. Read the list, understand each one, know how to prevent it in your stack.
- docs free OWASP Top 10 →
- course free PortSwigger Web Security Academy →
AuthN vs AuthZ
Sessions, JWTs, OAuth2, OIDC, RBAC. The subject of ~30% of interview design questions.
- docs free OAuth 2.0 →
- tutorial free OAuth 2.0 Simplified →
10. Observability & Debugging
recommendedLogs, Metrics, Traces
The three pillars. Structured logs, RED/USE metrics, distributed tracing with OpenTelemetry.
- docs free OpenTelemetry Docs →
- book free Google SRE Book →
Debugging in Production
Reproducing bugs from logs alone, reading heap dumps, using profilers. The skill that separates senior from mid.
11. Cloud Fundamentals
recommendedAWS Basics
EC2, S3, IAM, RDS, Lambda, VPC. The subset every backend engineer touches.
- docs free AWS Getting Started →
- docs free AWS — Getting Started →
12. Career & Craft
optionalWriting Technical Design Docs
Every non-trivial change deserves a doc: problem, options, chosen approach, rollout plan.
- blog free Design Docs at Google (Malte Ubl) →
The Staff / Principal Path
What it takes to get past Senior. Scope, impact, technical leadership without direct reports.
- book free StaffEng (Will Larson) →
- blog free Irrational Exuberance (Will Larson blog) →