The term “full stack developer” is use quite regularly in the industry, whether it’s referring to job advertisements or when developers are talking about their own skills. This term has changed quite a bit in the IT industry, so let’s take a look at what it is, what you need to know, and how to become a full stack developer.
What Is A Full Stack Developer?
Let’s start by looking at the concept of a stack. A stack, when referring to software development, is all of the different layers and technologies that are used in developing software. These layers include:
- Client-side code
- Web browser
- Server-side code
- Web server
- Operating system
A stack is a combination of each of these layers.
So, back to the original question, what is a full stack developer?
A full stack developer is someone who is experienced with all roles and technologies across a particular stack. This mainly includes front-end development and back-end development.
How is this different from a normal developer? How is it different from someone who can develop web sites in PHP and can understand SQL?
Before we get into that, and the kinds of technologies that a full stack developer can know, we should look at how this term came to be.
History of the Full Stack Developer
An article on TechCrunch mentions a brief history of web development, which can be summarised as:
- 1980s-1990s: Client/server computing was used, with many developers having different roles in the process
- 1990s-2000s: Internet technology meant that the client/server architecture evolved and became more mainstream. New technologies were created, and each of them needed a different specialist.
- Mid 2000s: More technologies and widespread use of websites and applications meant creating new software was expensive. There were many specialists involved in creating something.
- Late 2000s: Newer technologies became easier to use, and meant that a single person could develop a website themselves.
What this means, is that at some point the technologies became too complicated for a single person to be able to work with. But, at another point, the shift was made, and now it is possible for a person to be able to be not only competent, but experienced, in many technologies that make up a stack.
This is where the “full stack developer” term has evolved to.
While the article on TechCrunch does confuse the term “cross platform” with “full stack”, it does provide a good history of the technologies involved.
So, what are these technologies? What does a full stack developer need to know to be able to call themselves a full stack developer? Let’s find out.
What Does A Full Stack Developer Need To Know?
A developer needs to know many things to be considered a full stack developer. Let’s break it down by the layers in the stack as we mentioned earlier.
The developer would need to know how to develop on the operating system being used. They don’t need to be a master of it, and many of the things they need to know would come under the “web server” category, but at the very least they should know how the operating system is setup and how to write code that can run on it.
However, given that many websites run on Linux (rather than, say, Windows), it’s probably not the most important thing to know.
The specific skills are:
There are many things that a full stack developer should know when it comes to the database layer:
- Data Modelling: they should know how to create a data model for a database that is efficient, scalable and error-free.
- Administration: they should be able to administer the database, which includes user access, monitoring, backups and maintenance.
- Writing queries: this could go without saying, but full stack developers need to be able to write queries to read, write, update, and delete data in an efficient and effective way
The technologies that they may be experienced in are:
- Microsoft SQL Server
A full stack developer should know a few things at the web server layer:
- Setting up: the basics of how to set up the web server and how it can be configured
- Features and issues: they should also be aware of the different features of the web server, and any issues or problems with it
The related technologies are:
This is the big one, and probably the area where a lot of developers have focused on. Server-side code skills can be broken down into:
- Writing efficient and effective code: being able to write code in the language of choice that gets the job done, is efficient, and easy to maintain
- Read and debug existing code: whether the developer has written it or not, they should be able to read code and able to find bugs and other issues in it
- APIs and frameworks: the full stack developer should be able to use existing APIs and frameworks to develop their application
The technologies for this area are:
While this isn’t an area that a developer writes code in, it’s something that they should be knowledgeable in.
- Cross-browser testing: they should be able to write applications that work correctly and display correctly in all major browsers (which can be tough if you’ve tried to do this before!)
- Knowledge of browser behaviour: they should know how browsers display certain things and which types of code to avoid
These technologies are related to the most common browsers:
- Internet Explorer
Full stack developers also need to know about client-side code, or front-end development. This is the other major area of development.
- Features of each language: front-end languages have different features for accomplishing different things, and the developer should know and understand them all
- Using best practices: due to the number of languages and technologies involved, a full stack developer shouldn’t get stuck on using one method for developing everything, and should be able to evolve as the technology changes
- Write efficient and effective code: they should also be able to write code in these languages that is efficient and easy to maintain.
The related technologies are:
There are several other areas of software development that a full stack developer should be experienced in.
- Design: the developer should know the basics of how to design a software application or website, and how to convert it into working code for a prototype or a working version.
- User interface and user experience: skills in developing a user interface that follows standards, and considering the entire user experience for the product, is a skill these full stack developers may find useful.
- Unit and system testing: testing is an important part of developing code, and they should be familiar with testing processes, best practices, and the tools involved. This includes both unit testing and system testing.
- Mobile/responsive: the full stack developer should be able to develop for mobile devices and use responsive design, with the increase in mobile usage on websites and other applications.
This seems like quite a long list of technologies and skills for someone to learn to be classed as a full stack developer. Sure, it is a long list, which is why it’s not really for junior developers. It takes a fair bit of experience to know all of these, which is more than what they teach you in the classroom.
Why would someone become a full stack developer then?
Why Should I Become A Full Stack Developer?
We’ve taken a look at the big list of things a full stack developer should know. It seems pretty daunting. There must be an upside, right? Otherwise why would anyone even look at this role?
Yes, there are a few advantages to become a full stack developer:
- Understand the full scope of what needs to be done. Your role will be involved in the different layers of developing the solution, so you will understand what needs to be done at each layer, which can help improve the overall quality of the solution.
- Design and code the entire project yourself. It can be satisfying to design and code something all by yourself, from start to finish. This is something a full stack developer is capable of.
- Communicate with many other teams, especially in an Agile environment. With the increase in Agile project teams, you’ll be able to communicate better with them, as you understand the work that is required. You can also work better with DevOps teams as there is more understanding and consideration there too.
- Start your own web development business. As you know how to do the design work, development work, and all other related steps, you have more of the knowledge needed to start your own web development business. Someone who can only design, would need developers, and someone who can only write code would need other developers and designers to make this work.
Disadvantages of Being a Full Stack Developer
Alright, so we’ve had a look at some of the positives of this role. Now, it’s only fair that we take a look at some of the disadvantages of it.
- Keep up with the latest technologies and trends. As a full stack developer, you need to be able to keep up with the latest technologies, whether this is developments in the technologies you know, or new technologies or frameworks that are being released.
- A lot of experience needed. You’ll need to have quite a bit of experience to be capable in this role. It isn’t something you can come right out of college or university and start doing.
- Open mind towards new technologies. This may not be such a disadvantage, but if you’re the kind of person that likes to stick to a certain way of doing things, then this kind of role might be tough.
How Much Can I Earn?
According to our research, the average salary of a full stack developer is $102,000
They seem to range between $90,000 and $110,000, depending on the technology used, such as Java or PHP. It would also vary between locations, because places such as NYC or SF would pay a lot more.
Given the amount of skills that are needed, and the experience level, it seems like a fair number.
How Do I Become a Full Stack Developer?
Are you interested in becoming a full stack developer? Did you get excited when reading about what all the skills are and the kind of work that you’ll be doing?
Fantastic. The world needs more full stack developers.
First of all, these kind of developers are most common in smaller companies and startups. This is because they don’t have the budget to higher a single person for each technology, so it’s up to the one person to learn all of the required skills. So, if you’re interested in becoming a full stack developer, look for jobs in smaller companies.
You would probably need to be proficient in one area of development first. And by proficient, I mean good enough to get a job just doing that. You could be a web developer, database developer, or front end developer and have experience in certain technologies. This would be enough to get you a job in that role at a small company.
They would hopefully have a need for you to expand your skills, and you would need to be willing to do this. With some time on the job doing your main role, and learning the other skills that you don’t know, a role as a full stack developer would come in time.
So, in summary, you need to start with a skill you already know (preferable development), and work on learning and improving all of the other related skills at a job at a small company or startup.
Are you interested in becoming one? What has your experience been with others in this role? Share your comments in the section below.