Недавно меня позвали гостем в «Тяжелое утро с Holy.js», чтобы хорошенько пропесочить за мою статью про глупцов-фронтендеров. Мы обстоятельно поговорили, и один из аргументов был такой — если наши js фреймворки жрут неоправданно много на простых задачах — просто не используй их. Если тебе просто надо порендерить четыре формы, то тебе не нужен ни реакт, ни тайпскрипт, ни вебпак — ничего. Создаешь три файлика .html, .css и .js — вот тебе и приложение.
Ничего не надо никуда билдить, никакого стат анализа, и никакой прожорливой и тормозной ноды на твоей машине — все быстро и просто. Так можно строить и достаточно большие приложения — ведь тот же vs code вполне себе может тайпчекать твой js. Другие проблемы, которые можно решать большими фронтенд инструментами во-первых часто выдуманы их создателями, а во вторых если и создают большую боль — то только на действительно больших приложениях.
Аргумент увесистый — мне нечего возразить. Я действительно могу не обмазываться редаксами-вебпаками-рамбдами, с технической точки зрения мне ничего не мешает. Зато мешает с гуманитарной. Я не могу себе позволить делать свои проекты на чистом джаваскрипте, потому что тогда меня никто не возьмет на работу.
Понятно, что когда ты работал архитектором или руководителем разработки в крутой и известной компании, тебя никто не развернет за незнание редакса. Но я говорю о случае, когда ты условный мидл в условном Томске. Вы можете открыть любой сайт с вакансиями в рф, вбить frontend, указать зп от 150к, и увидеть — практически каждая из них требует «Отличные практические знания React стека ( Redux, Saga, Reselect, Styled Components )». Наполнение может отличаться — у них много фреймворков, которые делают одно и то же. Лучшие компании предлагают не обязательно знать именно их фреймворк — достаточно пяти лет опыта работы с парочкой точно таких же.
Это фронтендеры. В C# или Java стеке все ещё хуже — у нас есть один основной фреймворк, и все по дефолту считают, что ты его досконально знаешь — последнюю версию, и, конечно, ту — которая используется именно у них. Они думают, что ты обязан его знать — и проверяют это на собеседовании. Хорошо проверяют.
На первый взгляд — ну и правильно делают. Ведь ты же придешь такой, склонишь репу, и тебе скажут — бахни контроллер. В нашем asp.net core проекте. Чтобы бахнуть — надо плюс-минус знать как работает именно asp.net core.
Но вот ты его не знаешь, а тебя наняли — и ты бахнуть не смог. А ведь день твоей работы — он же десять тысяч рублей стоит — такое бабло на дороге не валяется, и какой-нибудь епам от таких потерь не сможет оправиться. Миллиардная корпорация, она на то и миллиардная — бабки считать там умеют. Я мало изучал конкретные фреймворки, и ещё меньше — финансы. Но, похоже, я умею считать бабки лучше, чем они.
Вот есть у нас бекендовая вакансия. Хотят asp.net core, хорошее знание C#, какой-нибудь mssql, и ещё всякой хренотни по мелочи. И есть абстрактный чел, который зачем-то на неё поперся, хотя ни аспнета, ни мускуля он не знает. И тут всего три варианта. Он может быть обманщиком и самозванцем — и тогда его надо гнать ссаными тряпками. Может быть большим идиотом — ему придётся это объяснить. А ещё он может решить, что вполне себе справится с этим стеком — например потому что базы юзал другие, а бек делал на джаве.
Понимаете, человек делал бекенд — сложная штука, целая сфера, глубокое понимание которой — ключевой скилл для такой позиции. Я понимаю, когда тебя не готовы взять на другой ЯП — они тоже очень сложные. Но, Господь Всемогущий, кто-то действительно верит, что asp.net webApi прям так критично отличается от asp.net core? Или в то, что человек, которые пять гребаных лет строил гигантские приложения на условном спринге придет к вам, и такой — «ну неее, это слишком сложно. Я не могу понять такую сложную систему, ведь там аж три другие невыносимо сложные концепции! База данных совершенно другая. Совсем не такая, как те четыре других, которые я всю жизнь изучал — в ней четыре с половиной синтаксических конструкции пишутся по другому».
Все знают — пока не изучишь инструмент досконально — не сможешь решить на нем ни одной малюсенькой задаченьки. Разработчики — они ведь абсолютно необучаемы. Проще говоря, это тупорылые камни, не способные запомнить и двух новых слов.
Внимательный читатель отметит — на самом деле это не правда. И на самом деле тупиц, которые так думают — не существует. Я спародировал
Дело в краткосрочной перспективе. Финансовой. Если нанять парня, который знает только чистый js на проект с реактом, он будет плохо перформить пару недель. А потом ещё два месяца время от времени совершать детские ошибки. Если при этом проект ещё и очень сложный — эти сроки увеличатся кратно. Поэтому логично делать так — брать людей, которые отлично знают именно ваши технологии. Чем быстрее боец зафигачит первого врага, тем лучше.
Вот только есть одна маааленькая проблема.
Знание конкретно ваших инструментов — это один из тысяч параметров разработчика. И один из самых неважных.
Если брать двух абсолютно одинаковых разрабов, один из которых знает ваш фреймворк, а второй знает не ваш — надо брать первого. Но таких ситуаций не существует. У вас есть два разраба, у одного из которых пять лет опыта, у другого четыре. У одного C#, а у второго C#, Java и OCaml. У одного свой опенсорс проект с тысячей пользователей, а второй очень глубоко знает алгоритмы и структуры данных. Один экстраверт, второй интроверт.
Можно долго перечислять. Проще представить вот такой кейс — у тебя шарповый проект, и надо выбрать тупого шарпист или умного джависта. Для меня выбор был бы очевиден. Хороший разраб быстро освоит новый фреймворк или либу. А плохой не нужен, даже если уже знает их.
Но есть нюансы. Во-первых, обычно нет такого, чтобы один был прямо вот тупой. Во-вторых это очень сложно определить. Нет хорошего механизма, чтобы понять, насколько разраб умен, как он решает задачи, как подходит к работе. Зато очень легко понять, был ли у него опыт работы с реактом.
И это — главная причина вакансий в духе React+Redux software developer. Экономия денег на старте — это отговорка, чтобы не признаваться себе: мы не умеем собеседовать.
Мы вообще все не умеем собеседовать — от гугла до провинциальной веб-студии. Но не уметь можно по-разному. Большие и крутые компании могут достаточно, чтобы оценивать не только знания по стеку. А люди, которые нанимают мидла в провинции — не умеют собеседовать совсем. Нет системы, а потребность в системе есть. Вот и получается, что чекать давно выверенный список вопросов по какому-нибудь ангуляру — это как-будто бы системный подход. И в целом такая компания действительно нанимает людей, которые знают её стек. Вот только все остальные их качества — рандомные.
Зато собеседовальщики чувствуют себя отлично. К ним не подкопаться — ведь у них бизнес ждет задач прямо сейчас, ведь у них нет бюджета учить людей, ведь они ищут людей, которые будут решать их проблемы, а не создавать новые. А самое главное — не нужно думать, готовиться проводить интервью, и отрываться от своего макбука, пока тупой соискатель тарабанит дежурный жизненный цикл компонента. Натренированное полуха очень быстро выхватит ошибку и завернет засранца домой, доучивать. А я пошёл дальше решать задачи бизнеса в проекте, на который не взглянешь без слез — потому что его построили узколобые заучивальщики базовых вопросов по реакту.
Умный и хороший разраб не станет заучивать правильные ответы к собеседованию, вот и все. И мне кажется, это тоже все понимают. Когда ты говоришь, что готов нанимать только людей, которые полностью подходят в твой стек — ты как бы заранее решаешь, что кандидат недостаточно умен, чтобы быстро разобраться. И готовишься нанять тупицу.
Это огромная проблема — не только потому, что кто-то где-то неправильно наймет людей. Маленьких компаний, которые ищут себе «крепких мидлов» — тьма тьмущая. Они создат рынок, и влияют на дух индустрии. Я лично видел, как студенты отказывались от участия в пет-проекте, потому что он на ангуляре, а они уже выбрали реакт, и теперь не хотят впустую тратить время — лучше выучить свой фреймворк. Это гарантирует найм. И хотя ситуация на рынке в целом благоприятная, и любой разраб, который в принципе умеет писать код, рано или поздно найдет себе нормальную работу — сидеть и краснеть на собеседовании все равно никто не хочет.
Вы вот все жалуетесь, что я прихожу на хабр ныть. Но пока вакансии «React Developer» не превратятся в «Software developer», моё нытье — это именно то, что нам нужно.
На правах рекламы
VDSina предлагает мощные и недорогие VPS с посуточной оплатой. Интернет-канал для каждого сервера — 500 Мегабит, защита от DDoS-атак включена в тариф, возможность установить Windows, Linux или вообще ОС со своего образа, а ещё очень удобная панель управления серверами собственной разработки. Обязательно попробуйте!
Автор: Philipp Ranzhin