Так как ответочка получилась весьма объемная, будет несколько частей. Эта - первая, и посвящена она будет первым 5 словам из картинки в оригинальном посте.
Дисклеймер: все нижеперечисленное является квинтэссенцией моего восьмилетнего опыта разработки приложений и может отличаться от вашего.
Для начала, думаю, стоит объяснить суть оригинального поста, так как пост все-таки весьма специфичный.
Итак: на картинке в посте человек подшучивает над требованиями к какой-то айтишной вакансии (скорее всего, веб-разработчика). Суть претензий сводится к тому, что для предлагаемой зарплаты требования необоснованно завышены, и что по-хорошему в одной вакансии собрана работа нескольких человек. Как, например, если бы вы устраивались на работу грузчиком, а в требованиях к вакансии стояло бы, помимо хорошей физической формы, еще и умение водить погрузчик, грузовой кран и умение работать в системах управления складом. При всем при этом ЗП у такой вакансии средняя по рынку для грузчиков. Абсурдно? На первый взгляд, да, но давайте разберемся подробнее. Далее весь текст будет рассматриваться через призму веб-разработки, чтобы сохранить параллель с исходным постом.
Представьте, что вам нужно построить (разработать) дом (веб-проект), и вы находитесь где-нибудь годах в 90-х прошлого века. В вашем распоряжении есть доски (HTML) и гвозди (CSS), и, может, даже еще молоток (какой-нибудь веб-сервер, например, Nginx или Apache), ну, и ваши прямые (надеюсь) руки. Для того, чтобы построить дом, вам нужно знать, как использовать дерево, гвозди, и как работает молоток, правильно? Так же и веб-разработчику на самом базовом этапе нужно владеть HTML, CSS, ну и немного понимать, как работает веб-сервер, чтобы суметь "залить" на него готовый сайт, иначе его никто не увидит.
Вы начинаете строить дом, и все вроде бы идет хорошо. Вы возводите каркас, строите стены, завозите мебель, но, вот беда, мебель оказывается прибита намертво гвоздями к полу, а окон и дверей вообще нет, потому что вы не знаете, как сделать так, чтобы они открывались и закрывались. Поздравляю, ваш первый веб-сайт готов. Возможно, у него даже больше одной странички, но ничего, кроме текста и картинок, на нем нет. Даже гостевой книги или форума (аж олдскулы свело).
Теперь вы решаете, что неплохо было бы сделать так, чтобы все-таки можно было двигать мебель. Но вы никак не можете добиться от ваших рабочих того, чтобы мебель стояла на своих местах. Надо как-то нарисовать для них план, чтобы они знали, как, что и куда ставить. Но вы не можете просто взять листок бумаги и нарисовать в углу кресло. Ваши рабочие не поймут такого плана. Они работают только по планам, которые соответствуют определенным ГОСТам. Тут на помощь нам приходят базы данных (Oracle, MySQL, MSSQL, PostgreSQL, MongoDB и еще куча разных вариантов), в которых вы сохраните свой план, с которым рабочие смогут работать. Вам нужно будет выбрать определенный тип базы данных, и, скорее всего, в будущем вы уже не сможете его сменить, если понадобится. То есть вам, как веб-разработчику, нужно уметь работать хотя бы с одним типом баз данных.
Выбрав тип плана, с которым будет вестись работы, вы с дизайнером начинаете этот план рисовать. На этом этапе начинается основная "работа" над сайтом. На любом из доступных языков программирования (Java, C#, PHP, Python и многие другие) "описывается" то, как ваш сайт будет работать: кому будут уходить заявки, как будет сохраняться форма контакта и т. д.
Отличная работа! Теперь грузчики наконец-то смогли правильно расставить мебель, и она больше не прибита гвоздями к полу. Есть только одна проблема: для того, чтобы мебель встала на новые места, вам нужно выйти и войти в комнату. Ну, и у вас по-прежнему нет окон и дверей.
К этому моменту браузеры становятся достаточно продвинутыми, и вы наконец-то можете воспользоваться JavaScript, AJAX и jQuery для того, чтобы добавить на ваш сайт немного динамического контента. Теперь для того, чтобы оставить пост на форуме или поставить лайк, не нужно ждать, пока страница перезагрузится. Ну а в нашем "доме" появляются первые двери и окна, да и мебель теперь можно двигать без необходимости выходить и входить в комнату каждый раз.
Только вы решаете плюхнуться в кресло, чтобы немного отдохнуть в своем новом доме, как раздается звонок в дверь: пришел ваш сосед Вася. Он настолько впечатлился вашим домом, что хочет нанять вас построить ему такой же.
"Вот он, мой звездный час" - думаете вы и решаете открыть свою фирму по строительству домой. У вас уже есть опыт и все необходимые инструменты, чтобы грести деньги лопатой.
На дворе начало 21 века, вы заканчиваете дом для Васи, клиенты выстраиваются к вам в очередь, заказы расписаны на несколько лет вперед. Но тут происходит неожиданное. Некоторая компания начинает выпускать наборы домов "сделай сам". Эти наборы содержат готовые блоки, из которых любой желающий может сделать себе дом при помощи только гвоздей, пары досок и молотка - достаточно только прочитать подробную инструкцию.
Такими "наборами" или, как их называют программисты, фреймворками стали Knockout.js, AngularJS, ReactJS и (позднее присоединившийся к ним) VueJS. Они позволили значительно упростить работу с интерактивными элементами в вебе, и вместе с ними в наш лексикон пришло слово SPA, или Single Page Application (одностраничное приложение), обозначающее такое веб-приложение, где обновление содержимого на экране происходит без перезагрузки страницу. Начиная с этого момента, разработка сайтов с использованием "чистого" JavaScript или jQuery отходит на второй план, и новые фреймворки все чаще и чаще начинают встречаться в резюме и описаниях вакансий.
Теперь для того, чтобы построить дом, вам потребуется два типа знаний:
- фронтенд (фасад дома): один из фреймворков (Knockout.js, AngularJS, ReactJS, VueJS), JavaScript, HTML, CSS.
- бэкенд (перекрытия и коммуникации): базы данных (MySQL, MSSQL, Oracle, PostgreSQL, MongoDB), серверный язык программирования (Java, C#, PHP).
На этом моменте можно было бы остановиться, если бы не человеческая лень. Кто-то решил, что учить несколько языков программирования - это очень сложно, и что было бы гораздо лучше, если бы и фронтенд, и бэкенд можно было бы делать на одном языке. Так родился nodeJS.
Теперь вместо того, чтобы нанимать дизайнера и рабочих, мы можем сами сделать мебель из досок и гвоздей при помощи молотка, которым мы уже умеем пользоваться, и сами же ее расставить, как нам нужно. Удобно? Не то слово!
Продолжение следует…