The world is becoming more and more connected as the internet continues to cover more of the earth with signal. To understand the role of a web developer, one must understand (at least at a high level) the larger picture that web developers find themselves a part of.
Before we can talk specifically about what web developers do, we need to understand what all software developers do . Software developers write software. The programs that run on your phone, laptop, home computer, smart thermometer, and so on. They do this by writing computer code that tells the computer instructions to follow . If this code is written well, the computer is given instructions that do something useful and you have software that can be used by people all over the world.
There are many different areas of software development, but some of the more popular include:
Software developers all write code, it is more about what you expect your code to do and where your code will run that determines what kind of developer you are. Most seasoned developers will even abandon the specific role and just call themselves software developers / engineers as they know many of their skills will transfer to the many different areas of software development.
Web development is just a particular area of software development, and by that I mean that it is software written to be used in a very specific context. This specific context is, you guessed it, writing software to take advantage of the internet, web browsers and web servers (this is a bit of an over simplification, but it is a good starting point).
One thing that needs to be understood about being a web developer is that the code you write takes advantage of many underlying systems that are fairly complex. To illustrate what I mean, let’s introduce some of the layers that all interact with each other when you write your website code:
That all seems really complex (and trust me, it is) but you as a web developer are only responsible for writing code that runs in the users browser, and on your web server. This means that you as a web developer are responsible for steps 1 and 8. All of the middle steps are fairly minor concerns to you, the web developer.
Todays systems are so complex that in order to get anything done, we need to assume the pieces of the system work so that we can focus on our applications. It would be a nightmare if we had to also worry about the specific router that each possible user could have at their home, or how their ISP routes requests, or even what kind of wire is physically used to enable sending signal. At the end of the day, someone indeed has to worry about these things, but it is not the web developer.
By the way, the technical term for the idea of not worrying about complex underlying systems is called abstraction. You don’t need to worry about the CPU model of your users computer, it is an abstract concept to you the developer who just needs to write proper code that is valid in the language you choose to work with.
At this point you might be getting a little bit tired of hearing about things not specific to web development so let me finally talk about the specific things that a web developer does. While there are many different ways to talk about the code that web developers write, most people agree on these two distinctions:
It is also common to see the title of full-stack development. This is just being able to do both front-end and back-end development. When you really dive into full-stack web development, you start to notice that the interactions between front and back-end code is like a beautiful dance, where each system does their part in order to show the user a fully functional web application.
Front-End development is all about writing code that will run on your users devices and web browsers. The code you will write here is mostly focused on HTML, CSS and JavaScript. There are also many variations of these languages designed to make development easier but at the end of the day, everything that runs in a browser boils down to those 3 languages.
This code is entirely responsible for what the user sees on their web browser. It is not just design code, it can be just as logically complex as a sophisticated back-end system.
Back-End development is all about writing code that will on your website server. This is where your website will live so to say. On the back-end side of things, you have many options for the languages you can code in. Name a language and you can use it on your web server to serve your website. Some popular options are Python, Ruby, PHP, Java, C#, Go, Rust and so on. To be a back-end developer you will also need to understand the basics of how a database works. Again there are many options to choose from and some othe popular ones are MySQL, MariaDB, PostgreSQL, MongoDB, etc.
Maintaining your own server is not easy, so services like GoDaddy, HostGator, WpEngine and so on have emerged that will do a lot of basic web server tasks for people that don’t have the time to learn back-end development on their own. While this is up for debate, I firmly believe that in order to call yourself a full-stack developer you can’t be relying on services like GoDaddy or anything similar. You should be able to spin up a web server (either on your own local computer or through a cloud service) capable of serving complex applications. Most of the time this will involve learning how to interact with computers in a radically different way, but the effort is well worth it.
This blog post has a lot of information in it, so we will sum it up here. This is a huge topic that I have barely scratched the surface of and to add even more to the pile it is a field that is changing all the time with new inventions. Here is a bullet point list of the main take-aways:
Alex is a senior software engineer at Morgan Stanley. He enjoys teaching, writing, and the overall notion of honing ones skills through diligent and patient practice. "The only way you learn is through building, and the only way you build is by starting small"
Automated page speed optimizations for fast site performance