It was once the case that most people working in website development had clearly defined roles within a development team, and they were rarely expected to overlap into other roles.
Things have changed. Now people may be expected to multi-task, and even in large organizations, job roles may be interchangeable between team members.
More and more, we are seeing job ads demanding “full stack developers”, and the problem is that not everyone fully understands what this term means. It's also not a reasonable requirement in many cases. It can often be seen that whoever placed the ad had no idea what the term means either, and just used it because everyone else is doing so.
Full stack development is, in fact, nothing special. Most likely you already have all the required skills, but you probably excel more in one particular area of the stack than in others. It's getting more difficult to get hired as a specialist, however, so being certain of a broad understanding of the core stack technologies is a good idea.
Why the demand for full stack developers is counter-productive
Designers are good at design. Coders are good at coding. Engineers are good at engineering. When you require an individual to be competent in every part of the design and development job, you may end up with less than perfect results.
That is simple logic. Somebody with a passion for design should be designing, just as much as somebody with a passion for code should be coding. If a born coder is forced to design something, he or she may come up with an acceptable design, but it most likely won't be as good as something designed by a born designer.
While it can be helpful for team members to understand each other's jobs, and even to be able to fill in for each other, it's usually best to allow each member to work to his or her strengths.
What is a full stack developer?
We'll begin by defining what “the stack” actually is. The idea of the stack is a group of interconnected technologies that make it possible for a site to exist.
A full stack developer, then, is somebody who can handle every layer in that stack of technologies without flinching.
The first layer: UX Research
The process of developing a website starts with figuring out what goal the site is supposed to achieve, and then developing a plan based on that goal.
User Experience (UX) is a loosely defined concept that is fundamental to modern site design and development. When planning the website, you will need to consider the UX you are creating. This requires some research to determine what attributes the site will need in order to deliver a positive UX.
The second layer: UI Design
Having determined the factors that will provide a positive UX, you now move on to design a User Interface (UI) that will address the UX factors you have identified.
This means thinking about things like loading indicators, the navigation menu, navigation breadcrumbs, site layout, backgrounds, images, fonts, colors, and maybe even more advanced things like audio and video.
The goal is to make all of these things as simple to access as possible, and to ensure they look good and function well. Ensuring the individual components are optimized is also a good idea to plan ahead for.
The third layer: Front End Development
Unless it is a very simple site, it probably won't be fully functional at this point. It will, however, be a working prototype that at least has the look and feel of what the finished site is supposed to be like.
The fourth layer: Back End Development
The back end of the site is where special enabling technologies are employed. If your site needs to do anything on the server side based on user actions (for example, processing the contents of a shopping cart before passing a request to PayPal), then this is where it happens.
There are plenty of different technologies you can select from to take care of these tasks, and some are more suitable than others. The most common choices just at the moment are PHP and Ruby, but there are well over 1000 choices that could just as equally be selected.
PHP is the most flexible and easiest solution, but may not necessarily be the most efficient. For anyone just starting their career, it is the best server side language to learn because it is easy to learn and because it is so widely used in so many ways.
This layer may sometimes include things like server setup and administration, network engineering, and so on.
The fifth layer: Database Administration
Designing and developing databases to support the tasks your site needs to handle can be a major job. To do this well, you need to master database architecture, and also become a master of SQL.
This is one of those things that sounds really easy and actually turns out to be more complex than expected. It all depends on how fancy the tasks to be handled will be.
How should a new developer go about gaining the skills needed?
The best way is to start learning from the fifth layer and work down to the first layer. That's because the layers are ordered by their difficulty to learn. The most difficult task is creating excellent databases, and it's also going to be the least interesting task for most people. Better to get it out of the way quickly, then.
Next, you would move on to the even easier task of UI design. Considering how easy this is, it is surprising so many sites have poorly designed user interfaces, or extremely derivative user interfaces. UI design is not the least bit difficult.
Finally you get to the most easy thing of all, which is UX research. The reason this one is so easy is because you've been involved in it since the day you were born. We come into the world reacting to things that either bring us joy or distress.
By the time you are an adult, you should have a good understanding of these things, and UX design is quite simply planning a user experience that includes more of the things that cause joy and less of the things that cause distress.
header image courtesy of