How to Hire JS Developers: A Brave New World
Tags: javascript, webdev
Published: 2022-01-26 14:12:46

JavaScript (JS) – is the most frequently used programming language among developers in 2021. Created for development, improvement, and change of web and mobile applications.  

![Most used programming languages in 2021](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gr17anyf1llnepcbb7os.png)
<figcaption>Most used programming languages in 2021</figcaption>

Not by chance, JS is in the first position:

1. Flexibility. Created products are reusable and not platform-specific.
2. Rich interface. New functions are permanently developed for JS, there are plenty of libraries and APIs.
3. Versatility. Works well with other programming languages. Supported on all operating systems, browsers, mobile devices.

If due to all this popularity of JS, you decide to hire a javascript developer this article is definitely for you. 

**In this article we will figure out:**
- What does a JavaScript developer do;
- What are the main skills of a JavaScript developer;
- What question to ask during a JavaScript interview;
- How much does it cost to hire a JavaScript developer.

## What does a JavaScript developer do
There are three types of Javascript developers: frontend, backend, and full-stack. 

**Frontend JS developer** – is a specialist responsible for data processing into a graphic user interface. He creates what a user sees in the browser and interacts with. 

**Backend JS developer** – is a specialist who takes care of the server part of the project. He creates components and functions that are available for a user through the interface. 

**Full-stack JS developer** – is a broad specialist that can create both application architecture and its user interface.

The duties of JS differ vary depending on the project role. Therefore we’ll take a look at developers tasks from the perspective of the probable role on the project: 

### Responsibilities of frontend JS developers:
- Development of frontend project from scratch;
- Design of user interfaces;
- Cross-browser and adaptive HTML5/CSS3 layout; 
- Collaboration with backend developers while creating RESTful API.

### Responsibilities of backend JS developers: 
- Development of business logic and back and system for product support;
- Work with databases with the help of DBMS; 
- Integration with external services;
- Testing and debugging of application components.

### Responsibilities of full-stack JS developers:  


![Responsibilities of full-stack JavaScript developers](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7fuk299wbf6aoa10hg1e.png)
<figcaption>Responsibilities of full-stack JavaScript developers</figcaption>

---
  
## What are the main skills of a JavaScript developer
To fulfill the assigned tasks a d developer should possess certain technical skills. 

We also split the skills in compliance with types of developers.

### Skills of frontend JS developers: 
1. Fluency in HTML and CSS; 
2. Understanding of CSS preprocessors: Sass, Less, Stylus, etc;
3. Ability to work with Webpack module bundler, understanding of Babel transpiler working principles;
4. Knowledge and working experience with popular frameworks and libraries: Angular, React, Nodejs, Vue.js, etc.;
5. Experience or work with version control systems and repositories: Git, GitHub;
6. Experience in working with databases and knowledge of query languages: SQL, MySql, NoSQL, MongoDB, etc.;
7. Use of programming patterns: MVC, MVP, MVVM.
8. Ability to work with image editors: Photoshop, Illustrator, etc. is an advantage.

### Skills of backend JS developers:
Backend development often consists of three main parts: server, application, and database. As a result, such a specialist should have some knowledge and experience in Node.js (the main server platform that uses JavaScript) and various databases: SQL and NoSQL.

In addition to that basic technical skills include:

