33.1. What You Should Know Now
Table of Contents
Big Picture: Where You Are Now
By the time you reach this chapter, you should have walked through the full backend stack at least once. You are not expected to master everything yet. What matters is:
- You know the main parts of a backend system.
- You can build and run a simple backend yourself.
- You can explain what you do to someone else.
This chapter is a checklist and reflection guide. Use it to see what you already know, what is still fuzzy, and what to review next.
Rule: Treat this chapter as a skills checklist, not as a new theory lesson. Mark each area as:
- β Confident
- π‘ Understand a bit
- π΄ Need to study and practice
Core Concepts of Backend Development
You should now be able to describe, in your own words:
- What backend development is and how it differs from frontend.
- How a web request travels from browser to server and back.
- What an API is and why backends expose APIs.
Try to answer these questions without looking at notes:
- What is the difference between a client and a server?
- What is the request-response cycle?
- What is an API and why do frontends call it?
If you struggle to give a clear 2 or 3 sentence answer, mark this area as π‘ or π΄ and revisit those earlier chapters.
A tiny self-check exercise:
| Concept | Can you do this? | Status |
|---|---|---|
| Explain backend in 2β3 lines | Describe to a non-technical friend what a backend is | |
| Draw architecture | Draw a simple diagram: browser β API server β database | |
| Explain REST | Explain why REST APIs use URLs, HTTP methods, and status codes |
Fill in the "Status" for yourself.
Web and HTTP Knowledge
Backend development is deeply tied to HTTP and to how the web works.
At this point you should:
- Know what a URL is and what happens when you enter it in a browser.
- Recognize main HTTP methods:
GET,POST,PUT,PATCH,DELETE. - Understand status codes like
200,400,401,403,404,500. - Know what JSON typically looks like in requests and responses.
Try to mentally walk through this scenario:
A user opens https://example.com/api/tasks?completed=false in the browser.
You should be able to say:
- Which part is the protocol, domain, path, and query string.
- That the browser sends an HTTP
GETrequest to your server. - That the server returns a
200 OKwith a JSON list of tasks or a proper error.
A quick recall table:
| Topic | You should be able to⦠| Status |
|---|---|---|
| URL structure | Point out protocol, domain, path, query parameters | |
| HTTP methods | Say when to use GET vs POST vs PUT vs DELETE | |
| Status codes | Pick the right status for success, not found, validation errors | |
| Headers, cookies, auth | Explain the basic idea of headers and cookies for auth and sessions |
If you cannot quickly think of an example of each, review the web and HTTP chapters.
Programming and Python Fundamentals
You have used Python as your main backend language. You should now be comfortable with:
- Variables, data types, conditions, loops, functions.
- Working with lists and dictionaries for structured data.
- Writing and importing modules.
- Handling errors with
try/except. - Reading and writing files.
- Basic object-oriented programming.
In practical backend terms, that means:
- You can write a helper function that validates data.
- You can handle unexpected errors without crashing the app.
- You can structure your code over multiple files.
A simple self-check snippet:
Ask yourself if you can implement something like this from scratch:
# validation.py
def validate_task_payload(payload: dict) -> dict:
if "title" not in payload or not payload["title"]:
raise ValueError("Title is required")
payload.setdefault("completed", False)
return payloadAnd then use it inside a FastAPI route. If that feels too hard, you need more Python and error handling practice.
Mini checklist:
| Python topic | Practical ability you should have | Status |
|---|---|---|
| Functions | Write small reusable functions with arguments and return values | |
| Data structures | Use lists and dicts to represent tasks, users, etc. | |
| Exceptions | Use try / except to handle predictable errors | |
| Modules | Split code into multiple .py files and import between them | |
| OOP basics | Create simple classes and understand attributes and methods |
Building Web Backends and REST APIs
You have written at least one simple REST API, probably with FastAPI. Even if everything is not fluent yet, you should at least:
- Know how to define routes / endpoints.
- Handle path and query parameters.
- Accept JSON request bodies.
- Return JSON responses with proper status codes.
- Validate input and define response models.
For example, you should be able to read this and understand every part:
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
app = FastAPI()
class TaskCreate(BaseModel):
title: str
completed: bool = False
class Task(TaskCreate):
id: int
tasks_db: list[Task] = []
@app.post("/tasks", response_model=Task, status_code=201)
def create_task(task: TaskCreate):
new_id = len(tasks_db) + 1
new_task = Task(id=new_id, **task.dict())
tasks_db.append(new_task)
return new_taskYou should be able to answer:
- How does FastAPI know this is a POST endpoint?
- How is the request body validated?
- What is sent back to the client?
Self-check:
| API concept | What you should be able to do | Status |
|---|---|---|
| Routes / endpoints | Add a new route to an existing FastAPI app | |
| Path & query params | Read and use URL parameters in handlers | |
| Request body | Read JSON into a Pydantic model and validate required fields | |
| Response models | Return consistent shapes for responses | |
| Error responses | Return 400, 404, etc with a JSON error message |
If you have never added an endpoint yourself or changed an existing one, plan to practice this soon.
Databases and SQL Basics
You were introduced to relational databases, PostgreSQL, and SQL.
At this point, you should:
- Understand the idea of tables, rows, and columns.
- Know what a primary key is and why it exists.
- Understand basic relationships like one-to-many.
- Write simple SQL queries to select, insert, update, and delete data.
For example, you should be able to understand queries like:
CREATE TABLE tasks (
id SERIAL PRIMARY KEY,
title TEXT NOT NULL,
completed BOOLEAN NOT NULL DEFAULT FALSE
);
INSERT INTO tasks (title) VALUES ('Learn backend');
SELECT * FROM tasks WHERE completed = FALSE;Do a quick mental test:
- Could you add a
created_atcolumn to thetaskstable? - Could you write a query to get only completed tasks?
Self-check:
| Database topic | You should be able to⦠| Status |
|---|---|---|
| Tables & rows | Describe a table as a spreadsheet with rows and typed columns | |
| Primary keys | Explain why every row needs a unique identifier | |
| Simple queries | Write SELECT, INSERT, UPDATE, DELETE with WHERE | |
| Joins (basic idea) | Explain why joins connect data from related tables |
At this stage, you do not need advanced SQL or performance tuning, only the basics.
ORM and Integrating Databases with Code
You have seen how to connect Python code to a database using an ORM such as SQLAlchemy.
You should now:
- Understand that ORM models map to database tables.
- Know that you can create, read, update, and delete rows through these models.
- Be able to wire a FastAPI endpoint to use a database session.
For instance, consider this simplified model:
from sqlalchemy.orm import DeclarativeBase, Mapped, mapped_column
from sqlalchemy import String, Boolean
class Base(DeclarativeBase):
pass
class Task(Base):
__tablename__ = "tasks"
id: Mapped[int] = mapped_column(primary_key=True, index=True)
title: Mapped[str] = mapped_column(String, nullable=False)
completed: Mapped[bool] = mapped_column(Boolean, default=False)You should understand:
- This defines a table
tasks. - Each instance of
Taskcorresponds to one row. - You can query tasks using a
Session.
Checklist:
| ORM concept | Ability | Status |
|---|---|---|
| Models | Define a basic model that maps to a table | |
| CRUD operations | Use an ORM session to add, query, update, and delete objects | |
| Sessions | Understand that sessions represent a database connection context | |
| Simple relationships | Have at least seen one-to-many relationships in ORM |
If you have not yet connected your FastAPI app to a real database, this is a great next practice step.
Authentication, Security, and Sessions
You were introduced to authentication concepts like passwords, tokens, and sessions.
You should now:
- Understand the difference between authentication and authorization.
- Know why passwords must be hashed, not stored in plain text.
- Have seen how JWTs or session cookies are used to keep users logged in.
- Understand the idea of protecting certain routes so only logged-in users can call them.
You do not need to design a production grade security system yet, but:
- You should know what a secure password hashing function is used for.
- You should know why HTTPS is required in production.
- You should have heard of common attack types like SQL injection and XSS.
Self-check:
| Security topic | Minimal understanding you should have | Status |
|---|---|---|
| Auth vs authz | Can explain difference in 1 sentence each | |
| Password hashing | Know why hashing is needed and what happens if you skip it | |
| Tokens / sessions | Know the idea of storing login state on client or server | |
| Basic security risks | Recognize names: SQL injection, XSS, CSRF, brute force |
If these words are completely new or confusing, plan to revisit the security chapters.
Tools: Git, Docker, and Deployment Basics
You were exposed to tooling that real backend developers use daily.
By now you should:
- Use Git to initialize a repository, commit changes, and push to GitHub or GitLab.
- Understand the idea of branches and why feature branches are useful.
- Have seen how to run your app in Docker, or at least understand why containers are useful.
- Know that deployment to production involves configuration, secrets, and running the app on a server.
You do not need to be a DevOps expert, but you should not be scared of:
- A
Dockerfilethat runs a FastAPI app. - A simple
docker-compose.ymlthat starts your app and a database.
Self-check:
| Tooling | Practical skill | Status |
|---|---|---|
| Git basics | git init, git add, git commit, git push | |
| Branches | Create and switch branches, merge basic changes | |
| GitHub / GitLab | Host a repository and clone/pull from it | |
| Docker (basic) | Understand image vs container and read a simple Dockerfile |
Project Skills: From Requirements to Working API
You have completed or at least seen multiple projects, such as:
- Task Management API
- Authentication System
- E-commerce Backend
- Final Production-Ready Backend
From these, what matters most is that you:
- Can take written requirements and turn them into endpoints and database tables.
- Can iteratively build features instead of trying to do everything at once.
- Can test endpoints using a tool like cURL or an API client.
- Can write minimal documentation for your API (for example, with OpenAPI / Swagger).
Think about one project you completed in this course and check:
| Project aspect | Can you do this independently now? | Status |
|---|---|---|
| Understand requirements | Turn a text spec into a list of resources and endpoints | |
| Design basic schema | Sketch tables and relationships for the main entities | |
| Implement API | Create endpoints that match the design and connect to DB | |
| Add auth | Protect at least some endpoints with login / tokens | |
| Test manually | Use an API client to check responses and edge cases |
If the answer is no in many rows, pick one project and rebuild it slowly, step by step.
How to Use This Checklist
To get real value, do not just read this chapter. Actually:
- Print or copy the tables.
- For each row, mark your current status: β , π‘, or π΄.
- Pick at most 2 red areas to focus on in the next couple of weeks.
- Plan small practice tasks for those areas.
Example practice tasks:
- If HTTP is weak, write a tiny API with 3 endpoints that use different methods and status codes.
- If SQL is weak, write 10 different queries against a sample
usersandorderstable. - If Git is weak, create a sample repo, open a feature branch, make a change, and merge it.
Important: Do not try to fix everything at once.
Choose a small number of weak areas, practice them with tiny projects, and then revisit this checklist.
The Minimum You Should Know Now
Summarizing, by this point you should at least:
- Understand what backend development is and how the web works at a high level.
- Be able to create and run a simple FastAPI application on your machine.
- Know how to define endpoints, accept requests, and return JSON responses.
- Use Python confidently for basic logic, data structures, and error handling.
- Understand relational database basics and write simple SQL queries.
- Use an ORM to connect your API to a real database.
- Know basic concepts of authentication, authorization, and security risks.
- Use Git for version control and GitHub or GitLab for hosting your code.
- Have built at least one small API project from scratch.
If you can honestly say "yes" to most of these items, you are ready to move on to:
- Building a portfolio.
- Creating your own backend projects.
- Contributing to open source and preparing for interviews.
If not, this is not a failure. It is simply a map of where to go back and practice. Keep this chapter as your reference, and return to it as you grow as a backend developer.
Views: 6
KAHIBARO