Just as any basketball player is nothing more than a fit person with good aim in the eyes of a non-sports fan, a non-tech person sees web development as a homogeneous profession, where almost anybody is able to do the same tasks and get the same results. The reality, however, is a far cry from that. Over the years, the web development community has evolved into individual specialist areas which each perform different tasks of the current stack.
I’d like you to think about bootstrapping a web project, just like a restaurant owner does when managing his/her business. A small two-person restaurant will probably only have one cook and one waiter attending the clients. Certainly, they will need to be versatile enough to help each other in stressful and bottleneck moments. However, in a restaurant with 20 staff, the picture can be quite different. It won’t be hard to see more specialized roles, like the maître d' who simply receives people at the door, or the pastry chef who specializes only in desserts.
The web development industry looks similar to that. Small projects normally need versatile profiles, while big projects need more specific ones. It is the responsibility of the person who is searching for a developer to know which are the different developer roles: who is the waiter, who is the head chef, who is the dessert specialist and who is the maître d'.
Below, I've tried to briefly describe the four main groups of web developers, so that you can classify them a little more effectively when you encounter a developer or when you’re searching for one:
1. Front-end developers & web designers
This is the group of people who specialize in user interface and user interactions.
To give you an idea, web designers are more likely to use software like Adobe Photoshop or Adobe Illustrator. They can design web pages in the same way that other designers do with a logotype. It’s not imperative in their job to know how to code that design or how to make it real in the browser.
It doesn’t matter how many times I have to click, as long as each click is a mindless, unambiguous choice.
— Steve Krug at “Don’t Make Me Think!”
To let you easily imagine what their work is like, think about a web application's homepage: one in which you can book travel destinations. It looks pretty nice and you want to sign up to get access some of the good deals they advertise. You easily find the sign-up button in the top right of the page and when you click it, another windows pops up asking you to sign up via Facebook or Twitter, or by using your own email though a field shown below. As you can see, the button was where you expected; the flow of the pages was perfectly smooth; the promotion of the campaign was effectively executed… which was probably all the work of the front-end developer or web designer.
As you can see, it’s not just about colors, typography or amazing animation — it’s also about improving the user experience. There are plenty of good professionals who can design pretty well, but it’s harder to find one who also cares about user interactions.
2. Back-end developers
These developers are responsible for the correct business logic implementation of the application; by which I mean the internal behavior of the processes of any software.
Let’s imagine the previous travel website example. You've definitely decided to sign up, so you click on the Sign up via Twitter button. Then, besides what happens on the interface, some interesting processes are taking place internally. First of all, you’ll be redirected to a Twitter page, where you will have to accept some information sharing terms. Once accepted, the software has to retrieve the information Twitter provides via its API and store it somehow in a permanent way — a database. It will take care not to sign you up twice in the future and probably will also send you an email thanking you for registering. It will create your account settings with the default values and it will redirect you to the dashboard, where you can start to book your travels. That’s a high level picture to give you idea of what clicking that button could mean in terms of business logic.
Back-end developers are the most programmer-orientated profiles in the developers' world. They usually worry about different ways of organizing the code in order to make it more maintainable in the future. That’s called pattern designs.
Any fool can write code that a computer can understand. Good programmers write code that humans can understand.
— Martin Fowler at “Refactoring: Improving the Design of Existing Code”
For example, a cook would do the same with his ingredients: he would organize the meat with the meat, the fish with the fish and the knives with the knives. He would also like to have every recipe ready to be cooked in an optimized way, and all the kitchen prepared for easy collaboration with the other cooks. This is a similar analogy of what a back-end developer — and in fact, any developer — does with a piece of software.
The SysAdmin (system administrator) is the person who configures the web server and ensures the correct performance and up-time of all the systems, including databases and background processes. He also takes care of the server's security and should always have the server updated with the latest software needed.
It’s a role which is especially important when an application is hosted in a non-managed server. This refers to when the provider of the server gives you a clean machine (similar to when you buy a new computer) where you have to start almost from scratch to install all the technologies needed to serve a web application. On the other hand, with managed servers or PaaS (platforms as a service), it is the provider themselves who give SysAdmin support, so in these cases it plays a less important role.
Let’s return to our travel example where you have already signed up via Twitter. The fact that the website was up and running smoothly, the fact that you received an scheduled email one day after the sign up, reminding you to book a trip, and the fact that your personal information is safe on the platform databases, are all in some way the responsibilities of the SysAdmin.
4. Full-stack web developer
A full stack developer is the most versatile profile. In all likelihood, he will not be the best at any of the fields; however, a good full-stack is able to provide competent results at any of them, whether it be configuring a web server, designing a user-friendly interface or implementing business logic. Or, even better, doing it all together on a web project.
Was Steve Jobs a better programmer than top coders at Apple? No, but he had a broad range of skills and saw the unseen interconnectedness.
— Tim Ferris at “The top 5 reasons to be a jack of all trades”
It is definitely the best profile for small projects or small developer teams, where everything has to be done by a small amount of people. It can also play an important role as a project manager on larger projects, since it is the person with the best overall understanding of the challenges of any field, due to him having fought in all the different arenas.
Back to our travel website: if this was a small platform, it could very well have been developed exclusively by one or two full-stack developers, probably one of them more design-wise than the other. Alternatively, the full-stack developer could also have played the leading role in a larger project, managing the others to ensure a good final end.
Hopefully, this brief explanation solves the doubts of those non-tech people whom are completely lost in this (sometimes fuzzy) developers' world. Feel free to send me a message if you still have doubts; I’ll add whatever is useful to the article.
I’ll write soon about the different kinds of developer personalities: code-passionate, scientist, pragmatic, efficient, jack of all trades, business wise… Follow me on Twitter or sign up to the newsletter to stay tuned.