Backend Basics
The everyday building blocks of a web service.
Backend Engineer track
Junior
Write correct code, ship small changes safely, ask good questions.
Core: start here
- Background JobWork done outside the request, like sending an email.
- ConfigurationSettings that change between environments, kept out of code.
- Environment VariableA key-value setting passed to processes from their environment.
- Environments (dev, staging, prod)Separate deployments for development, testing and real users.
- Input ValidationChecking every input at the boundary before using it.
- Log LevelsDEBUG, INFO, WARN and ERROR, and when to use each.
- LoggingRecording what the application does so you can debug it later.
- N+1 Query ProblemOne query for a list, then one more query for every item in it.
- ORMMapping database tables to objects in code.
- PaginationReturning large result sets one page at a time.
- RoutingMapping URLs and methods to handler code.
- SessionServer-side memory of a logged-in user, referenced by a random ID the browser sends on each request.
- TimeoutsNever waiting forever on a network call.
- Web FrameworkLibraries like Express, Django, Spring or FastAPI for building web apps.
12 more junior concepts
- BackendThe server side: business logic, data and integrations.
- Business LogicThe rules that make your product what it is.
- File UploadsAccepting, validating and storing files from users.
- Filtering and SortingLetting clients narrow down and order results.
- Health CheckAn endpoint reporting whether the service is alive and ready.
- MVCModel-View-Controller: separating data, presentation and input handling.
- Request Handler / ControllerThe code that processes a single request.
- Request LifecycleWhat happens between a request arriving and a response leaving.
- Scheduled JobsTasks that run on a schedule, like nightly cleanups.
- Sending EmailTransactional email through a provider, and deliverability basics.
- Web ServerSoftware that accepts HTTP requests and returns responses.
- Web Servers (Nginx, Apache, Caddy)The common servers that sit in front of applications.
Mid-level
Own a feature end to end without hand-holding.
Core: start here
- Dependency InjectionPassing dependencies in instead of creating them inside.
- Feature FlagsTurning features on and off without deploying.
- Offset vs Cursor PaginationSimple page numbers vs stable, scalable cursors.
- Structured LoggingLogging key-value fields instead of free text.
- The Twelve-Factor AppTwelve practices for building deployable, scalable web services.
16 more mid-level concepts
- Admin and Back-Office ToolsInternal tools for support and operations to view and fix data.
- Application ServerThe process that runs your code behind the web server, like Gunicorn, Puma or Tomcat.
- Connection PoolingReusing a set of open connections instead of opening new ones.
- DTOA plain object for moving data between layers or over the wire.
- Graceful ShutdownFinishing in-flight work before exiting on SIGTERM.
- Layered ArchitectureControllers, services and data access as separate layers.
- Log Rotation and RetentionKeeping logs from filling the disk.
- ORM vs Raw SQLConvenience and safety vs control and performance.
- Payments IntegrationUsing providers like Stripe safely, with webhooks and idempotency.
- Query BuilderComposing SQL in code without a full ORM.
- Request ContextPer-request data like the current user, request ID and deadline, passed through the code.
- Serverless FunctionsRunning code per request without managing servers.
- Service LayerWhere business logic lives, apart from HTTP and storage.
- Third-Party IntegrationsCalling payment, email and other external APIs reliably.
- Unbounded Result SetsQueries and APIs that return "everything", until everything is a million rows.
- WSGI and ASGIPython's standard interfaces between web servers and applications, synchronous and async.
Senior
Own a system, its failure modes, and its trade-offs.
- Choosing a Backend LanguageWeighing ecosystem, performance and team skills.
- Context PropagationCarrying request IDs, deadlines and trace context across threads and services.
- Let It CrashRestarting a failed component cleanly instead of handling every error inside it.
- Multi-TenancyServing many customers from one system while keeping their data apart.
- Steady StateDesigning systems to clean up after themselves: purging data, rotating logs.
- Worker and Process ModelsPre-fork workers, threads or an event loop: how a server handles many requests at once.
Staff
Shape how many teams build, across systems.
Nothing here yet.
Principal
Set technical direction for the organization.
Nothing here yet.
Data Analyst track
Junior
Write correct SQL, build trusted dashboards, ask good questions.
Nothing here yet.
Mid-level
Own an analysis end to end, from vague question to recommendation.
- PaginationReturning large result sets one page at a time.
Senior
Own experimentation and metrics design; call out bad numbers.
- Feature FlagsTurning features on and off without deploying.
Staff
Shape how the organization measures and decides.
Nothing here yet.
Principal
Set measurement strategy across the company.
Nothing here yet.
Data Engineer track
Junior
Build and fix pipelines from clear specs; write correct SQL.
Core: start here
- Environment VariableA key-value setting passed to processes from their environment.
- LoggingRecording what the application does so you can debug it later.
8 more junior concepts
- Background JobWork done outside the request, like sending an email.
- ConfigurationSettings that change between environments, kept out of code.
- Environments (dev, staging, prod)Separate deployments for development, testing and real users.
- Log LevelsDEBUG, INFO, WARN and ERROR, and when to use each.
- N+1 Query ProblemOne query for a list, then one more query for every item in it.
- PaginationReturning large result sets one page at a time.
- Scheduled JobsTasks that run on a schedule, like nightly cleanups.
- TimeoutsNever waiting forever on a network call.
Mid-level
Own pipelines and models end to end, including their quality.
- Connection PoolingReusing a set of open connections instead of opening new ones.
- Dependency InjectionPassing dependencies in instead of creating them inside.
- Graceful ShutdownFinishing in-flight work before exiting on SIGTERM.
- Offset vs Cursor PaginationSimple page numbers vs stable, scalable cursors.
- Serverless FunctionsRunning code per request without managing servers.
- Structured LoggingLogging key-value fields instead of free text.
- The Twelve-Factor AppTwelve practices for building deployable, scalable web services.
- Third-Party IntegrationsCalling payment, email and other external APIs reliably.
Senior
Design the platform's storage, processing and modeling choices.
Nothing here yet.
Staff
Shape how the whole organization produces and uses data.
Nothing here yet.
Principal
Set data strategy and architecture across the company.
Nothing here yet.
Frontend Engineer track
Junior
Build UI that works, ship small changes safely, ask good questions.
- BackendThe server side: business logic, data and integrations.
- Business LogicThe rules that make your product what it is.
- ConfigurationSettings that change between environments, kept out of code.
- Environment VariableA key-value setting passed to processes from their environment.
- Environments (dev, staging, prod)Separate deployments for development, testing and real users.
- File UploadsAccepting, validating and storing files from users.
- Filtering and SortingLetting clients narrow down and order results.
- Input ValidationChecking every input at the boundary before using it.
- Log LevelsDEBUG, INFO, WARN and ERROR, and when to use each.
- LoggingRecording what the application does so you can debug it later.
- MVCModel-View-Controller: separating data, presentation and input handling.
- N+1 Query ProblemOne query for a list, then one more query for every item in it.
- PaginationReturning large result sets one page at a time.
- SessionServer-side memory of a logged-in user, referenced by a random ID the browser sends on each request.
- TimeoutsNever waiting forever on a network call.
- Web FrameworkLibraries like Express, Django, Spring or FastAPI for building web apps.
- Web ServerSoftware that accepts HTTP requests and returns responses.
- Web Servers (Nginx, Apache, Caddy)The common servers that sit in front of applications.
Mid-level
Own a feature end to end without hand-holding.
Core: start here
- Feature FlagsTurning features on and off without deploying.
10 more mid-level concepts
- Dependency InjectionPassing dependencies in instead of creating them inside.
- DTOA plain object for moving data between layers or over the wire.
- Layered ArchitectureControllers, services and data access as separate layers.
- Offset vs Cursor PaginationSimple page numbers vs stable, scalable cursors.
- Payments IntegrationUsing providers like Stripe safely, with webhooks and idempotency.
- Serverless FunctionsRunning code per request without managing servers.
- Structured LoggingLogging key-value fields instead of free text.
- The Twelve-Factor AppTwelve practices for building deployable, scalable web services.
- Third-Party IntegrationsCalling payment, email and other external APIs reliably.
- Unbounded Result SetsQueries and APIs that return "everything", until everything is a million rows.
Senior
Own an app's architecture, performance, and failure modes.
- Context PropagationCarrying request IDs, deadlines and trace context across threads and services.
Staff
Shape how many teams build, across apps.
Nothing here yet.
Principal
Set technical direction for the organization.
Nothing here yet.