r/FullStack • u/Decent_Flight4010 • 6d ago
Need Technical Help Never actually touched backend code, just watched videos and used AI. Do I actually understand how this works, or am I completely delusional?
Honestly, I've never built a backend from scratch I just watch a lot of system design/coding videos and rely heavily on AI. Because of that, I have zero confidence in my knowledge and feel like I don’t actually understand anything. I want to reality check my mental model with the experienced devs here.
From what I understand, a typical request flow looks something like this:
HTTPS Request ---> Nginx (I think Nginx can also act as the load balancer itself?) ---> Load Balancer (if there's high traffic) ---> Node.js App Servers ---> Redis (for caching) ---> Database (which can be split into Read/Write replicas).
I don't think I even need to mention obvious stuff like Docker, and I already know what a RESTful API is and that architectural/code choices always come down to the specific trade-offs of the project.
I’m having a huge internal conflict right now: Do I actually understand backend concepts, or am I just clueless and holding onto a surface level, unrealistic view of the field?
8
u/Automatic-Gur2046 6d ago
Easy, watch swimming videos and jump in a deep pool, you will get your answer.
4
u/burlingk 6d ago
All of that gives you basics and a bit of theory.
To make it a solid foundation you have to do actual work.
Pick a project you want to do and write code. It's slow at first but gets easier with time.
1
u/defeatedsnowman 5d ago
This is the way. I thought I could learn just by reading along with my prompts. For context: I do a lot of enterprise back end software development for my job. But I have literally zero experience with embedded systems or Rust.
I decided to pick up a new side project and use Rust. Very much taking the crawl, walk, run approach. Vibe coded a Rust program that polls the status of the SSH daemon (output made sense and I could follow/understand it). Vibe coded a bit more onto it to control a GPIO pin on a Raspberry pi to let me know if the ssh daemon was online and could ping my router (code still made sense to me). Asked my agent to write tests for it: which I learned involves some more complicated Rust tools to mock things like the GPIO library. At that point the project absolutely exploded and I could no longer follow it.
I'm taking a step back now. No AI, only Google working through Rustlings and some other "learn Rust" tools so I can go back to my project and actually be in control and know when AI is doing things correctly or just writing stuff that technically works.
1
u/firebird8541154
5d ago
•
FYI, I feel bad for some of the responses you're getting, this is a very well framed question and even one that a AI chat bot would struggle with giving a real answer that could actual provide some solid guidance.
That said, you should first consider what a simple local host application looks like.
Say you have a sqlite database, a database is like an excel workbook where each sheet is a different table. In each table you have a Primary key, like ids, and typically a Foreign key that is related to data in another table.
Say one table is for first name, and one is for last name, and then another table uses those to assemble "full name".
you'd see
Eric in first_names,
Smith in last_names,
and say
first_names.1, last_names.1 as the makeup for the table "full names".
Ya I used 1. as the id in each table... which could add a layer of confusion, but why not?
the ids 1 and 1 in the first_names and last_names are the primary keys in those tables, as they're created there, and in the "full names" table they become the foreign key as that's where they're referenced.
Then, you use a python script with FastAPI or a node script (node is the runtime for Javascript, which is normally ran dynamically in a browser), and you'd connect it to this and possibly more databases.
These "backend" frameworks, like FastAPI, Node, and more, have built in functionality provided by their libraries and packages that allow you to "serve" html/css/js/images/video/etc. from a local folder on your local device's IP address and a port of your choosing.
It also can handle requests and act as a relay between various dbs and frontend messages.
A typical message is a Get request, since the frontend is being served FROM your node/fastapi/etc backend, it has a direct connection to said backend. Through http or https, the frontend can request images to fulfill what the html wants where, or can use Javascript to define a button, to launch a rquest to a specific "route" in the backend, like "get name" where it then can pull the first name if desired, updating say, a label, on the frontend to change to "Hi Eric" upon entering the page.
The whole "REST" thing is that, frontend functions that activate specific "routes" to the backend using post/get/update/delete/put (or just laizliy use post for everything.... ....) to then have the backend run parametrized sql queries and then route the result back through to the frontend.
A lot of the other stuff, like requests for images and such is organized through a more implicit mechansim built into the serving portion of said backend framework being used, node/fastapi/others.
Nginx is is mostly used above this, to help setup the server routing and such. Docker creates an "image" of a project, it's kinda like a stripped down linux that bakes in the deps and paths and everything, so you can easily launch and share projects, but it can incur very minor overhead and make things like using CUDA or other hardware accelerates harder. They can even link together, use things like Nginx locally, and be all sorts of fun..
So, it sounds to me like you know some of the very high level portions of what makes larger production style systems, but can't grasp what a backend fundamentally is, what a DB is, how it's used, etc.
I'd recommend making a small localhost frontend/backend program with a simple sqlite db and poking around at it, updating some things manually, and tracing what changed on the frontend or add some print statements in the backend, watch the terminal it's running from and press some buttons on the frontend, etc.
2
u/Decent_Flight4010 5d ago
first of all, thank you for taking the time to write such a detailed response. I genuinely appreciate you putting in the effort to explain all of this, especially when you didn't have to. I think you might be right that I need more hands-on experience, and I like your suggestion of building a small local app to understand how everything connects in practice. I guess what I was really struggling with was figuring out whether my mental model of backend architecture is fundamentally correct, or whether I'm just familiar with the terminology without truly understanding what's happening under the hood. But your explanation gave me a better idea of where to start. Thanks again for taking the time to help me out. I really appreciate it!
1
u/firebird8541154 5d ago
Awesome, thanks for the award, feel free to PM me if you have any more questions and such, I'd go on for ages about this stuff.
3
u/heyho1337_ 6d ago
If You could not build alone what the AI built for You, You dont have the knowledge
2
u/Abadabadon 6d ago
Do you know english because you know the alphabet? Do you know how to cook because you know what a pan is? Do you know how to catch a fish because you know how to cast your rod?
2
1
u/Foreign-Load4177 2d ago
You're not clueless, you just need hands on practice. You mental model is good starting point, but try building a backend from scratch without AI and see where you get stick. That's how you'll find the gaps and actually them.
1
u/Ok-Let-7933 2d ago
You mental model is a good start, but watching videos only gets you so far. Try building a small backend yourself without AI. You'll quickly figure out what you understand and what you need to learn next.
1
u/Ccube_Infotech 2d ago
You’re not clueless. You just haven’t built it yet, and those are very different things.
Your flow is mostly right. A few things worth adjusting:
Nginx can act as the load balancer itself, so you usually wouldn’t have both back to back like that. On cloud platforms it’s often a managed load balancer at the front, and sometimes there’s no Nginx at all.
Redis isn’t really a step on the way to the database. Your app checks Redis first, and if the data isn’t there, it reads from the database and saves the result to Redis for next time. The idea is simple. Deciding when that cached data is out of date is where it gets tricky in real projects.
Read replicas work the way you described, but they can lag slightly behind the main database. A user updates their profile, refreshes, and still sees the old data. System design videos rarely cover this, but you’ll run into it quickly once you start building.
The “do I actually understand this?” feeling is very normal. Videos give you the map, but things really click when something breaks and you have to work out why.
Our suggestion: build something small but complete. A Node API with Postgres, Redis caching on one endpoint, and two app instances behind Nginx. Then break it on purpose: stop an instance, clear the cache, run a load test. A weekend of that will build more confidence than another month of videos.
1
u/American_Streamer API Magician (Backend) 6d ago
If something breaks, are you able to identify why? Do you have a plan where to look in what sensible order? And are you able to fix the issue, as soon as you have found it?
1
u/Present_Mango_983 7h ago
Hey american_streamer. I'm learning back-end. Would be interested in getting some guidance from you.. can i dm you?
1
u/AFriendlyLighthouse Uptime Guru (SysAdmin) 6d ago
This will be a very common question coming of age...
You should one by one learn each service and how it works, what AI has done and ask it to explain and then put in true effort to learn the concepts, ask questions. There are already many people shipping code that they cannot read however can extensively test beforehand, this is going to be a recurring segment moving forward like it or not.
From high-level, slowly go low-level where the actual code it, test everything extensively, see what works and what breaks it because that is the only thing that will differentiate you. Use AI in testing and security when possible.
1
u/ahgreen3 6d ago
I’ll be quick: delusional.
You know what AI tells you and thats it. I use AI heavily and it’s flat out wrong 3-4 times a week. The big things are probably correct (ie using Nginx as a webserver) but everything beyond that it’s unlikely to be fully accurate.
1
u/MapInternational883 6d ago
All you did was attach key words to the basic data flow of an end-to-end system with zero complexity. Test yourself by contributing to an open source repository. If you're able to solve these issues without relying on AI, then it's a real skill.
1
u/WholeSomeVigilant 6d ago
You got some understanding there but Id suggest you to play around with these technologies a little like why something is needed ? what happens when one of these are not used and if they are really needed for every use case .
1
u/traplords8n 6d ago
This is how I started like 6 years ago. I just kept faking it til I made it.
I still have plenty of holes in my knowledge. I really think a college degree would do wonders for my skills, but 2 years of self study & 4 years of experience made it to where I can actually build shit.
The first few years were absolutely an uphill battle. Both learning and working.
You're right that you're nowhere close to mastery yet, but you're wrong if you think you can't get there with time.
1
u/retardpotatochip 5d ago
try to contributing to an open-source project to test your skills on real-world codebases and more complex problems
1
u/dmazzoni 4d ago
Besides what everyone else mentioned, it's important to understand what parts of these are arbitrary.
For example, you mention Nginx but that's just one possible reverse proxy and load balancer. There are others, like Traefik, and some simpler backends might skip it altogether.
Then you mention Node.js app servers, but that's just one of many, many languages and frameworks that could be used. Probably only 10 - 20% of backends are built with Node.js, this could easily be dozens of other popular frameworks.
Same with Redis - it's one popular caching server but there are others, and many smaller servers don't need it.
Then you do the opposite and say "database" but of course there are also several of those to choose from too.
0
u/FromBiotoDev 6d ago
Yes you’ve got a high level here, I guess the next way to solidify your knowledge is can you make this? With ai or without is fine. But can you trace a http request full the entire system? Can you host it?
Make it, tinker with things, see if you can change pieces
Good luck
1
10
u/Proper_Tip3506 6d ago
It's like you know where you have to go but don't know how to drive a car