1. Knowledge of web servers: Nginx, Apache, IIS;
2. Ability to work with version control systems: Git;
3. Knowledge of HTML, CSS – for better understanding and communication with interface team members; 
4. Knowledge of Windows Server, macOS X, Linux, and other operating systems;
5. Knowledge of API (REST, SOAP – less often;
6. Unit test writing skills.

### Skills of full-stack JS developers:
Of course, a full-stack developer is unlikely to have all of mentioned front-end and back-end skills. The knowledge of both skillsets is usually not so deep as compared to the pure backend or front-end developers.

Development of internal and external parts of a website or an application means that a JS developer should at least possess the following skills:

1. Fundamental understanding of Javascript;
2. Knowledge of Node.js; 
3. Knowledge of HTML5 and CSS3 interface technologies; 
4. Knowledge of either of the frontend frameworks: Angular, React, etc.;
5. Knowledge of either of the backend frameworks: Express.js, Nest.js;
6. Knowledge of one the further mentioned databases: Oracle, MongoDB, SQLServer, and Redis;
7. Knowledge of API testing tools;
8. Unit and End-to-End testing. 

### JavaScript libraries every developer needs to know 
Javascript libraries – functions that a developer can reuse or change when developing a website, application, etc. Libraries considerably simplify the life of a developer by saving time on all development stages. They also reduce the jumper of potential code mistakes. Therefore the skill of interaction with libraries is one of the must-have skills a developer should have. 

We mapped out the libraries to the potential objectives of your project:   

![Most popular JS libraries](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tf9g6cay5ssv3ek1zhmu.png)
<figcaption>Most popular JS libraries</figcaption>

The table lists only the most frequent use cases and examples of the libraries. Your case might be different. Visit [Github](https://github.com/sorrycc/awesome-javascript) to familiarize yourself with the list of additional libraries.

If you find it difficult how to relate libraries to your project we recommend consulting your CTO. 

---

## What question to ask during a JavaScript interview
There are three most popular levels of a developer: Junior, Middle, and Senior. Most often, work experience determines the transition from one level to another. Thus, Junior is a beginner with no more than 1.5 years of work experience. Middle – has practical development skills, with experience ranging from 1.5 to 3 years. Senior is an expert in his technology with experience of 3 years and more.

To get more information on seniority levels when choosing developers refer to our article [5 Software Developer Levels: Whom to Choose](https://jaydevs.com/software-developer-levels/).

If you have a clear understanding of what level of a developer is required for your project, the next step is to interview candidates. The interview is divided into technical questions and coding tasks. Read about coding tasks, what they are and where to find tasks for developers in our article [Top 8 Best Coding Interview Platforms](https://jaydevs.com/top-coding-interview-platforms/).

In this part, we will walk through technical questions to ask a Javascript developer. We divided the questions by levels:

### Junior JS interview questions:
**Q1.** What data types does JS support?
**A1.** There are data types for primitive values including:

- Boolean type;
- Null type;
- Undefined type;
- Number type;
- BigInt type;
- String type;
- Symbol type;
- And there are Objects (collections of properties).

**Q2.** What is the difference between var, const и let?
**A2.**

- Visibility of the **var** variables is function-scoped or script-scoped if a variable is global. Such variables can be accessed outside a block;
- Visibility of the **const** variable is block-scoped, not function-scoped. Const operator doesn’t allow to reassign a variable to a new value; 
- Visibility of the **let** variable is also block-scoped and not function-scoped. The value of the variable can be changed. 

**Q3.** Explain the difference between null, undefined, and undeclared variables?
**A3.** 

**Null** – primitive data type in JavaScript and represents the intentional absence of a value.
**Undefined** – variable has not been assigned a value, or not declared at all.
**Undeclared** – variables that have been declared without using const, var, or let.

**Q4.** How can we check if the value is false?
**A4.** We should use the Boolean function or “!!” (double negation) operator

### Middle JS interview questions:
**Q1.** What are the practices of using asynchronous code in JS?
**A1.**

- Callbacks;
- Promises;
- Async/await;
- Libraries: async.js, blueprint, etc.

**Q2.** What is the difference between Attributes and Property in DOM?
**A2.** Attributes provide additional information about the object, for instance, id, type, value, etc.

Properties describe characteristics of the object, for instance, type=”text”, value=’Name’, etc. 

**Q3.** What is the difference between Call and Apply?
**A3.** In apply arguments are transferred as an array, in call – comma separated. 

**Q4.** How can we define property presence in the object?
**A4.** There are three ways: 

**First.** Use «in» operator: 
`const o = {
    'prop': 'bwahahah',
    'prop2': 'hweasa'
}`

`console.log('prop' in o) // true
console.log('prop1' in o) // false`
**Second.** Use hasOwnProperty method:

`console.log(o.hasOwnProperty('prop2')) // true
console.log(o.hasOwnProperty('prop1')) // false`

**Third.** Array index notatoin:

`console.log(o['prop']) // bwahahah
console.log(o['prop1']) // undefined`

### Senior JS Interview Questions:
**Q1.** What is variable hoisting?
**A1.** Hoisting – is the standard behavior of JavaScript when all the declarations are moved to the top of the current area of visibility.

**Q2.** How are closures used in JavaScript?
**A2.** Closure – is a function that memorizes its external variables and can access them. All functions in JavaScript are closures.

Every executed function in JavaScript has a bundled object called the lexical environment. A lexical environment is created for every function call.

**Q3.** What are the generators in JavaScript?
**A3.** Regular functions return only a single value (or nothing).

Generators can yield multiple sequential values on demand. Generators perfectly work with searched objects and enable the simple creation of data streams.

**Q4.** What is the difference between inheritance and prototype inheritance?
**A4.** In classical inheritance objects are abstractions of the real world “things”, but we call objects only through classes. Classes in this case are a generalization of an object. Objects in classic object-oriented programming languages can be created only by creating class instances. 
Unlike classical inheritance, prototype inheritance does not deal with increasing levels of abstraction. An object is either an abstraction of a real thing as before or a direct copy of another object.

---

## How much does it cost to hire JavaScript developers?
When choosing a developer or a development team, in addition to finding talented candidates staying within the budget should also be considered. 

We collected data on the annual salaries of JavaScript developers depending on the level of seniority and country of residence from Payscale, Glassdoor, Indeed, and Salaryexplorer. Obtained results are specified below: 

![Worldwide annual salaries of JavaScript developers](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/asfbe2xkab3fukmcfsjo.png)
<figcaption>Worldwide annual salaries of JavaScript developers</figcaption>

If you are wondering where to find a developer and which collaboration model is the best option for you read our blog post [How and Where to Find Software Developers Who Meet Your Needs](https://jaydevs.com/where-to-find-software-developers/).

## Wrapping up
We covered the basics of hiring:

- What are the responsibilities of JavaScript developers depending on the role: frontend, backend, full-stack); 
- What skills are required to fulfill assignments of JavaScript developers;
- How to screen a JavaScript developer depending on its level: junior, middle, senior;
- What is the annual salary of developers depending on the seniority level and country of residence.