I've done a few years as a backend python developer. Most of what I did involved databases and making systems run, but now that I'm looking for a new job, it seems web stuff is a lot more popular.
I don't "get" all the web parts and terms. I've gotten my head around the basics of django, but it seems like how everything fits together still escapes me. Is there a point when it clicks or is it just a case of grinding through it?
Top comments (3)
Hi V,
I think that if you already have experience on backends, databases and system programming you already have lots of (server side) blocks to get web development. Frontend is another beast but you'll get there eventually.
I'm not completely sure what confuses you. Is it the frontend part of web programming? The MVC architecture of Django? The request-response cycle? HTTP itself?
What about stepping back one second from all the tooling and start with how HTTP works?
There is going to be a lot of new stuff you have to learn as you noticed but understanding one of those building blocks might help, after all the main job of a web framework is to send content to the client after a request (ok I'm simplifying "a bit" here :))
It seems like all the terms lead to each other and even if I start with a pure python thing like django, it leads into HTML, JS, CSS, templates and whole other mountain of stuff.
I also find that certain concepts are never clearly explained and seem to overlap a lot. I still struggle with what a webserver actually is. nginx and uwsgi are both webservers but I've seen examples of one hooking into the other with no real explanation as to why or how.
The backend part of a stack usually has pretty thick layers but more web/frontend tends to have a lot more parts involved and it's difficult to navigate for those unfamiliar with it.
HTML, JS and CSS are definitely something you're going to need to learn. Pick a starting place and start from there. Unfortunately it's not all easy (after all web development is one of the many parts of software development).
If you have concepts that you don't know how to grasp or you need more info on, please ask. Dev.to is full of capable web developers :-)
Let's start from the beginning:
Aa web server is just a server side piece of software that hosts a web site or a web app. The client, a web browser, asks for a specific URL (skipping DNS and routing here), a web server responds to that URL, tipically serves back a HTML page (plus likely CSS and JS).
Mozilla has a pretty good section called Common Questions - how the web works that should shed some of the confusion. Please spend some time on it.
NGINX is multiple things at a same time: a web server, an application server (hosts web apps), a load balancer (another term you will encounter at some point), a reverse proxy and more.
uWSGI is a bit of a misnomer. Initially it was a fast version of WSGI. WSGI is a "protocol" that Python web apps use to talk to the web server that hosts them. Right now uWSGI does more than that, it's also a container for apps.
I wouldn't worry about either of them right now. You need to get through the basics of the web.
Yeah, and you need to understand all of them a little bit, before deciding to focus more on the server or the frontend part.
Again, I think Mozilla's Getting started with the Web is a really good place to start for a complete beginner. They created the guide for that very reason.