A guide on vacancies in web-development
So, you have decided to become a Web developer. You have learned the three magical words HTML / CSS / JS and think that you will become a desirable frontend-developer as soon as you master all the three. You picture yourself learning them step by step. Filling up the portfolio. Finding a Junior vacancy. You will show them all up.
In fact, even Frontend developer is a dying kind. But that is not because there is less work :) Actually, on the opposite. The everyday growing amount of knowledge leaves no chance for broad categories. Abstract «programmers» exist only in movies about hackers and in the image of the masses. Frontend developers, as well, gradually become an abstract idea, dividing itself into more and more narrow specialties.
Unfortunately, most of the recruiters have little understanding of the specificity of work, which people they employ do. Let's make an allowance on the fact that IT-recruiting is a new profession, too. Intentionally or unintentionally – recruiters create a kind of «misinformation filed».
If you have the experience in house renting, you have probably been facing with an expression «a Wi-Fi Internet». Estate agents just love this expression. Don't try to explain to them that Wi-Fi is a way of sharing the connected source, and it is the latter that we are interested in. A «Wi-Fi Internet» can be anything: ADSL, 3G, fiber optics...
A fundamental misunderstanding doesn't keep estate agents from repeating the meaningless phrase. Same story with recruiters.
Let's find out what names of the vacancies, falling under the definition of «web-development», are popular today. First of all, I should say that this guide doesn't seek to be complete and represents the point of view of the person using JS as a main language.
Names of the vacancies
Usually, it implies using some CMS. Some people seriously think that beginners use «simple CMS», and experts – «advanced CMS». Hint: if a person asks a company of programmers in a conference-room – What CMS do you use?, he is most likely to be a complete newbie. And this is not blaming, this is the statement of fact. Serious modern projects don't use CMS, perhaps only as a secondary tool. Wordpress for keeping a company blog – yeah, perhaps. Wordpress as a shop – already questionable. «A social network on Joomla» – fantasy of a teenager. CMS have their place in the market, but they are no longer a «state-forming» element.
«Write a website on CMS» is pretty much the same as «make designs under the ThemeForest». «Look after the pennies and the pounds will look after themselves!» – Nuff Said.
The web-engineer works with the content, «edits» the page makeup, does different stuff and (occasionally) programms. Web Developer is the lowest level of all the possible «web-developers». In the case of freelance, web-developer usually means «a one-man band», to be more precise – «a farm hand».
Urgnt!!! We are looking for a patient web-developa!
CSS / HTML Developer / Markup Developer
Synonyms: layout designer
A position where you need to create a page makeup. Minimum or no requirements on JS and programming
knowledge. Knowing the basics of design is
desirable required, because it is almost never converted
from PSD to HTML one-to-one. «Pixel-Perfect» – is an alarm-bell phrase.
An indicator of a high-handed manager, having no idea about the work of the browser and measuring the quality of work
by comparing every pixel (with a zoom!) of the PSD layout and the HTML page. All attempts to explain the difference between rendering the font in photoshop
and in a browser usually are perceived as «arguing instead of work». Try to avoid these «pixel» vacancies as much as you can.
The layout designer always makes improvements after the designer. The web-programmer always makes improvements after the layout designer. For this reason, neighbors in this chain are almost always not fond of each other.
FrontEnd Designer / Web Designer
Youknowwho™. The specialist needs to have a good knowledge of the visual design (probably, interface design), typography, Photoshop. Usually he doesn't need to know JS.
On the western market, designers usually do the page makeup, too. First of all, the modern page makeup, taking into account all the responsive- and adaptive- prefixes and animations, is fair described through a static picture. Do you often see designers who show animation and mobile version? Me too. Usually, their capabilities are limited to choosing from the library animations (picked by the programmer!). Secondly, (for the same reason), often it is much easier for a good specialist to make up the design right away in HTML format. Why do the work X + Y, if we can do without Y?
On the russian market, because of the technological gap, designers and layout designers are different people.
Interface Developer / UI-UX Designer
Pretty much close to the latter alternative, but with the focus on the interactions design. Specialists of this profession, usually, communicate a lot with programmers, clients, managers, then programmers again... That's why it is desirable to know the basics of software development and have the communicative skills. Very often, this vacancy requires knowing the mobile development specifics, because it is unlikely that two UI/UX experts would be hired. Keep in mind that in this field it is very difficult to find information for self-study, which can be both advantage (less competition) and disadvantage (harder to learn). If you are able to learn on examples – there should be no problems.
Mobile / Tablet FrontEnd Developer
This is a vacancy for a developer specializing on mobile devices. The knowledge of IOS and Android platform specifics is required. React Native is a modern alternative of this specialization, which allows to use web-technologies for creating native applications. Hint: web-applications, hybrid applications, native applications and native applications on web technologies are all different things.
FrontEnd Developer / Engineer
A generic name of the profession for a developer who knows HTML / JS / CSS. Usually you can meet them in small companies, where one person is assigned a wide range of tasks. Probably, you don't need to know design basics, but it will be a good bonus. Under modern conditions, it is often replaced by a name of the specific technology: jQuery Developer, Backbone Developer, React Developer, Angular Developer... Programming knowledge and knowing how to create the page makeup is required.
JS Developer / FrontEnd Programmer
Synonyms: JS programmer
The same as the previous option, but with bigger emphasis on the programming and smaller emphasis on the page makeup and design. In fact, the term Developer (Engineer in a less degree) instead of Programmer can mean that there will be less programming and more «whatnot». Unless the programming language is specified (JS developer ~= JS programmer).
JS Developer can also mean FullStack (look below). In this case the company is probably planning to decide on your specialization later – when they find out your strong and weak sides. Or when other vacancies are distributed. That's why, JS Developer almost always goes in tandem with Junior or Senior / Middle.
FrontEnd SEO expert
This is a rare vacancy, where you need to optimize the HTML code according to the requirements and demands of search engines (Google / Yandex). Specific knowledge: micro-formats, micro schema. Given that SEO is dying and becomes replaced by the classic marketing – I recommend to avoid everything containing this acronym. Of course, if the search for work is not your hobby.
FrontEnd Accessibility expert
Emphasis on the optimization of the website for specific readers (for example, for people with lack of visual perceptions). A purely rare position. Is listed in the Red Book. Can be met only in big projects.
FrontEnd Dev. Ops
A position for a specialist in building, automating and integrating front-end applications. It can be met mostly in big companies, as it implies quite a narrow group of tasks. Relevant knowledge: Webpack / Gulp / Grunt. In time, people will start to ask you what, in fact, you do...
FrontEnd Testing / QA
The position for a specialist on frontend applications testing / quality control. Can be met in big and middle-size companies. Relevant knowledge: unit-tests, functional tests, A/B tests, manual testing and automatization. Communicative skills are on the list of requirements.
A lot of people mistake that «tester» is a much simpler job than «programmer». Yes, sometimes you can find a vacancy where you need to «click on the links» and «write reports». But these are exceptions.
Selenium Nightmare JS walk your application, making screenshots and doing
regression tests is not that simple. This is, in fact, fullstack development.
The work is done in multiple environments (Electron + Chromium) at the same time and requires good fundamental knowledge.
FullStack Developer / Engineer / Programmer
The position for an expert in the full stack of web technologies. Implies an understanding of client-server communication, an experience of work with data bases, knowledge of asynchronous programming etc. A choice of those who are serious.
FullStack is divided into two categories: FullStack-JS and everything else. In the first case, it is easy to guess that both client and server use JS. In the second case, server uses Ruby / Python / PHP.
I strongly recommend for the beginners to prefer the first option (if it's possible), in order not to get distracted by different languages and platforms. Trying to learn multiple languages at once is a drudgery.
FullStack JS implies using web-frameworks based on NodeJS. This can be a powerful fullstack framework (like MeteorJS), reactive backend with a minimalistic client (like HorizonIO) or an assemble from independent libraries (like KoaJS + ReactJS). They all have their advantages and disadvantages.
FullStack JS is frequently used in real-time applications: chats (like Slack / Gitter), finance applications (scalability, PayPal...), game servers. An opportunity to push information on the client (creating real-time), practically «out of the box», is the main engine of growth for this technology.
A higher degree of the classic programming. Any vacancy with the word Architect implies a Senior specialist and, probably, is of no interest in the short run for you, dear reader.
Lead vacancies can be very different. So many companies, so many different leads. On the other hand, this is the case when the person defines the place, not the place defines a person. Of not interest for beginners, as Junior Lead is as much of a bollocks as Junior Architect.
NodeJS Developer / Backend JS Developer
JS backender. The «much feared» NodeJS – oh, what have been said about it! Praises, accuses of «hipsterism» – there was everything... Sapienti Sat. The job implies knowledge of asynchronous programming, threads, data bases, REST API. Close to Fullstack JS (minus requirements of design and page makeup knowledge).
What to choose
In my opinion, you should learn FullStack JS, even if you are planning to work with FrontEnd. A person having no idea of how server works won't be able to configure even a bundle build. «A little known fact»: modern frontend is built using NodeJS, and packages are installed using NPM (a part of the NodeJS ecosystem).
If you know backend at the level:
- I can deploy a simple REST API
- I can run NPM scripts
- I can install dependencies
it will increase your chances of finding the job of React or Angular developer.
In fact, it is simpler to learn NodeJS than browser, because NodeJS environment is relatively simpler. Plus work with the file system, minus a lot of Web API and vendor-specific stuff.
All in all, you need to learn the thing that is of the most interest for you, without bothering about the «relevance» of the specialization. The market of web development has already established and the demand and supply equilibrium is practically the same for all the categories. «There are a lot of Angular vacancies» – this is your point of view. «There are a lot of Angular resumes» – this the recruiter's point of view.
When choosing the field, don't chase simplicity (the sadly remembered «manual tester»). The Indians don't sleep, they are monstrously damping. All the trends show that future belongs to programming proved by the theory (functional programming, static typing) and math. Inquire the number of vacancies on machine learning. Place stakes on the long term prospects. Search the word «intern», not «jun». Intern will allow you to look at the team work. It's better to misfit than to quit in a couple of months. The latter will be breaking you psychologically. «To find a job in a good team» is not the same as «to find a job».
Recruiters don't like «any» workers. Considering the beginners vacancies, they look for those who have already made up their minds what they want. The more specific and focused your resume will be, the more chances you will have. Because even if you find «any job» – your next goal will be the search for «a better job». And when are you planning to finish the search and start to get pleasure from life?
If math goes wrong – programming won't hold pleasure for you. Talks that you don't need math in programming are spread by illiterate people and losers. Programming requires calm, patience and concentration. If you are not a sedulous person – don't. There are dozens of other highly paid professions, where you will be able to show yourself better.
Page makeup requires an incredible assiduility. Do you like the game «Find 10 differences»? If you do, then it is for you. If not, don't force yourself.
If your imagination can't be turned on «at the drop of a hat» – design is not for you. A good designer can intentionally trigger emotions he needs and transform them into the visual format. If you are a stolid person, your design will be dead. If have no visual intuition, no inborn sense of color and shape, you won't succeed in this field. Yes, you can copypaste someone else's ideas, secretly being scornful of yourself because of underqualification, but why?
Find your strongest sides and place stakes on them. Find your weakest sides and weigh if they can pose obstacles in the chosen profession. All that's «in the middle» – leave it alone.