Toptal is a marketplace for top full-stack developers. Top companies and start-ups choose Toptal freelancers for their mission-critical software projects.
Are all full-stack developers the same?
In this guide, we will reveal different types of full-stack programmers and what it means to be one of them.
We will help you to make a decision as to when should you hire a full-stack developer and what to look for when you do. At the end, we will advise you on how to solve the challenges you might face while going through the whole process.
Full-stack Developer Types
In a broad sense, a full-stack software developer is a specialist capable of creating and maintaining all the components necessary to run a web application. That includes front- and back-end layers as well as all DevOps activities. They’re a person who is able to see and develop a big-picture solution. Quite often, these types of professionals help to put together and coordinate pieces delivered by more specialized developers.
It’s important to understand that no two full-stack developers are alike. Developers will vary in two main ways: In the knowledge of a specific technology stack and in the mastery of specific layers of this stack. Examples of widely popular web stacks are LAMP, MEAN, ROR, and ASP.NET technologies.
You need to keep in mind that full-stack developers are not specialists in everything. They rather have general, working knowledge of all required technologies. They surely will be capable of delivering the required work, you just need to be aware that they will look up documentation for certain aspects of things or do a bit of an additional research from time to time, perhaps more often than a specialist would.
Quite often, full-stack developers will have a certain skillset stronger than the others they have. Some professionals might be more experienced with front-end work, while others will be more efficient in working with the back-end side.
You shouldn’t be discouraged by this. It’s a natural thing. Rest assured that talented full-stack developers can always improve their skills and learn new things.
When it comes to a web application stack, we can distinguish three main components: Front- and back-end layers as well as DevOps. All three of them are vital to most web solutions.
Still, some projects do not require a front-end, because they only provide an API to use. Others doesn’t require a back-end because they are single-page applications (SPAs) or static pages. Even DevOps support is not always required considering all the managed hosting solutions out there.
A good full-stack developer will guide you through your requirements and will provide you with needed components while skipping the unnecessary ones.
When you look for a person with a good front-end skills, you need to look among their previous work for beautiful-looking websites that are fast and snappy.
You need to keep in mind that visual design is not the end of the story. Professionals you hire need to know how to make the visual side of things not only look great but also run fast, without any glitches. Users are prone to ditching sites and apps that run slowly or inconsistently.
If you are building SPA-style, then the front-end is going to be separated from the back-end on a structural level. In such cases, if you already have a back-end API, then the whole application can be created using front-end technologies only.
This is the part of the stack that is easiest to verify by non-technical people, because they need only approach it the same way end users do.
This layer refers to all of the components that are working on a server. They are often invisible to the end user, yet no advanced application can work without them.
Either way, the back-end part generally takes full responsibility for business logic, as well as storing objects in a database and providing caching.
This part of the stack is harder to verify since quite often it’s much more technical. What you need to look for when evaluating back-end skills is proper API design and documentation, correct endpoint behavior, and appropriate data storage and database design schemes. You might need some help to verify all of that if you lack the required expertise.
Last but not least, we have DevOps activities: All the actions required to acquire and manage servers, deploy and update applications, and scale up or scale out the capabilities of the system.
Professionals handling this layer are also responsible for creating and managing databases, caches, cloud storage, and proprietary cloud APIs. In a broad sense, DevOps skills can be assessed by looking at an individual’s experience with administrating servers, managing cloud hosting providers, and scaling systems.
You can check if they have previously handled the auto-scaling of systems, automatic monitoring of multiple servers, automatic deployment of clusters, etc. In general, these types of experiences are easiest to acquire while working for large enterprises. They handle far larger amounts of traffic and have larger budgets for their operations, spending millions of dollars each month just on servers.
Full-stack vs. Specialized Developer Choice
You might wonder if you should hire full-stack developers or instead hire a few specialists to handle each layer separately. Some companies even claim that full-stack developers don’t exist at all! They say it requires an insane amount of knowledge and no single individual is capable of acquiring it. They claim that at most only geniuses are able to truly become full-stack developers.
Is that claim true? Not really: According to a StackOverflow survey, 28% of developers consider themselves full-stack web developers.
It’s true that they have broad knowledge of all layers of the stack and more expertise in certain parts of it. They are usually “jack of all trades, master of none” types. It allows them to see the big picture of a solution and coordinate all parts of it.
The companies that claim full-stack developers don’t exist mostly do so because they sell technical services themselves. They don’t want you to hire a single full-stack developer when you can hire multiple experts for each layer, even if that’s inappropriate for your project context. That way, they make much more money. They are being dishonest with you and you should avoid them like the plague.
Let’s break down certain circumstances when you should hire a full-stack developer and when it is better to hire specialists in certain areas.
When to Hire Full-stack Developers
1. When You Are Just Starting Out
It’s the best practice to start a new web project with a single full-stack developer. They can create solutions from scratch and lay out all application components where they need to be, creating basic software architecture.
Only on this foundation you should start growing your team, bringing on board more developers who are possibly specialized in certain areas.
Nonetheless you should always have one full-stack developer overlooking the development of a project as a whole and coordinating work progress in all areas.
2. When You Need a Technical Lead
It’s a good idea to hire a full-stack developer if you have a development team without a technical leader. Software development is like a ship; without a captain, it will go into random, undesirable places. It’s advisable to have one person in charge of the coordination of all tasks and putting all the elements together.
You need a person with broad—even if shallow—knowledge of all the layers and sublayers of your stack. That way they can make sure that everything works together properly and your team members don’t waste their time on unnecessary work.
3. When You Are Constrained by Cost
If you have a limited budget, then in order to get most value out of it, get yourself full-stack developer. Truth be told, development won’t go as fast as when you have a team of skilled individuals focused on certain parts. Still, it will progress in a steady manner. You will also save some costs on communication overhead between developers since you will have less of them.
4. When You Need a CTO or a Co-founder
Starting a business and creating a minimum viable product (MVP) happens usually at the same moment. If you are a non-technical person staring a software company, then you don’t have a choice, really. You need to get yourself technical co-founder or Chief Technical Officer (CTO.)
Since they will be responsible for overseeing all technological operations, they better have broad knowledge about the field. Full-stack developers provide you such characteristics, so we recommended them in this situation.
When to Hire Specialized Developers
1. When You Need to Optimize for Speed or Load
Once you have a stable web application, you might want to focus on optimizing speed or on being able to handle higher traffic. In these situations, it is best to hire people who specialize deeply in certain technologies.
You need someone with years of experience in a given technological layer. Such experts know best all the small quirks, problems, and bottlenecks of the technology they are experts in. Quite often, they have knowledge that greatly exceeds all available documentation. In such cases, generalistic full-stack developers are not a good choice.
2. When You Have a Large Development Team Already
Once your application reaches a certain scale and you have few people working on it, you should start hiring more people that are going to specialize in certain aspects of it. Once again it comes down to speed and load improvements.
At a particular stage, you need more people that can handle small parts of your solution really well. It will prevent them from interfering with each other and will help you to dramatically increase the quality of your final product.
3. When the Work Only Requires Knowledge of a Single Layer
Sometimes, the work you need to get done only requires knowledge of certain layer. For instance, if you simply need to create an API service, then it’s best to hire a back-end developer.
If, on the other hand, you need to create a static website or an SPA without a back end, then getting in touch with a front-end developer is more appropriate. It’s wise to choose more specialized professionals when you know that their skillset covers all of your needs.
What Experience to Look For
Once you know you want to hire full-stack developer, you need to start getting in touch with potential candidates and start collecting their resumes. You should have a general understanding of what type of technology stack you would like to use.
If you don’t have anything yet, then you can be open-minded for multiple different options. You can discuss them with a technical person you trust or with potential candidates.
From there you can choose the stack that best suits your needs. We advise you to go with something standard. It will make process of finding best fitting candidates much more easier.
Once you know which technologies you are going to use, you need to sift through the full-stack developers’ resumes. You need to look for experience that matches your desired technologies. It doesn’t make sense to hire a seasoned PHP full-stack developer if you need to create your web application using Node.js.
When looking at candidates’ experience, you especially need to look at projects they previously took part in. Visit links to websites in their portfolio. Choose professionals with matching experience and shining past work you can verify.
How to Interview the Candidates
After filtering resumes to only the ones with matching technologies and amazing previous work, you should start interviewing candidates. What should full-stack developer interview questions look like?
Before you get into those, it’s actually more important to check if a candidate has appropriate communication skills. It’s crucial since you want them to have a clear understanding of your goals and be sure you will be able to transfer requirements easily without unnecessary overhead.
Another important thing to check is cultural fit (or flexibility) as it relates to work. If you are hiring people remotely from cultures you’re not used to working with, make sure that you will be able to work together comfortably, without unnecessary cultural tensions negatively affecting the project.
To do this, be clear on expectations around time and communication frequency and style. It may take some extra thinking to shed light on expectations that are normally taken for granted and left unstated.
From a technical point of view, full-stack interview questions should cover past experiences they have in handling projects similar to yours. Ask them about the approach they would take on this project. Check if their take is aligned with your vision. It’s important to have a common understanding and agreement on how they plan to reach your goals.
Last but not least, ask them to submit some example source code they worked on before. It can be a side project or open-source contribution. You need to ask a technical person to review it and decide if the code quality is good enough.
If you have a choice between sending a candidate a test project to implement and review their previous work, you should go with the second option.
It’s much better to review something that they worked on previously for an extended period of time and that they care about. It also shows that that you respect them and their time. With test projects, people usually are unwilling to put a lot of time and effort into them. Often they have another job, they are busy with their families, or they just received five other test projects from other companies and they simply are not going to be able to put a lot of their best skills into the process.
Once you select the best-fitting candidate, all you have to do is to sign a contract, set a start date, and watch your new application being created—hopefully with lightning speed—and delivering decent revenue in the process.
The Biggest Challenges in Hiring Developers
Hiring highly skilled professionals isn’t an easy task. There are many obstacles and pitfalls you can succumb to. The best way to learn how to hire full-stack developers is simply through practice, but until you have that, here’s our advice.
Don’t Limit Your Search
Back in the day, we were forced to rely on talent living close to our companies. Our employees had to get to the office and work from there. All that has changed with the invention of the internet and all the marvelous communication and collaboration tools that we have today.
Nowadays there is virtually no reason for you to limit your search to a local area only. You have access to the best talent in the world, quite often at an attractive price, just a few clicks away. And if you won’t get the help of the best people out there, then your competition will, and that is not a position you want to put yourself in.
Hire Using Technical Expertise
When hiring software talent, it’s important to get an opinion from a trusted technical expert. They will be able to assess candidates’ skills correctly and will detect all exaggerations you might hear along the way.
Without an expert on your side, you are at risk of hiring developers that won’t be the best fit for you and might provide you with a solution that isn’t necessarily the best answer to your problems.
Allow Developers to Learn New Things
You need to remember that full-stack developers have a broad knowledge of all stack elements. They do not specialize in all things. While knowing a few core technologies is important, it’s nearly pointless to look for someone who has knowledge of every last little library you might choose to use.
So don’t be worried when a candidate doesn’t know a few things. There is a good chance they will easily pick them up along the way.
In any case, it’s better to have someone who is smart and enthusiastic about your venture, but doesn’t know a few technologies, than someone who has no enthusiasm for what you are trying to achieve, but knows everything you need. Eagerness to learn and achieve great things can make a huge difference.
Go Get Them!
Now that you know when and how to hire full-stack developers, all you have to do is find those that fit your project best. But before you do, let’s quickly recap:
Full-stack developers can specialize in different technologies.
They are usually “jack of all trades, master of none” types.
You certainly need one when:
You are just starting out,
Your project needs technical lead,
Cost is a significant factor, or
It’s time to find CTO or a co-founder.
Maybe you shouldn’t hire one when:
You are optimizing for speed or performance,
Your team is large already, or
A specialist can perform all the required work.
Once you get few resumes in hand, you should:
Look for a good communication skills and cultural fit, and
Check their technical competence.
It’s also good to remember that:
There are plenty of talented people willing to work for you remotely.
It’s better to use the help of technical expert to verify candidates.
Developers can learn new libraries on the fly.
Equipped with this knowledge we believe that you will make the right choice in picking your next full-stack developer. Good luck!
- Trusted by: