A hands-on journey toward becoming a well-rounded software engineer by learning programming, computer science, systems, backend engineering, and production practices from first principles.
This repository records both the lessons and the code written while learning. Each track progresses through small exercises that are explained, implemented, verified, and committed before moving forward.
- C basics — memory, pointers, structs, allocation, and low-level programming
- Go basics — packages, interfaces, concurrency, testing, files, JSON, HTTP, middleware, and context
- PostgreSQL raw SQL — tables, constraints, joins, transactions, indexes, query plans, and parameterized application queries
- Python basics — language fundamentals and common Python patterns
- FastAPI foundations — API basics and CRUD application structure
- FastAPI CRUD — database-backed API practice
- Production Go HTTP server — module structure, routing,
/health, timeouts, and environment configuration (lessons 1–4 complete)
- Production Go HTTP server → PostgreSQL — opening a long-lived connection pool, startup verification, and graceful ownership; then versioned migrations and SQLC
programming foundations
|
v
data structures and algorithms
|
v
operating systems + networking
|
v
databases + backend engineering
|
v
testing + debugging + tooling
|
v
distributed systems
|
v
production software projects
Machine learning may be explored later as a specialization. The primary goal is broad, transferable software-engineering ability.
| Track | Purpose | Status |
|---|---|---|
c-basics/ |
Low-level programming and memory fundamentals | Complete |
python-basics/ |
Python language foundations | In progress |
go-basics/ |
Go and backend-concurrency foundations | Complete |
fastapi-basics/ |
Python HTTP API foundations | In progress |
fastapi-crud/ |
Database-backed API practice | In progress |
dsa-go/ |
Data structures, algorithms, and complexity | In progress |
databases/ |
Persistent data, SQL, indexes, and transactions | Complete |
go-http-server/ |
Production Go HTTP server connected to PostgreSQL | Current |
networking/ |
Protocols, packets, HTTP, and network debugging | Planned |
operating-systems/ |
Processes, memory, files, and concurrency | Planned |
system-design/ |
Scalable and reliable system architecture | Planned |
security/ |
Threats, trust, authentication, and secure software | Planned |
deployment/ |
Delivery, containers, observability, and operations | Planned |
production-projects/ |
Complete production-quality software projects | Planned |
Each problem follows the same feedback loop:
read the concept
|
v
implement one focused problem
|
v
format + analyze + test + run
|
v
understand failures
|
v
commit and continue
Conceptual guides live in each track's lessons/ directory. The current exercise remains in that track's main source file unless the concept specifically requires multiple files.
cd go-http-server
go run ./cmd/apiSee go-http-server/lessons/05-postgres-connection.md for the next server lesson: connect the Go server to PostgreSQL.