The main features of JS include:
- Dynamic typing – the data type is determined at the time of assigning a value to a constant or variable.
- Interpreted language – application code is interpreted when accessed, no precompilation is required.
- Support of prototype and object-oriented approach.
- Libraries and frameworks for building applications (React, Vue).
- Collectors (Webpack, Gulp).
- Supporting libraries (Lodash, Underscore).
- Static site generators (Gatsby.js, Next.js).
- Development of native applications. For example, applications for Android and iOS are created using the React Native framework.
- Server development. Node.js is used for backend development. We have a separate article about this area.
- Development of desktop applications. JS is used in office suites Microsoft and OpenOffice, in Adobe applications.
- Programming of equipment and household appliances, for example, payment terminals, set-top boxes.
Second point: at the moment, the popularity of progressive web applications (PWA, progressive web apps) is growing. This technology is actively promoted by Google. Progressive Web Apps are a hybrid of a website and a mobile app. In the medium term, PWAs have a good chance of gaining a significant market share from native apps.
What are the prospects for a JS developer in the labor market?
Why should a developer pay attention to this language?
- The amount of information that can be found on the Internet;
- Developed ecosystem in the form of a huge number of libraries and development tools;
- Very good community;
- One language is enough to write web applications, mobile applications, servers, and more;
- High demand in the labor market;
Well, first you need to understand what environment you are going to write in:
– as a front-end developer for a browser?
– as a back-end developer for a NodeJS server?
In either case, you need to know the core of the language and its standard library.
For a server, you need to know how to work with databases, have an idea of the HTTP protocol as a way to communicate with the client side, be able to confidently work with npm (a package manager for NodeJS), know about unit testing.
For a browser, you need to understand the features of different browser engines, you need to be able to typeset, have an idea of the specifics of the browser environment in general (host objects, browser capabilities like local / session storages).
It is very important to be able to work with tools: with IDE, with dev-tools in browsers, with a debugger.
You have also to understand version control systems (git), be sure to read about algorithms and data structures in order to have at least a general idea, learn about approaches in the organization of development (agiles, scrum, that’s all – especially important if you are aiming at work in any large outsourcing company).
And yes, English. Lots of English. A lot of English. Because all the most relevant information is in English – articles, books, videos. Because in English 90% of the entire labor market of a programmer in our realities. Because English is your decisive advantage over candidates without it.
What else is important in learning?
- Familiarity with libraries and frameworks
Personally, I think that every developer in 2020 should be familiar with Node. I’m not talking about deep knowledge, it is enough to be able to apply it for server development, prototyping, testing, etc.
Sometimes the tools include the browser itself that we are using. And sometimes you have to turn to third-party tools to get a deeper analysis of the situation.
We combine and minify scripts, test them, which helps to organize the project structure.