Hello dear editorial staff! Hello colleagues.
In a couple of months, as a frontend developer, I will be four years old. And up to fifty in the passport will remain a little less than two years. During these four years, life has changed rapidly, and now, after a while, it is possible to analyze which decisions were successful and which were not very good.
Let's start by choosing those. stack, and as a consequence - specialization. I think my choice (frontend, javascript) turned out to be successful, and I want to now analyze why.
My background. I graduated from Donetsk Polytechnic University with a degree in Mishustin (systems engineer), in 1994. Having worked for a couple of years as an enikey in various positions back in Donetsk, I joined a small family business (printing), in which I remained for the next 15-20 years. 15 years in his firm, and another 5 years trying to benefit from industry experience by working for hire. These past five years have seen neither significant success nor inspiring prospects. Looking for an alternative, I started trying to do some things on the web. These were simple sites for acquaintances, or for their own needs.
After some experimentation, I realized that in order to learn how to do something well, one must choose a specialization. I chose frontend, taught it for about a year, then got my first full-time job, and in three or four years I went from June to Signor. Now, to take the next step, I'm learning Java.
Today I think that this sequence - first js, then java - turned out to be correct. The following reasons.
When deciding where to start, why is Java the second option next to Fronted and not Python, C #, Golang? Because Java is enterprise code. This is a big, successful upload. This is health insurance. These are colleagues in large numbers, from whom you can learn. And there are many such vacancies. And there will be a lot of them in 10 years.
We do not need Python - on the web, these are prototypes, statapses, and scripts. Scripts are devops, and we are family people, we need good salaries, not nights at work. Python is also a good tool for analysts, but it's a different career. Long, not guaranteed, here you need to get to the right place almost immediately.
C # is a great language, perhaps the best. But he didn't beat Java, and he can't. And remember, which language is better, it is not the developers who decide, but the business when they choose the technology stack. A developer can sometimes influence this choice, but in general, for him, this choice is a given.
Golang is likely to grow. Learn it after Java so that you can rewrite old code from Java to Go in a large stable office. As it happens now, for example, in Yandex.
And in the end, why is it Frontend and not Java?
Fronted with a lower entry threshold. There are four "big" topics to learn in javascript: closures, this, async, inheritance. Of course, there is also layout, which will be discussed separately later. In the meantime, about these four topics.
Closures are the Module, Decorator patterns, and how js works in callbacks. You really need to know this. You will have to disassemble, learn, otherwise it will hurt. But this is more than real, and in comparison with what "buts" the closure works through, for example, in Java, this is nothing.
This work in js is very different from this in other languages. Here you will need to analyze several options for its use - in a constructor, in an instance, in a method, in an arrow function, and yes, this js has many faces, nothing can be done about it ... That is, I wanted to say, thank God. But for a start, a couple of these ten cases will be enough for you to start working, first getting good money, and then very good money.
Asynchrony. Promises, setTimeout. Also, the topic is not obvious for a beginner, but the last of the important ones. If you pulled closures and this, master asynchrony too, well, plus a month.
All. You ask, what about inheritance? As a concept, prototypal inheritance is very simple. It has many implementation nuances, and many implementations themselves in JS. It was. Before the arrival of the ES6. From now on, questions about inheritance are more of a way to show a newbie that he does not know everything yet, than a must have to start real work.
Now a question. Can these three "big" topics be compared to the same Java generics? Yes Easy. Let's remember how functional programming is implemented in java. These are all links separated by two colons ... This is more than comparable to the elusive this in js ...
In general, as a language, js is much more beginner-friendly.
Yes, yes, yes, of course, there is css. Cascading Style Sheets. Eight ways to center a div vertically, no human. Cowards came up with encapsulation. Make this work in all browsers. And your boss generally has a blackberry, and it should also be beautiful there. But.
Flex-box is quick to learn and you can already show something. The rest can be learned already at work, and cross-browser layout can be discarded to layout designers, who are much more than good work for them.
This is the starting picture. As a result, if you compare a start in js with a start in java, you study for three to six months less, and get a job - the first, about 80 thousand - in Moscow. And when a neighbor-javist gets his first job for 100 thousand, you are ready to get the second one, for 120. You make a javist at the start. And these first months of recovery are very, very important if you are already looking forward to them.
Let's continue the competition with the imaginary javist. A couple more years pass. If you invest, and the javist invests, you become a confident middle. Javist approaches the range of 150 - 180 thousand. Frontend is somewhere around 140 -160. If he does not undertake any extra efforts (I did, therefore I do not cite myself as an example). And it's very interesting what happens next.
Moving to the senior development category. It turns out that the frontend is easier to drift towards the full stack. Because js is a multi-paradigm language. Yes, OOP on it is more like a toy, but it is. And functionalism is full, and it is in fashion. React, rxjs. Fronend invisibly teaches you to learn quickly. And then you overtake the javist and rush into the immense career space ...
Therefore - the frontend!
PS I help those who wish to master frontend for free. Write in a personal or in the comments.