How To Hire A Full-Stack Developer
How to Hire a Full-Stack Developer
Introduction
Modern day application development is a multifaceted process that demands a team with a strong and diverse skill set. Regardless of team size, there are many roles in the development environment. The responsibilities are typically broken down into two categories, namely the client side and the server side.
The client side involves front development and includes tasks such as designing the user interface. The job description for this role may include a web developer who is familiar with languages like HTML, CSS, and JavaScript.
By comparison, the server-side logic is backend development. A fullstack developer may know very little about HTML or CSS, but they will know how to satisfy the requirements required for the front end.
The article is about backend development, and how to hire the right person for your server-side programming. This involves a particular set of skills that range from low-level algorithm design to higher level database work, and although it will vary between projects there are core aspects that will not change.
What do full-stack developers do?
fullstack developers handle everything that happens behind the scenes. Although generally thought to manage tasks that are invisible to the user, it is the fullstack developer that processes the data to fill requests made at the front end. This includes taking the user’s input, processing it, and storing it in a database. It also includes retrieving stored data and supplying it to the user interface for display.
The backend development team is responsible for expanding and updating your APIs, as well as writing and running the tests that are critical for assessing and improving web site performance. When bugs are identified, it is the fullstack developers who fix them – even when they affect front end performance.
What skills to look for in a full-stack developer?
The full-stack developer skill set
An experienced fullstack developer will possess a variety of skills that highlight not only technical prowess, but their ability to manage time and work efficiently with others. Consider the following skills:
- Programming, database management, and other technical skills are critical for fullstack developers, as these technologies are their primary tools
- Logic and problem solving skills go hand in hand with application development and troubleshooting
- Time management skills are required in order to meet deadlines without having to compromise quality in development or testing
- Communication skills are important for collaborating with the front developers, clients, and others who are expected to provide input or feedback related to the project
- A keen eye for detail comes with experience; the ability to spot subtle or small errors will ultimately save a great deal of time in both development and maintenance cycles
Technologies full-stack developers should master
A fullstack developer will make use of many technologies, some of which have already been mentioned. Examples of the most popular ones, for which your candidates should at least be aware of, are:
- PHP for server-side scripting
- Java, an object-oriented, structured, imperative, generic, reflective and, concurrent programming language, and its well-known Spring framework
- Python , a functional, imperative, object-oriented and, reflective programming language
- Ruby, an object-oriented, imperative, functional, and, reflective programming language (Ruby on Rails refers to its use with the Rails framework)
- C++, a procedural, functional, object-oriented, and, generic programming language
- Node.js open source, cross-platform JavaScript runtime environment
- Laravel is a popular PHP framework
- MySQL is the world’s most popular relational database and is open source
- Oracle is an object-relational database that is not open source, although very popular
It is noteworthy to mention that fullstack developers should be aware of platforms such as Amazon Web Services (AWS), which provide various tools and services for backend support. For example, AWS has a relational database service that supports Oracle, SQL Server, PostgreSQL, MySQL, MariaDB, and Amazon Aurora. In addition, AWS offers development tools and SDKs for languages including Java, PHP, Python, Node.js, Ruby, C++, Android, and iOS.
AWS is one example of a service provider for backend development support. AWS competes with Google, IBM, and Microsoft Azure in this market. Experience in any one or more of these areas should be considered a plus when interviewing a backend development candidate.
How to write the perfect fullstack developer job description
There are myriad talents that contribute to what makes a good fullstack developer, and it is important to recognize these during the hiring process. At the same time, not every skill will be necessary for every project. For example, if the server side does not require a database then expertise in Oracle, MySQL, or IBM Db2 will not be as important as a programming language like PHP, Ruby, Python, or Java.
Generally, fullstack developers report to the Chief Technical Officer (CTO), who will be the final authority for determining what type of experience is most appropriate for the job at hand. That said, it is worthwhile to consider the more general skillset that is needed for the position.
Before advertising jobs and interviewing candidates, it is important to understand what it is that your project needs. The backend development group takes care of the server-side programming, or what happens behind the scenes. Perhaps many transactions from a database like MySQL supplies content to the front end, or there are transactions that were processed in the presentation layer that need to be displayed. These types of requirements need to be clearly stated, otherwise there is a risk of attracting candidates with a mismatch in skills.
Interviewing the fullstack developer
The task of interviewing candidates for a backend development position is one that should be carefully planned. The CTO or a project manager will normally be responsible for approving the job description. Some of the questions will cover the basics, like their experience and exposure to different technologies, whereas other questions will go into greater detail.
It is important to ask about experience with the tools used in your organization, as well as any for which there may be an interest in adopting. For example, if a company is looking into using AWS as a provider, then the candidate should be asked specifically about their experience with both AWS and other cloud-based services.
One of the best ways to evaluate the candidate’s skills for your project is to perform a hands-on programming assessment. This is referred to as skills-based hiring. Such tests are administered by an objective third party, and can be tailored to your requirements. Essentially, it requires the candidate to demonstrate their knowledge of the relevant material independently of an academic degree or certification.
While technical questions may concern programming languages that are in use, questions used to evaluate soft skills are generally more open ended. Consider the following interview questions:
#1: Choosing the best suited technologies
One of our prospective mobile applications is an alternative to Google maps. A query may be from a user residing in California requesting driving directions from Los Angeles to Palo Alto. The difference between our application and Google maps is that the client is given directions that make mention of our paid sponsors along the route. Which database and server-side programming language would you choose to supply the client side with the appropriate content?
Rationale
This gives the candidate an opportunity to speak openly about their work experience, while giving the interviewer an understanding into their breadth of knowledge. There may not be a right or wrong answer for this question. For example, the candidate could explain why PHP is more suitable than JavaScript, or that MySQL is a better choice than Oracle. In this discussion, it is important to look for personality traits, and try to determine whether the individual is comfortable working in a team that will include front end developers.
#2: Web database server experience
What is the difference between a relational database such as Oracle or MySQL, and a NoSQL database such as mongoDB? Under which circumstances is one or the other more suitable?
Rationale
The candidate’s knowledge of server side database tools will be tested with each and every project. With the rise in popularity of NoSQL, it is important to understand how and when it is properly used in place of a relational model. This general knowledge question will provide insight as to how the candidate keeps up to date with new technologies.
#3: Server-side programming and design patterns
The MVC (Model View Controller) pattern is commonly used for developing web applications. What are the responsibilities of the fullstack developer when applying this design pattern?
Rationale
The MVC pattern may not be used or required in your environment, although it is one that many fullstack developers are familiar with. The point of the question is to determine whether the candidate is a developer who is adaptable to different environments. The answer will include general backend considerations, but more importantly, it will reveal how they make use of patterns and other methods.
#4: Experience with the user
Do you have experience working in a client-facing role, or working directly with the user? If not, would you like to?
Rationale
This question is another way of asking how well your candidate is able to deal with criticism. Whether feedback originates from within the company or is generated by the users, inevitably all projects will be the subject of strong words. The ability to treat critique as an opportunity to improve is an important personality trait, yet may not be well honed in each of your candidates.
#5: HTTP and web services
What are the different types of HTTP methods that are used in RESTful APIs? Explain when each is used and the differences between them.
Rationale
While this question is technical in nature, the use of RESTful APIs is independent of platform and very common in web development. Regardless of what programming languages or server side logic is being employed, the REST guidelines are the same. As such, even a relatively new fullstack developer should be well familiar with them.
Work experience and salary expectations
There is no easy answer to the question of how much a fullstack developer should earn. The reason is that it is a field with many skills and requirements, and it will depend on the details of the project. These details include the size and complexity of the work, the technologies in use, and the extent to which the fullstack developer is involved.
Salary expectations based on qualifications, experience, and education can be roughly estimated using services such as PayScale. At the time of this writing, PayScale notes that skills in JavaScript, Node.js, Angular, and Git correlate to above-average pay.
A survey of job sites has revealed that the average salary for a fullstack developer in the United States is approximately $128,000. This is similar to that of other countries such as Canada ($110,000 CAD), London, England (£60,570), Denmark ($88,000), and Norway ($91,500). It is important to consider that geography plays a role in hiring a fullstack developer. Clearly, the cost of living is a factor, although this can be curbed by hiring fullstack developers to work remotely.
The rise of Full Stack Developers
Full stack development refers to the combination of both frontend and backend development. There is overlap between these two roles, and this has been addressed with programming languages such as JavaScript.
As of late, recruiters tend to search for full stack developers more often than their more specialized sub-roles. One of the reasons for this is versatility, where a company hopes that an overlap in skills will allow for optimal placement amongst projects, regardless of which components are being developed. Another reason is that the client facing frontend is receiving considerably more attention than in the past. As such, the skillset is more “trendy” in the developer community, and more developers are advertising themselves as full stack.
For putting together a small application, employing two or three full stack developers will often suffice. If, on the other hand, the project is large, or complex in that it requires the use of a specialized programming language, then the more refined and experienced fullstack developer is a better choice.
Conclusion
The task of hiring a fullstack developer is something that needs to be properly considered and well planned. It is important to have a good understanding of your project’s needs before beginning the search for employees or freelancers.
Once the requirements have been determined, candidates should be interviewed and their skills tested using hands-on programming assessments. The interview questions need to help assess technical proficiency, as well as the candidates’ ability to work with a team that includes front developers.
Finally, while some projects will run smoothly with a more diverse group of full stack developers, it is sometimes necessary to hire individuals who specialize solely in what happens behind the scenes. Depending on the size of the project and team, a combination of dedicated front developers will work alongside the fullstack developers with more success than a similarly sized group of individuals working the full stack.