Сегодня на сайте Mashable появилась любопытная статья «Чтобы стать гуру программирования в 2016 году, достаточно освоить Javascript и переехать в Юту» о рынке труда разработчиков программного обеспечения. Данный материал формирует весьма превратную картину действительности, а потому давайте разбираться вместе.
Краткая предыстория. Я разработчик программного обеспечения и на протяжение нескольких последних лет мне доводилось неоднократно проводить собеседования с желающими пополнить ряды моих коллег. Кроме того, я обучал разработчиков JavaScript навыкам, благодаря которым они получали шикарную работу. У меня приличный опыт в сфере создания и консультирования многообещающих команд разработчиков и компании из списка Fortune 500.
Я также часто сотрудничаю с кадровыми агентствами, благодаря чему не понаслышке знаю, чего хотят самые высокотехнологичные компании в мире. Руководствуясь собственным опытом и тем, что рассказывают мои студенты, я могу с уверенностью заявить, что прекрасно понимаю структуру рынка труда JavaScript как снаружи, так и изнутри.
Вам нужно изучить JavaScript
Нет, статья Mashable вовсе не опровергла мои знания. «Освойте JavaScript» — достойный совет. В списке требований, предъявляемых к кандидатам на должность разработчиков программного обеспечения, более 1/3 вакансий предполагают определенные знания JavaScript. В настоящее время JavaScript является наиболее популярным языком программирования с прекрасно развитой экосистемой модулей OSS, который, в отличие от других существующих альтернатив, действительно можно назвать универсальным: «пишешь один раз, используешь везде» — идея, о которой создатели Java мечтали. И вот благодаря JavaScript она стала реальностью.
Универсальный JavaScript – это приложение, которое работает на серверах, веб-платформе и даже на родных устройствах (см. React Native), причем в процессе использования логика приложения (а не только библиотеки) остается неизменной для всех целевых платформ. Если вы пишете приложения на другом языке программирования, спешу заметить, эта пустая трата времени и денег.
Количество модулей
Увеличение числа npm – Стандартное хранилище пакетов OSS JavaScript
Дело не в Юте – спрос на программное обеспечение везде высокий
Я знаю, что пример выбрали для привлечения внимания читателей. И, да, рынок труда разработчиков ПО штата Юта, действительно, стремительно развивается, но ведь важно понимать, в чем причина такого роста. В масштабах государства Юта представляет собой довольно небольшой рынок, достигающий порядка 2000-3000 вакансий разработчиков программного обеспечения. Это, мягко говоря, не 12000-20000 в Нью-Йорке и не постоянный спрос на 10000-15000 специалистов данного профиля в Сан-Франциско. Причем мы привели примеры не единственных городов, прочитав предложения которых невольно задумаешься о бесперспективности работы программиста в Солт-Лейк-Сити.
А теперь подробнее о современном рынке труда JavaScript, ведь у меня уже есть необходимые данные (за декабрь 2015 года):
- Вашингтон, округ Колумбия, 5300
- Окленд, Калифорния, 4700
- Сан-Хосе, Калифорния 4000
- Бостон, Массачусетс, 3000
- Лос-Анджелес, Калифорния, 2000
В Солт-Лейк-Сити обычно открыто порядка 500 вакансий разработчиков JavaScript. На штат Юта в целом приходится около 800 подобных предложений. Если вы хотите быть программистом, не думаю, что стоит прислушиваться к совету «переезжайте в Юту».
Хотите стать программистом?
Переезжайте, в прямом смысле слова, куда угодно.
Более того, совсем не обязательно собирать чемоданы, даже если ситуация на местном рынке труда хуже некуда. В разных регионах США постоянно требуются удаленные специалисты JavaScript, аналогичные вакансии есть, практически, во всех странах мира, а потому у разработчиков-фрилансеров всегда огромный выбор. Если ты знаешь толк в программировании, обязательно подумай о возможности удаленного трудоустройства. Да, в этом случае немного труднее найти стоящее предложение и конкуренция весьма высокая, но попытаться, определенно, стоит.
Недостаток квалифицированных кадров – реальная проблема. Причем серьезная.
Невозможно устранить нехватку талантливых специалистов, просто заполняя рынок новичками.
В статье Mashable прозвучала формулировка, прочитав которую можно подумать, будто на программистов учится так много людей, что в итоге между ними возникает невероятно высокая конкуренция. А вот и жестокая правда:
Разработка программного обеспечения всегда была и остается очень непростой специализацией, требующей разнообразных навыков, включая общительность, готовность к сотрудничеству и знание технической документации. Не зря же зарплата программистов, как правило, в 2 раза превышает среднестатистическую: и все не так просто.
- У вас должна быть явная заинтересованность в этой сфере деятельности и достаточная мотивация;
- Вы должны уметь учиться быстро и с удовольствием (технологии стремительно меняются);
- Вы должны быть очень коммуникабельным и готовым к сотрудничеству;
- Вы должны уметь концентрироваться на деталях (важно на стадии запуска и отладки ПО) и картине в целом (в процессе разработки);
- У вас должны быть практические знания по математике, логике, а также склонность к абстрактному мышлению;
- Вы должны быть готовы и иметь возможность сверхурочно работать над совершенствованием навыков.
Если это о вас, думаю, вы справитесь. Если нет, изучение основ программирования все равно может пойти на пользу, но в этом случае вам все же стоит выбрать другую профессию. Совершенно логично, что одна специальность не может идеально подходить всем. И это нормально.
Если не получается найти работу, возможно, нужно подтянуть отдельные навыки или попрактиковаться в создании образцов OSS, чтобы доказать, что вы подходите для той или иной вакансии.
Если не удается найти работу, не спешите винить в этом ситуацию на рынке труда.
Скажу по опыту, компании отнюдь не стали «выбирать тщательнее» (ну, разве только если вы будете сравнивать нынешние вакансии с предложениями по JavaScript за 2008 год. JavaScript стал ведущим языком программирования приложений совсем недавно).
На самом деле, компании просто нашли эффективные механизмы определения действительного уровня владения необходимыми навыками, когда речь идет о конкретном кандидате.
Да, проблема нехватки квалифицированных кадров не решается за счет появления на рынке труда огромного количества новичков (причем понадобилось много времени, чтобы это понять). Развитие сферы разработки программного обеспечения, к сожалению, по-прежнему заметно опережает увеличение числа хороших специалистов. Другими словами, если говорить от имени работодателей, вакансий гораздо больше, чем подходящих кандидатов.
Ситуация настолько сложна, что нередко, не находя нужные кадры в самых многообещающих городах, приходится расширять географию поисков вплоть до международного уровня. Если мы говорим о самых высокотехнологичных компаниях мира, количество иностранных граждан, занятых в соответствующих стартапах, в среднем, достигает 29%. В Силиконовой долине — 45%.
Это обходится дороже на десятки тысяч долларов, причем нередко приходится ждать не один месяц, чтобы нанять жителей других стран по визе H1-B. Думаете, стоило бы так мучиться, если бы квалификация местных специалистов соответствовала требованиям работодателей?
Если представители целой индустрии, правительство и Президент США отмечают, что мы столкнулись с дефицитом квалифицированных разработчиков программного обеспечения, это звучит куда убедительнее, чем доводы из статьи в каком-то несчастном блоге с претензией на сенсацию.
Почему трудно найти работу
В сети можно найти множество статей, в которых проблема нехватки квалифицированных кадров не рассматривается, потому что их авторы, видите ли, слышали, что найти работу по технической специальности трудно. И теперь о реальном положении вещей: есть целый ряд других причин, по которым ваш сосед по комнате не может устроиться на работу. Вот самые распространенные из них:
- Компании обычно не интересуются выдающимися знаниями популярных, но совершенно бесполезных методов, таких как интерактивные электронные доски или ситуативные задачи (если вы сосредоточились на этих инструментах, бросайте, пока не поздно. Они не работают и, помимо всего прочего, стоят немало). При таком подходе отсеивается много потенциальных специалистов. Приходится постоянно совершенствовать принципы поиска, чтобы находить поистине выдающихся кандидатов.
- Кандидат просто не достаточно хорош. Освоить JavaScript непросто. 99 из 100 разработчиков, с которыми я проводил собеседования, не могли ответить на простейшие вопросы, касавшиеся двух столпов JavaScript: прототипного и функционального программирования. Причем оба стиля программирования широко используются во всех серьезных JS приложениях, с которыми я когда-либо сталкивался. Практические знания данных аспектов жизненно необходимы каждому разработчику JavaScript.
- Вакансии, предполагающие возможность предварительного обучения, предлагаются крайне редко. Хотя в отдельных случаях при попытке найти выдающихся разработчиков компаниям приходится соглашаться и на худшее – брать на работу младших разработчиков и налаживать обучение на производстве – где, собственно, специалисты и получают самый ценный опыт.
Почему компании не спешат нанимать младших разработчиков, которых можно обучить на месте? В случае, если на предприятии нет подходящих условий, младшие разработчики вносят свой первый посильный вклад в развитие общего дела только, примерно, через год. К сожалению, специалисты данного класса не часто задерживаются на одном месте больше года. Именно поэтому, компании выгодно предлагать трудоустройство младшим разработчикам только в том случае, если ее команда, действительно, знает толк в подборе будущих звездных кадров и их обучении, а также уверена в лояльности подготовленных сотрудников.
Хорошие новости: лучшие кандидаты попадают в команды, где им приходится постоянно учиться. Многообещающие группы разработчиков прививают культуру обучения, нанимают выдающихся наставников и принимают в свои ряды тех, кто готов совершенствовать свои навыки. Такие коллективы не только достигают лучших результатов, но и не сталкиваются с проблемой текучки кадров. В этих условиях новички быстро становятся тренерами, явно чувствуют мотивацию и получают удовольствие от работы, а потому остаются в компании надолго.
Если вы слабый кандидат, вы столкнетесь с определенными сложностями на любом рынке, но если у вас есть хорошее портфолио и вы разбираетесь в том, что делаете, запомните:
Это рынок соискателей на должность разработчиков программного обеспечения и в ближайшее время он не изменится.
Доказательства
- Перспективы роста рынка труда разработчиков программного обеспечения на 2012-2022 гг.: 22% — почти в два раза выше средних показателей по всем категориям специальностей.
- В Соединенных Штатах разработчики программного обеспечения занимают второе место в списке самых быстроразвивающихся профессиональных областей. Только официальный рынок труда медсестер увеличивается быстрее.
- В настоящее время спрос на разработчиков программного обеспечения исчисляется сотнями тысяч вакансий и, ожидается, что к 2020 году данный рынок превысит миллион вакансий.
Даже все эти убедительные факты предполагают весьма узкое видение перспектив профессии программиста. Давайте сделаем шаг назад и посмотрим на картину в целом.
Будущее
Хотелось бы поделиться с вами несколькими слайдами из презентации о значении программирования, в которой поясняется, почему по-прежнему важно готовить больше специалистов этого профиля.
Программное обеспечение поглощает мир,
Интернет подчиняет себе программное обеспечение,
А JavaScript правит Интернетом.
В 2000 году профессия водителя была самой распространенной почти во всех штатах:
В 2000 году рынок труда водителей доминировал над показателями других профессий
Программисты даже не попали на карту. К 2014 году в 4 штатах должность разработчика программного обеспечения была самой распространенной:
К 2014 году разработчики программного обеспечения вышли на первый план в 4 штатах
К 2045 году на человека за рулем автомобиля будут смотреть, как на лошадь в упряжке.
Mercedes F 015 — Ars Electronica (CC BY-NC-ND 2.0)
Например, Uber и без того ставит палки в колеса мировой индустрии услуг такси, а к 2020 году компания намерена купить 500 тыс. беспилотных транспортных средств.
К 2035 году 45% современных профессий исчезнут, но в школах не учат тому, что понадобится для трудоустройства в будущем.
В 4/5 школ США не преподают программирование
Изменения происходят все стремительнее
Под влиянием программирования, практически, все сферы промышленности претерпевают невероятные трансформации, если и вовсе не утрачивают актуальность. И, несмотря на высказывания по поводу несостоятельности закона Мура – кто-то спешит сказать, что он себя изжил (я неоднократно сталкивался с такими ситуациями лично) – темпы технологических преобразований растут в геометрической прогрессии.
Почти под каждой статьей можно найти комментарий со ссылкой на то, что закон Мура – прошлый век, и при этом для любой из них я могу привести примеры 3 технологий, способных снова вернуть данное постановление к жизни. Вот, например, очередной заголовок:
«Google: Наш квантовый компьютер 100 миллионов раз быстрее, чем обычная система»
Мы входим в эру технологического бума, где и для нас, и для наших детей будет очевидно, что технология прогрессирует быстрее, чем человек успевает к ней приспособиться. Причем ничто не свидетельствует о возможном снижении столь стремительных темпов. И вряд ли мы или наши дети доживем до таких времен.
Вот небольшой список технологий, способствующих истинной революции и готовых пополнить банк вакансий тысячами запросов уже в 2016 году:
- AI;
- Дроны;
- Виртуальная реальность;
- Дополненная реальность;
- 3D-печать и роботизация производства;
- Мобильные платежи;
- Криптовалюта, Bitcoin и Blockchain.
А теперь проанализируем факты:
Компьютеры – новая версия бумаги и чернил, а программирование – альтернатива грамотности.
Высказывания о том, что мы можем подготовить «слишком много» программистов, абсурдна. Чем больше программистов, тем больше компаний, специализирующихся на разработке программного обеспечения, а, значит, им всегда нужны будут новые кадры.
Если свести весь текст статьи к одному выводу, на который стоит обратить внимание, пусть он звучит так:
Обучение в сфере разработки программного обеспечение представляет собой эффективный цикл, который невозможно исчерпать за счет увеличения количества программистов. Просто будет больше Facebook-ов, Google и Tesla, которые захотят их нанять.
Так чего вы ждете?
Начинайте изучать JavaScript прямо сейчас.
По традиции, немного рекламы в подвале, где она никому не помешает. Наша компания запустила новогоднюю распродажу серверов и VPS, в рамках которой можно получить от 1 до 3 месяцев аренды бесплатно. С подробностями акции вы можете ознакомиться тут.
Комментарии (55)
bromzh
25.12.2015 14:29+16Что за глупая привычка в каждой статье по js, где хвалится его экосистема, меряться количеством модулей в репозитории? В npm же есть целая куча модулей-однострочников, философия такая. А ещё есть целая куча мёртвых проектов и дубликатов.
Да, инфраструктура растёт (и это хорошо). Но вот эти графики сразу портят впечатление от статей…
intet
25.12.2015 14:29Не понятна цель поста. Сейчас зарплаты высокие, сложность поиска работы не очень. Хотите наоборот, что бы работников было много, а зп низкой. Зачем пилить сук на котором сидишь?
Cyrus
25.12.2015 15:00+3Так разные же люди пилят. Те кто нагнетает — хотят много унифицированных миддлов, с универсальным интерфейсом, два дня на подготовку, 15$ в час, униформа, начинаешь с
WCрефакторинга старого кода. Есть поток задач — развесил объявлений на остановках, пришла толпа жаждущих работы программистов.
Houston
25.12.2015 15:03+7> К 2020 году компания планирует приобрести полмиллиона самоуправляемых автомобилей, а к 2020 году компания намерена купить 500 тыс. беспилотных транспортных средств.
Это как в загадке про самолёт, который в одну сторону летит полтора часа, а в обратную — 90 минут?ingumsky
25.12.2015 23:31-2Конечно. Это же JS, на самом деле там два разных числа — в первой части предложения 0,500001 млн, а во второй — 500 000, и пока это не примешь к сведению, кажется, что они равны.
xmoonlight
26.12.2015 00:30+2Если нет понимания как грамотно «запихнуть» логику бизнес-задачи в код рабочего продукта, то ни один язык программирования не сможет помочь, включая javascript.
Поэтому спрос на хороших специалистов в сфере IT-разработки будет только расти для всех существующих языков разработки.
Главные вопросы:
1. Скорость работы JS на клиентских приложениях и интеграция с аппаратной частью: когда же будет JS-нативка?
2. Как же защищать свой клиентский front-end код на JS от обычного копирования (обфускаторы — не вариант)?
3. Будут ли разработаны какие-то механизмы, препятствующие «заимствование» и использование чужих наработок?
DexterHD
Получается в 2016 году низкоквалифицированных кадров считающих что «Нет бога кроме JS и V8 пророк его...» станет в 2 раза больше? С одной стороны печально. С другой стороны чем больше таких спецов тем дороже становится настоящие специалисты.
AlexanderTarasyuk
Что вы подразумеваете под «низкоквалифицированными кадрами»? Те кто знает только JS и не знает С++?
DexterHD
[sarcasm mode: true];
Например тех кто написал web сервер на nodejs в 2 строки и считает что знает теперь как писать Веб-сервера и как работает веб сервер и что нет лучше продукта для написания веб сервисов чем node… и так далее, думаю продолжать не стоит.Увы, но 80% всех JS разработчиков именно такие. Остальные 20% грамотные спецы, но они не пишут только на JS и уж точно их первым языком программирования не был JS.
[sarcasm mode: false];
AlexanderTarasyuk
Ну это можно применить к каждой области не только к JS, если вы входите в 20% лучших в вашей облати вы хороший специалист, и на вас будет спрос.
[sarcasm mode: true];
Например тех кто написал web сервер на [Язык программирования] в 2 строки и считает что знает теперь как писать Веб-сервера и как работает веб сервер и что нет лучше продукта для написания веб сервисов чем node… и так далее, думаю продолжать не стоит.Увы, но 80% всех [Язык программирования] разработчиков именно такие. Остальные 20% грамотные спецы, но они не пишут только на [Язык программирования] и уж точно их первым языком программирования не был [Язык программирования].
[sarcasm mode: false];
То есть отличие хорошего JS разработчки от плохого это умение писать на еще каком-то языке? Или может все-таки знание базы(в виде алгоритмов и структур данных, знание принципов работы сетей и т.д.) и умение разобраться в случае необходимости в другой области?
DexterHD
Именно так, отличие хорошего от плохого разработчика в знании базы. И поверьте если в ваш «сарказм шаблон» подставить например Си, то он развалится… Потому что на том же Си без базы кроме Hello world в принципе ни чего не напишешь. А на JS не зная базы можно сейчас написать все:
Вот только ответственность за это все будут нести увы другие люди… Слава богу ракетные двигатели еще не программируют на JS
AlexanderTarasyuk
Ну сломаться шаблону будет сложно даже если туда подставить Cи. На Си тоже можно много чего написать использую знаменитый паттерн Copy+Paste и при этом не понимая как это все работает — ну скомпилисоль и ладно. Но да в Си есть компиляция +1 шаг к выпуску в релиз.
jrip
>Остальные 20% грамотные спецы
Походу у вас даже почти сухой стакан наполовину полон.
aavezel
В основном их первым языком был бейсик )))
DexterHD
И да, те кто вообще не знаком с Теорией алгоритмов, Железом, Архитектурой ОС, Си etc. — в моем понимании низкоквалифицированные разработчики. Потому что это база. Это как врач не знающий анатомию.
AlexanderTarasyuk
Только в отличии от врачей (пока что не встречал курсов/обучающих программ «Хирург за 3 месяца») у нас другая проблема у нас сейчас куча курсов наподобие «С++ за три месяца» которые порождают такие кадры.
DexterHD
Не порождают. Потому что после такого курса в случае с тем же C++ или C человек не сможет ни чего толком сложного на C++ написать (В той области где этот язык применим).
А вот после курса по node.js за 24 часа челвоек в принципе сможет написать достаточно сложную штуку, при этом понятия не имея как же она все таки работает. И естественно недоумевая в будущем, почему же она сломалась.
BalinTomsk
Вы себе льстите. Принципы постороения сложных систем требуют наличия не тока систематического и абстрактанго мышления, которым обладает от силы 10% выпускников ВУЗов, но и обширная практика в построении тех самых систем. Что говорить, если подавляющая часть девелоперов даже элементарных юнит тестов не пишет.
jrip
За три месяца вполне себе можно научитья быть немного полезным и понять как развиваться дальше, правда если до этого мозг был научен учиться, т.е. нормально учился в школе, институте. Сейчас же проблема в том, что многие видят в программировании быстрое осуществление всех своих финансовых желаний и только. В целом то не важно умеет человек прогать на с++ или нет, главное чтобы он этого хотел и чтобы с ним можно было общаться. А общения не получится, если уровень его общей интелектуальной подготовки ниже плинтуса. А всякое там кокнретное железо, архитектура, теории аглгоритмов — да оно на практике обычно и не надо почти никому.
DexterHD
До тех пор пока вы среднестатичтический middle пилящий по тикетам интернет-магазины, сайты визитки, cms и пустяковые мобильные приложения в общем то да. нафиг не надо. Но это лишь очень малая часть рынка разработки ПО, и не самая высокооплачиваемая и не самая востребованная и не самая интересная.
AlexanderTarasyuk
Но если людей устраивает такое положение дел? Ну вот нравиться среднестатичтическому middl'у клепать cms. Вот что им тогда посоветуете делать? Перейти на С++ и делать cms на С++?
DexterHD
Посоветую спуститься на землю, не мнить себя Senior Software Architect, и не просить немыслимых денег просто за то что ты в 2 строки написал на JS веб сервер и теперь «разбираешься в разработке серьезных распределенных систем» а посему ты уже не middle совсем и теперь твои сайтики стоят дороже. Вот такое положение дел сейчас.
А происходит потому что люди начитаются вот таких статей о том, что «Вот выучи JS и станешь программистом, будешь бабло лопатой грести и крутым дядькой станешь».
jrip
Что вы все повторяете про «2 строки написал на JS веб сервер»? Вы с такими людьми часто встречаетесь и работаете? Ну так возможно проблема то у вас?
DexterHD
Часто встречаюсь. На собеседованиях например… Когда приходит очередной «backend senior» с нодой с этими 2-мя строчками за плечами. Это печально, и это проблема такая не только у меня :)
jrip
Ок. представил картину.
Вам зачем-то понадобился nodejs программист, он к вам пришел, далее слышит вопросы:
-В чем отличие железяки N от железяки M?
-Как настроить Софт К совместно с софтом Т на железяке Л?
-Как написать алгоритм сортировки трех пятибайт бинарной хрени на ардуино?
Далее он логично говорит:
-Чуваки да я ваще в жизни две строчки написал, так что досвиданья и идите на х.
DexterHD
Чтобы отличить грамотного программиста узкой специализации от фанатика определенного ЯП, какие вопросы вы ему зададите? Как на ноде написать сервер? Или как сервер работает в принципе? Если у вас все фанатики определенной технологии я вам не завидую, потому что при смене задач, росте компании, и смене стека технологий, придется всех уволить и нанять других.
jrip
>Чтобы отличить грамотного программиста узкой специализации от фанатика определенного ЯП,
>какие вопросы вы ему зададите?
Если вам нужен грамотный программист зачем вы ищете их именно среди программистов на nodejs?
Какие вопросы я задам, будет зависить от задач, которые он будет выполнять. По ходу разговора я также постараюсь понять что он за человек в целом и чем он вообще занимался, но однозначно я не буду ему задавать дибильных вопросов.
>Или как сервер работает в принципе?
Устраивать экзамен по электротехнике я ему не буду, я ее уже и сам толком не помню.
>потому что при смене задач, росте компании, и смене стека технологий,
>придется всех уволить и нанять других.
Открою вам секрет, в таком случае, эти ваши вопросы вам тоже не помогут.
DexterHD
Где я такое говорил? Я сказал что приходят на позицию Сеньора а в итоге оказывются знают только ноду, а основ алгоритмов, БД, ахитектуры компьютерных систем не знают. Но упорото прут на сеньора.
Я сейчас конкретно опираясь на нашу беседу и предыдущие слова о 2ух строках имел ввиду конкретно веб-сервер. При чем тут электротехника? Кстати электротехника ни какого отношения к компьютерному железу не имеет… Наверное вы имели ввиду электронику.
Помогут, потому что грамотного спеца можно пересадить на другой стек, в отличие от JS фанатика который все на нем готов писать
jrip
>Где я такое говорил?
А что у вас в вакансии написано? «Ищу сеньора программиста»? Стало даже интересно, а что в требованиях пишете? Или ничего не пишете, а потом удивляетесь? Ну и если это все вас так раздражает, чего заранее удаленное тестирование с этими вопросами не устроите?
>и предыдущие слова о 2ух строках имел ввиду конкретно веб-сервер.
Ну так и ваши неудавшиеся программисты возможно вас изначально не понимают и прут, как вы выразились?
>Наверное вы имели ввиду электронику.
Суть важно? Есть и предмет который электротехника называется, суть в том что они про принципы.
>Помогут, потому что грамотного спеца можно пересадить на другой стек,
Вы в целом то не раскрыли тут сути ваших вопросов, которые мне показались не очень, возможно у вас и есть такой удачный опыт, спорить не буду.
>в отличие от JS фанатика который все на нем готов писать
Как-то пугающе вам именно на JS этот везет.
DexterHD
Есть еще фанатики PHP, есть фанатики Java, фанатики Ruby. Их много, просто фанатики JS в последнее время со всех щелей лезут. Видать у языка рельно взлет, раз каждая домохозяйка уже на нем пишет.
Повторюсь, я не против JS в принципе, меня раздражает истерия которая творится сейчас в мире вокруг него и раздражают проповедники JS наводняющие рынок низкоквалифицированными кадрами. Я именно это пытаюсь донести
jrip
>раздражают проповедники JS наводняющие рынок низкоквалифицированными кадрами.
Нет, ну тут я с вами согласен, JS уже в этом плане PHP даже наверное переплюнул.
Однако не согласен с вашей позицей на счет тех странных вопросов, они как бы не панацея. Ну и они как бы не говорят о человеке как о грамотном специалисте, в каких-то сферах их недостаточно, а вкаких-то сферах в них тупо нет смысла.
DexterHD
Вы правы, не панацея, но такие вопросы нужны. и вот почему:
Простой пример:
Приходит человек, требует нормальные деньги за свою работу, опыт работы есть, какие то проекты на node делал. Ты спрашиваешь, ну расскажи преимущества node, а он говорит: "- Ну node.js асинхронный". o_O
Ты спрашиваешь: "-В смысле?"
А он отвечает "- Ну там все асинхронно делается, вот PHP синхронно а в node асинхронно и поэтому он бысрее и лучше".
Ты просишь пояснить, и выясняется что он понятия не имеет о чем говорит, что асинхронный там только I/O, что там используется классический Event Loop.
Оказывается что он понятия не имеет что аналогичные вещи можно сделать и на другом стеке.
Можно такого разработчика назвать middle node.js developer? Я думаю нет. Но он то себя называет, и на работу устраиватся идет, и деньги просит, и увы но таких большинство сейчас, и я думаю вот именно из-за таких вот публикаций.
jrip
А можно сделать намного проще. Если человек не дибил и к тому же пришел, хотя бы, не только за тем, чтобы закрывать какие-то тикеты, расстроено обсуждать курс доллара, мечтательно думать о другом континенте. То можно просто предложить ему вместе поработать, с оплатой за это время, день, два, да можно час. Тут просто надо быть не выпендрежным очень занятым начальником, а вспомнить когда сам был на его месте, постараться обеспечить максимум комфорта. Ну я имею ввиду ситуацию, когда вы не HR, таки да, фильтр должен быть.
jrip
Кстати та ситуация которую вы привели, ну так 90% ответят наверное. Можно назвать middle, тупо потому что работу он свою делать может, а этот все объяснить можно и позже. Мой любимый прикол — соревнование php vs nodejs на какой-нибудь типовой задаче, правда прикол опасный) многие начинают думать)
DexterHD
Может тогда уже node.js vs reactphp хотя бы ?? А то вы фреймворк сравниваете с языком. А вообще node и php они для разных задач…
jrip
в том и суть выносящего мозг результата) nginx+phpfpm и nodejs) Как раз хорошее объяснение реальной асинхронности) а так то да phpDaemon но это уже не спортивно) Впрочем тут вся суть обычно, в том что пхп я уже перелюбил, а они JS любить только начали)
В целом я думаю мы закончили с вами спор, а наше обсуждение каких то частных случаев мало кому интересно, так что если хотите можем продолжить разговор в личке.
DexterHD
+1. Думаю закончим. Я и PHP и JS уже перелюбил. Теперь больше в сторону всяких Go, Cи и прочего хардкора тянет.
AlexanderTarasyuk
Думаю вам есть что сказать автору этой статьи — можете написать опровержение и отправить автору.
Так проблема в чем? В том что люди в области ИТ с завышенной самооценкой и в этом виноват JS на котором можно написать приложение в 2 строчки?
DexterHD
Автор статьи закоренелый JS программист. Можно сказать ветеран JS. Мне не чего ему сказать. Он двигает свою технологию. Я рад за него, но считаю что место этой технологии в браузере и ни где больше. Извините, таково мое мнение.
Проблема в том что вместо того чтобы агитировать людей на изучение программирования агитируют на изучение технологии Х потому что на ней можно делать все что угодно и она самая лучшая.
Этим болеют только в JS сообществе.
stcherenkov
Ваша позиция плоха ровно на столько же, насколько та, с которой вы спорите. Всякой задаче свой инструмент — и если nodejs эффективно справляется с асинхронными риалтаймовыми задачами, почему бы не применить его на сервере? Ну да, положим, вы можете написать что-то аналогичное на почти любом другом языке, но зачем, если это дороже?
DexterHD
Я спорю не о технологиях а о том, что плохо навязывать одну технологию для решения любых задач.
Огорчу вас, но реалтаймовые задачи работают на базе RTOS и JS там не валялся.
И node.js не асинхронный. В нем есть такая штука как non-blocking I/O, да и только.
Но эта штука есть не только в node.
stcherenkov
Конечно, не надо. Потребность в JS не говорит о том, что с помощью него решают любые задачи – с помощью него удобно решаются задачи, характерные для сегодняшнего дня.
Вы невнимательно читаете, я нигде не утверждаю, что nodejs асинхронный. Да, есть не только в node, но JS-программист сравнительно дешевле, чем, например, программист на Erlang.
jrip
Многие люди пилящие на java всякие ентерпрайзер за миллионы нефти, использующие проверенные решения как бы тоже особо не запариваются как устроено конкретное железо или в чем на уровне различие каких то двух алгоритмов на уровне процессора, они просто знают что в их окружении делать можно, а что нет и когда. Сейчас сфера разработки стала очень объемной в плане знаний и знать все абсолютно невозможно, и фразы про «архитектура, железо, алгоритмы» устарела. Но скил «уметь учиться» не устареет никогда.
DexterHD
Энтерпрайз бывает разный. Бухгалтерскую систему написать для нефтедобывающей компании на Java это одно, а вот написать на программу на ПЛК управляющую нефтеным танкером это другое, и там очень сильно заморачиваются по поводу железа, алгоритмов и прочего. Потому что в таких системах цена ошибки — многомилионные убытки и жизни людей.
А когда не заморачиваются и пишут дронов на JS получается че то типа такого: lifenews.ru/video/14222
jrip
Спасибо, капитан очевидность. Однако не едиными программами управлением танкеров мир живет, а в той же у бухгалтерии тоже много все го разного, для чего нужно быть умным. И знать тоже нужно больше всякого, просто другого. Я даже больше вам скажу, когда пишешь программу для людей, неожиданностей нааамного больше, чем когда для сертифицированной и документированной железяки.
И что значит «заморачиваются по поводу железа, алгоритмов и прочего»? Если тебе нужно знать железо для написания кода, ты знаешь железо — иначе как ты код то напишешь? Если нужно знать алгоритм и его поведение при высоких нагрузках, ну так нагрузочное тестирвоание не пройдешь и работу опять же не сделаешь. Но также если комп можешь спаять на коленке, написать под него загрузчик и ОС, а для работы требуется совершенно другое — например быстро создавать продукты на языке высокого уровня, то очевидно же для такой работы это будет малополезно.
RouR
Я очень сильно сомневаюсь что программу на ПЛК в принципе будут писать на Java. По крайней мере на взрывоопасном производстве ПЛК должны быть сертифицированы и программируемым на одном из языков стандарта IEC 61131. А они очень низкоуровневые, напрямую привязаны к железу. И несмотря на более высокие требования к знаниям, оплачивается меньше чем написание сайтиков (я собственно поэтому и сменил область).
Так что приведённая аналогия подобна котёнку с дверцей.
Специалистов по JS станет больше, потому что он более востребован. Оплачиваться они будут выше чем «настоящие специалисты».
DexterHD
На рынке лендингов и сайтиков общего назначения в общем то да. В хайлоад бэкенде, системной интеграции, ентерпрайзе, мобильной разработке, прикладной разработке увы нет.
Alexey2005
Более того, я предпочту нормальный банк-клиент на js (node плюс клиентский js) значительной части современных банк-клиентов, которые хоть и на Java, но почему-то до сих пор работают только под IE6. Спрашивается, на кой чёрт им тогда вообще Java, если там ни кроссплатформенности, ни даже кроссбраузерности.
DexterHD
То есть такие «мелочи» как:
1 == 1.0000000000000001 // true
0.1 + 0.2 // 0.30000000000000004
"5" + 3 // "53"
в банковском приложении вас смущать не будут?
По вашему в банковских приложениях главное кроссбраузерность и кроссплатформенность? Тогда мне вас искренне жаль. Знаете, считать огромные деньги на динамически типизированном языке, та еще глупость… Из-за того что программист где то забыл переменную явно преобразовать, потерять пару лярдов баксов то еще удовольствие.
MuLLtiQ
Хм, из того что было под рукой
Это я к тому что это ожидаемые последствия арифметики чисел с плавающей точкой.
"5" + 3 == "53" // true
— это, конечно, излишняя гибкость, но к этому быстро привыкаешь. Особенности языка.ageyev
наш любимый Java:
DexterHD
Хорошо, вы меня уделали, я не спец в точных вычислениях. Хотел лишь намекнуть на абсолютно глупом примере. Согласен пример плохой, вот пример получше:
1) Java годами поддерживает свои библиотеки, обратную совместимость и стабильность API (Сообщество node.js о разработке саймой node не могло хрен знает сколько договорится, не говоря уже о куче мусора в репозиториях NPM).
2) Java строготипизированный язык и ошибок с неявным приведением типов там в принципе нет. (В JS, малейшая ошибка программиста и программа считает черт знает что).
И на последок, если смотреть более предметно на точность вычислений, есть такая проблема плавающей копейки, которая с легкостью решается на Java уже черт знает сколько лет.
Вы возразите, что эту же проблему уже можно решить и на JS. Да вы правы уже можно.
Правда с помощью сторонних пакетов, содранных целиком и полностью с исходного Java пакета… Например с помощью этого: www.npmjs.com/package/big-decimal И естественно не дающих ни каких гарантий что он будет поддерживаться.
Eklykti
Хранить деньги в floatах? Даже я, ничего не зная о внутренностях банковских приложений, знаю, что так делать нельзя.
aavezel
Банку-клиенту не нужно считать деньги. Ему нужно правильно отобразить то что хранится в базе/middleware.
VolCh
А если он в Си забудет преобразовать? А Python не даст ему забыть. Вы вообще отличаете динамическую типизацию от слабой?