И снова привет, Пикабу!
Тема этого поста у меня назревала давно, но как-то соединить воедино все мысли вместе и изложить "на пальцах", в понятном для широкой аудитории стиле, я решился только сейчас. Большая часть терминологии и концепций адаптированы для понимания людьми, не сильно знакомыми с миром IT, но знают что такое сайт, браузер, приложение) Мыслей много, многие очень спорные, но многие из них разделяют мои коллеги и друзья, особенно это касается размышлений о "сложных" моментах профессии программиста. Так как мыслей очень много, то я выпущу их несколькими частями, раскрывая тему за темой. Если читатели захотят узнать о чем-то еще, с удовольствием распишу это в очередном после. В любом случае, запаситесь большой кружечкой чая, мы начинаем!
Немного о себе - работаю программистом уже 5 лет, окончил бакалавриат и магистратуру ИТМО по одному из сильнейших на тот момент направлений подготовки специалистов, с тех пор поработал в компаниях Dell EMC / Dell Technologies (бывшая EMC), EPAM, Luxoft. Сейчас работаю ведущим программистом в галере компании с инициалами ГД (по-английски инициалы те же), так как в рамках соглашения о неразглашении не могу настолько прямо выдавать некоторые моменты работы, о которых планирую рассказать в серии постов. Знаком с очень большим кругом специалистов (и не очень) с своей отрасли, знаю много историй людей, кто и почему пришел в ИТ, у кого какие примерно зарплаты, кто что умеет и кто как оценивает свои навыки.
Начнем с того, что я чисто физически не смогу обсудить все категории и сферы IT, особенно все категории и пути людей, которые попадают в эту профессию. Я не буду рассматривать админов / специалистов по информационной безопасности, дизайнеров, аналитиков и т.п. - в основном я буду говорить про:
- разработчиков (как бэкэнд разработчиков, которые по сути занимаются всем, кроме пользовательских интерфейсов, и фронтэнд разработчиков, благодаря которым вы видите ваши любимые сайты именно такими, какими их задумал автор / заказчик / менеджер, т.п.)
- тестировщиков (они бывают ручные и авто-). Ручные тестировщики тестируют как программу целиком, так и отдельные ее компоненты, вручную - вручную тыкают кнопочки в интерфейсе, вручную шлют запросы на сервер, если интерфейса нет (или хотят отдельно протестировать логику работы приложения без интерфейса). Автотестеры по сути являются более "прокачанными" работниками, они умеют писать код, как и разработчики, но пишут его для создания "программы для тестирования другой программы". То есть делают так, чтобы тесты, написанные другими автотестерами, могли запускаться вручную, без участия ручных тестировщиков. При написании больших и сложных приложений это очень сокращает время и силы на тестирование.
- и профессиях, смежными с ними. В основном про так называемых ДевОпс инженеров - они помогают всем разработчикам и тестировщикам сделать так, чтобы их труды автоматически (или не очень) запускались на нужном сервере, настроить эти самые сервера, настроить сеть между ними, помочь собирать с них всю полезную разработчикам информацию, при внесении изменений в код программы запустить тесты, написанные разработчиками и тестировщиками, которые помогают преждевременно находить ошибки в коде программы. Они на самом деле делают еще кучу всего, но в большинстве случаев работа сводится именно к этому.
Теперь пара слов о том, как чаще всего люди попадают в IT по одному из этих направлений:
- Люди, ранее не работавшие в этой сфере, и не имеющие высшего математического / физико-математического образования, зачастую 27+ (а то и 32+), которые учатся "кодингу" (умению писать более-менее сносные программы небольшого масштаба и с достаточно узкой спецификой на одном конкретной языке программирования). Они в большинстве своем (не все) очень долго учатся, достаточно узко мыслят, им сложно развиваться в этой отрасти ввиду крайне скудной базы, которую другие типы программистов получают в ВУЗах (многие современные ВУЗы вопреки общему мнению дают очень хороший и "правильный" набор знаний, который, при правильном применении, можно применить на пользу как себе, так и работодателю). При такие "поздние" программисты либо идут в эту сферу за деньгами, не представляя из себя большой практической пользы для нанимателя, но имя при этом не хилые требования по ЗП, либо идут "познавать искусство программирования", и в будущем составляют неплохую конкуренцию "молодым" программистам, которые еще в ВУЗе узнавали все то, и даже больше, чем узнают "поздние" программисты уже в процессе работы. Очень часто идут в IT после пары-тройки платных (реже бесплатных) курсов по программированию в интернете, или же даже после "школ программистов".
- "Поздние" программисты, но пришедшие в IT с высшим математическим или физико-математическим образованием. Благодаря очень глубокому понимаю математической стороны проблем программирования и обладанию очень хорошим аналитическим мышлением, им достаточно легко дается понимание сложных и не очень очевидных моментов решения задач, стоящих перед программистами. Они легко учатся и часто уходят в нишевые отрасли мира IT, где нужны решения прикладных задач. Ценники на таких специалистов зачастую значительно больше, чем на "рядовых", причем им даже не приходится особо торговаться.
- "Молодые" программисты, которых я упоминал ранее - идут в ВУЗ, заканчивают бакалавриат (ранее - специалитет). Тут 3 варианта развития событий:
1) Идут на достаточно сильную кафедру / направление, но не имеют базовых знаний информатики, логики (в научном плане) и имеют скудную математическую базу. Им очень сложно, заканчивают на тройки, половина полезной информации за 4(5) года обучения пропущена мимо ушей. При этом знают и умеют больше, чем "запоздалые" программисты, даже писали более-менее сильные курсовые работы. ЧСВ у них зачастую завышен (не всегда), считают себя "синьорами-помидорами" (Senior разработчик сродни бригадиру не в мире IT - умеет решать сложные задачи, готов даже научить ремеслу юнцов, которые только пришли в эту сферу), ожидания по зарплате у них обычно значительно выше их реальной стоимости. Представители этой категории преимущественно фрилансят.
2) Умные ребята, которым не повезло на ЕГЭ / просто не повезло попасть в нормальный ВУЗ на нормальную кафедру. К сожалению, наша бальная система оценки знаний выпускников школ не дает шансов попасть на бюджет и получить хорошее образование тем, кому "не повезло" или кто мыслит "не по шаблону". Многие из моих знакомых имеют достаточно хорошо варящий котелок: чтобы стать профи в программировании. Но некоторым из них везет иметь родителей, готовых оплатить им образование. По выходу из универа они либо идут в сильную магистратуру и добирают недостающие навыки там, либо занимаются самообразованием в процессе работы. В целом они адекватно оценивают свои навыки и имеют "адекватные" по сравнению с предыдущими категориями программистов запросы. В дальнейшем большинство из них выходит на достаточно сильный уровень как профессиональных навыков, так и зарплаты. Но путь к "успеху" занимает гораздо больше времени.
3) Наилучший вариант - умные ребята, которые либо изучали программирование в школе, и которые попали на сильное направление образования в ВУЗ. Учиться им обычно интересно, хоть и многие ВУЗовские предметы вызывают попоболь и негодование (об этом далее). Многие из них начинают работать на полставки по специальности уже на 2-3 курсе обучения. Некоторые ВУЗы даже требуют наличие трудоустройства по специальности для закрытия практики. На выходе из бакалавриата либо сразу идут с головой в работу по направлению, будучи уже достаточно уверенными в себе специалистами, которые в состоянии приносить пользу и которых не надо "тянуть", либо продолжают совмещать обучение в магистратуре с работой, еще больше увеличивая объем базы тех знаний, которые им впоследствии пригодятся. Такие ребята знают себе цену, их запросы иногда немного завышены, но при правильном их менеджменте их горячий пыл и желание "покорить горы", наниматель может неплохо заработать.
4) "Старички" - люди, видевшие Фортран, в совершенстве владеющие С++ стандарта 98 года, может даже специалисты по Мейнфреймам - нишевые специалисты в своих областях. Нужны в своих областях, в которых "молодое" поколение программистов уже вряд ли их обойдет. На удивление хорошо учатся новым технологиям, хоть и не охотно. По стилю работы очень четко прослеживается "возрастной след". Работать с ними "молодым" специалистам можно, но сложно. Требует навыков эффективной коммуникации. Зарплата у них не космическая, но ввиду дефицита кадров в этой отрасли, на которой плотно "сидит" и не планирует "слезать" очень большая доля рынка, деньгами их не обижают, иначе совсем туго будет. "Молодые" специалисты идут туда крайне неохотно.
Фух, надеюсь вас еще не утомило такое введение. Поговорим немного о "средних цифрах" и ожиданиях начинающих разработчиков, так называемых "джунов".
Вот немного статистики с внешних сайтов как по джунам, так и по отрасли в целом:
https://vc.ru/hr/69900-zarplaty-programmistov-v-2019-godu-an...
Можно брать разные источники, но по джунам цифры везде примерно одинаковые.
По графику видно, что разработчики на старте сразу получают не меньше 47 тысяч рублей. В 2015-2016 году такие деньги давали уже достаточно умному студенту из хорошего ВУЗа. Сейчас же за эти деньги работодатели готовы взять почти кого угодно, кто готов отвечать на шаблонные ответы, которые от собеседования к собеседованию одни и те же, и ответов на них в интернете полным-полно. Умение думать и логически мыслить на таких собеседованиях почти не проверяется. На такие вакансии легко проходят "молодые" программисты-самоучки. Однако работодатель ожидает, что пришедший программист быстро научится и будет приносить все больше и больше пользы со временем. Если на такую должность пришел толковый студент из ВУЗа - так и будет, но он быстро поймет, что за эти деньги делает работу уже не в 2, а в 3 раза быстрее, причем гораздо качественнее. Поймет, что выучил кучу всего нового, и готов применить это в работе. Однако работодатель не всегда спешит поднимать таким "зарвавшимся юнцам" зарплату, особенно если это не профильная IT компания, а уж тем более российская. И тогда повторяется история про жадного эффективного работодателя и работника Васю, который на самом деле работал за троих сразу. Но если туда пришел программист-самоучка, то скорее всего (не всегда) результат его трудов будет крайне посредственным, начальство будет думать, что программисты в край ух*ели и что деньги им вообще платить даже такие не за что, раз пользы нет. И будет искать специалиста-швейцарский нож (админ, программист, прокладчик сетей, администратор базы, специалист по 1С в одном) за 30 тысяч рублей. Искать будет долго и упорно.
В чем, казалось бы, проблема? В полном непонимании и безграмотности в незнакомой для них отрасли людей, которые нанимают программистов. Либо же рекрутер (иногда HR, сотрудник отдела кадров) вообще не понимает ничего, кроме слова "принтер" в описании вакансии и резюме и пропускает мимо отличных специалистов, которые согласны за разумные деньги решить их проблемы на производстве, либо по незнанию нанимают полных дуралеев за огромные деньги, которые не способны 1С в автозагрузку бухгалтерам прописать.
Как это решить? Сложный вопрос. Есть пословица - если не умеешь что-то делать сам (нанимать специалистов неизвестной тебе отрасли), то доверь это дело профессионалам - на российском рынке я знаю как минимум несколько рекрутинговых компаний, которые за приличные, но разумные в рамках предприятия деньги берут на себя ответственность по договору найти человека, подходящего под требования предприятия, за которого они получат деньги в полном объеме только после окончания испытательного срока. Да, у такого подхода есть и свои минусы, но мне пока другие способы на ум не приходят. Российский рынок IT гораздо менее привлекателен для толковых специалистов, за исключением некоторых мест, куда вливаются миллиарды распиленных денег (но об этом в следующих постах серии). А альтруистов в нашей профессии почти не осталось.
Цифры, указанные на сайте с зарплатами (45-90 тысяч рублей) для начинающего специалиста крайне смазаны, потому что я лично наблюдал, как абсолютно тупых и никчемных специалистов оценивали на уровень гораздо выше, как продвинутых (middle), так и старших (senior) разработчиков, с гораздо бОльшими зарплатами, вплоть до 160к. 160к, КАРЛ! Специалист бит от байта (условно) еле отличает, но на шаблонные вопросы на собеседовании ответил на ура.
Знаете почему так происходит? Собеседование вещь крайне субъективная, особенно в IT. Каждый смотрит со своей колокольни, каждый додумывает по-своему. На собеседование обычно отводится час, максимум два. Как за два часа можно понять, как человек мыслит? Как решает неординарные задачи? Как, в конце концов, узнать, что из важного для твоего проекта / компании он вынес после 4 / 5 / 6 лет в ВУЗе? Да никак, поэтому я всегда собеседую людей в несколько этапов, по полтора часа каждый, и стараюсь все вопросы задавать так, чтобы отсеять любителей гуглить шаблонные вопросы за первые 10 минут.
Но работодатель такой подход не любит. Даже в больших IT корпорациях. Бывает, что человека нужно найти за неделю. И всем пох*й как. Если не найдем - компания потеряет контракт. Плюс время умных и толковых сотрудников, которые в состоянии проводить "правильные" собеседования, тоже стоит денег. Так что приходится брать "меньшее из зол". И, как я описывал в самом начале, пожелания по ЗП у такого "зла" обычно не самое адекватное. А потом вот таких вот "специалистов" заставляют собеседовать новых потенциальных сотрудников. Чувствуете, к чему все ведет?
Вот мы и получаем порочный замкнутый круг - идиоты в индустрии тянут за собой еще большее число идиотов - а среднее значение зарплаты с каждым новым идиотом по отношению к требуемому уровню знаний все растет и растет!
По моим скромным подсчетам, зарплатная вилка у "новичка" в IT (по крайней мере в СПб) будет варьироваться от 40к до 140к! При этом у сотрудников с минимумом и максимумом этого диапазона будет один и тот же набор навыков и умений! А должности при этом разные! Просто одному "повезло", а другой получил "честную" зарплату.
На мой взгляд это одна из самых больших проблем индустрии IT на данный момент. Я знаю как проводятся собеседования иностранными компаниями, искал для них людей, сам приходил к ним на собеседования - у них все так же. Это не проблема России, это проблема индустрии.
Когда абсолютно неопытный и зеленый специалист способен получить даже не "по блату" зарплату, которую кровью и потом получает другой, достаточно опытный специалист, который действительно умеет "решать проблемы" - тогда начинается то, что нарисовано на картинке ниже.
Причем не только у коллег в этой же отрасти. А у всей страны. Программисты зажрались? Многие да. Действительно ли многие из них получают зарплату ни за что? Да.
Но не оценивайте всех программистов только по тому, сколько они получают. Я знаю и даже работал с некоторыми программистов, зарплаты которых близились в СПб к 400к, но которые отрабатывали каждую копейку из них. Их работа приносила вполне оценимые многомиллионные прибыли компании. Я считаю, что программисты, как специалисты, ничем не отличаются от, скажем, строителей (мастеров ремонта) - чем больший объем работ ты умеешь делать, чем большим набором профессиональных инструментов ты владеешь, чем быстрее и качественнее с помощью них ты готов сделать работу, за качество которой ты готов отвечать своим именем и деньгами, тем на больший гонорар ты можешь расчитывать. Мастера в топовых строительно-ремонтных бригадах, насколько я знаю, меньше 300к не получают.
Справедливо это или нет - решайте вы. Я в любом случае хотел бы услышать ваше мнение. В следующих постах я думаю в большей степени коснуться темы "эффективного" менеджмента а также того, как так выходит, что "тупых" сотрудников на большой зарплате многие компании держат и не выгоняют.
Баянометр ругался на картинки