Нинужные знания и умения

Тыщу раз зарекался, а всё равно влипаю в дискуссии о ненужных знаниях. Давайте зайду с другой стороны. Про эту сторону разработчики обычно не думают, а стоило бы — сторона работодателя. Того чувака, что на собеседовании спрашивает странное, да ещё и в работе странного требует.

Если вы живёте не в мире бесплатных фей и платонических бабочек, вы получаете деньги за то, что делаете что-то, что приносит деньги работодателю. Такой вот понятный и простой бартер, к которому зачастую сводятся причины многих решений, если покопаться. Соответственно, работодатель через прищур смотрит на вас рационально: будет ли Вася приносить прибыль? как долго? а сколько?
При этом как-то… ну, слишком наивно считать, что Вася — это только оклад. Совсем уж наивно считать, что Вася — это 180 рабочих часов в месяц (2160 час в год при 22-дневном рабочем месяце).
Во-первых, ежегодно Вася болеет. По моим наблюдениям дней десять в год минимум (-80 часов). Я вот сам сейчас уже третью неделю с трудом выкарабкиваюсь из волны ОРВИ с осложнениями.
Во-вторых, ежегодно Вася берёт отпуск. Недели две хотя бы (-80 часов), хоть знал бойцов, исправно выбирающих за год весь лимит.
В-третьих, Вася человек, а у людей ежегодно случаются всякие штуки вроде «срочно отвезти дедушку в больницу» или «канализацию прорвало, закрываю дыру телом». Пусть три раза в год, -24 часа.
В-четвёртых, если Вася живёт в России, по производственному календарю у него не 2160 рабочих часов в 2017 году, например, но 2024.
Что получилось? 1840 номинальных рабочих часов. Это минус почти два рабочих месяца из первоначального наивного числа. А теперь все посмотрим в зеркало и честно скажем отражению: очень, очень, очень редко обычный линейный разработчик без усиленной мотивации честно вот прям 8 часов работает. Попыриться в окно, пообедать, покурить, потрындеть про новые носки Путина и ярость Навального, посмотреть презентацию нового iPhone, почитать Твиттер и т.д. Реально человек работает 4..5 часа. Пишет код, усилено думает над задачами, вообще трудится на благо работодателя. Аксиома такая. Выведена поколениями всяких лидов, наблюдающих за контингентом и собою. Вы (разработчик) не работаете треть рабочего времени. Как минимум. Чтобы было менее больно, от 1840 срезаем 500, получаем 1340 часов. Или (чуть округлю) 110 часов в месяц. Вот столько работают люди на окладе в офисе.

Мораль: час работы разработчика стоит дорого. Дороже, чем вы думаете. При наивных расчётах час Петрова стоит 1К рублей, если оклад в 180К рублей. В реальности час стоит 1К рублей уже при окладе в 110К. На самом деле он стоит ещё больше, если включаем аренду рабочего места, оплату обязаловки (от электричества до интернета (стоимость бизнес-пакетов вас приятно удивит)) и прочее. Скажем, Васям почему-то не нравится думать о том, что каждый эпизод «Васин косяк привлёк двух других разработчиков на два часа» является эпизодом «на два часа стоимость часа Васи увеличилась на сумму стоимости часов этих двух разработчиков» (теперь занятнее думать о том, сколько же на самом деле стоят junior’ы, которых курируют тимлиды хотя бы на 25% рабочего времени, да?).
Главное, что надо понять, усвоить и зазубрить: разработчики обходятся работодателям дорого. Очень дорого, если сравнивать с трудовым ресурсом других отраслей. Всякий раз, когда разработчик ленится хотя бы посмотреть в документацию (божечки, как же бесят такие случаи) и в итоге дико тупит, вспоминаю, что оклад middle в Москве примерно равен двум окладам врача Скорой помощи в Москве. И учились эти врачи гораааздо дольше и суровее. И ответственности у них больше. А уж пользу обществу не измерить. Только вот те двое на дежурствах в пыль исходят, жизни спасая. А этот сидит в креслице в тепле и с потолка считывает результат функций.

Итак, работодатель и прищур. Задача: нанять человека, который будет продуктивно и эффективно (очевидно, если вы два часа пишете строчку подключения к базе, вы работаете, да, но фигово) работать максимально возможное количество часов, с максимальной скоростью двигаясь к моменту релиза продукта, который пойдёт на рынок и начнёт приносить прибыль. Вроде бы всё хорошо… пока не начинаем думать о том, что жизнь сложнее. Следующий продукт тоже надо делать. И ещё один. А ещё избавляться от «автобуса» (потому в идеале по 2+ ротирующихся разработчика на сервис). И даже при удаче нанять будущего тимлида. В общем, губа не дура, особенно если учесть всё бОльшее проседание рынка senior’ов (бягуть на Запад и Восток).
Иными словами, хочется бойца, который хорошо решит не только текущую задачу, но и следующие. Хорошо — это когда маленький скрипт не требует $1K инстанс ежемесячно в облаке и когда ночью спать можно, а не на мониторинг коситься с опаской. Следующие — это любые. Любые. ЛЮБЫЕ. ЛЮБЫЕ. Понимаете?
Мир не стоит на месте. Бизнес идёт за миром и прогрессом. Вчера вы писали GOTO на BASIC, сегодня кошмарите нейронные сети, завтра будете разучивать «папа» с белковыми компьютерами. Ещё сегодня основным продуктом у вашей фирмы был Paint, а завтра для порабощения мира надо выпускать Photoshop. Разведёте руками? Вы не знаете, где хотя бы прочитать, как блюр делается? Вообще читать не умеете, Paint писали интуитивно? Ну ок, вас уволят, наймут умеющего. Устроит? Не думаю. Вы должны мочь идти вровень с цивилизацией. И работодатель хочет, чтобы вы могли. Выгоднее нанять на большой оклад настоящего специалиста, чем дюжину сантехников на мизерные оклады. На сантехников заработает потом вот этот крутой.
При этом работодатель всё-таки не всегда дурак. Потому проверяется не гениальная универсальность (никто не может знать всё). До меня не сразу дошло, но чем дальше, тем больше нравится такая трактовка: проверяется то, можете ли вы решать задачи, которые вам не надо решать прямо сейчас. Хихи. Звучит идиотски, ок. Однако. Нужно понять, насколько вы можете выйти за рамки своей раковины. Насколько способны учиться. Раскрыты ли ваши чакры (фигакры) новому, будущему. Есть ли у вас база для того, чтобы быстро (!) нарастить свежее мясо. Наконец, как вы вообще относитесь к профессии.

И вот тут грустное. Телепатов нет. Провидцев нет. Единственный хоть сколь надёжный способ оперативно понять, может ли человек выйти в будущем за рамки — узнать, вышел ли он за рамки уже сейчас. Рамки разработчики ставят себе убогие (пардон) — что сейчас не надо, то и не буду знать. Так на собеседовании и говорят прямым текстом. Был senior (!) джавист (!), который не ответил ни на один вопрос про работу GC. Ему не надо было никогда. Видимо, когда надо будет разбираться, почему сервер падает по OOM (а у таких бойцов он с гарантией однажды ляпнется), работодатель в идеальном мире смиренно дожидается, пока Вася пройдёт обычный цикл нехочузнаек: 1) почитаем StackOverflow — не, чёт не помогло, 2) погуглим уже полноценные статьи — не, чёт не помогло, 3) лаааадно, мы этого не любим, но пошли читать документацию… ойкакмного! мамочки! насяльника, мне нужна неделя, тут осинь сложный проблема!
Помните про реальную цену часа разработчика? Работодатель тоже помнит. Ни фига не интересно в будущем оплачивать вам сотню рабочих часов только потому, что вы принципиально или по лени природной не подбираете «лишние знания». Нет их лишних. Это у вас в прошлом, быть может, не было задач, которые решаются такими знаниями. Может быть, не было именно потому, что ваш тимлид знал, что нет смысла давать вам такие задачи, вон Вася более прокачан, лучше ему дать. Или просто так получилось. Или вы работали там, где такие задачи и такие проблемы возникают раз в десятилетие (а в соседнем отделе раз в неделю, сюрприз). Да тысяча причин. Солдаты учатся стрелять не потому, что каждый день убивают по врагу, но потому, что однажды война. И будет поздно учиться («чё, утром войну объявили? о, ну это… я на стрельбище пойду, хоть посмотрю, как у автомата приклад выглядит, настало время» — как-то так представляю).
И вот как… сидите вы и говорите, что не знаете элементарного. Вам оно казалось лишним. А работодатель сидит напротив и смотрит. А в голове у него тоска. Он уже понимает, что ни фига с вами не сделать Photoshop из Paint. Что после того, как вы сделаете буквально ту задачу, на которую сейчас срочно нанимают, будет головная боль на тему «куда девать такого кадра, он же только X знает и Y». Что ни фига байки «да ща за минуту нагуглю и освою» не работают. Тимлид тем временем тоже печалится. Он-то азартно задал вопрос «что такое хеширование, приведи примеры», а вы не ответили. Не надо было знать. Раз так, то вы не знаете, как работают hash-коллекции. А потому не решите в разумные сроки задачу «написать более специализированный и оптимальный dict, ибо у нас вооон там затык обнаружился». А если вдруг вас наймут и таки дадут эту задачу, то надо будет за вами каждую строчку по пять раз вычитывать. На всякий случай. Что не так уж интересно. А ещё надо будет вам однажды объяснить, что такое фингерпринты. И на всякий случай проконтролировать в будущем, что вы в PostgreSQL осилите выбрать нужный тип индекса. Сплошное веселье.
Итог: вас не наняли. Злые дядьки спрашивали странное. Пойду в бложик бяку про собеседования напишу. Кому ваще это хеширование надо?! Ни разу не требовалось! Мудаки, кароч.

Как-то так. Эссе получилось сырое и мятое, не везде заполнил переходные выводы и примеры. Потому давайте кратко основные тезисы ещё раз:

  1. Час работы разработчика стоит очень дорого.
  2. Работодатель [вынужденно] оплачивает ваши косяки, баги, бездельничанье, обучение, ликбез.
  3. Работодателю интереснее оплачивать не вышеперечисленное, но результативную и эффективную работу.
  4. Работодатель хочет нанимать разработчиков, которым может дать задачи не только настоящего, но и будущего.
  5. Работодатель уже сейчас хочет некоторую гарантию того, что вы умеете и любите учиться, знать, осваивать «ненужное», что вы видите перспективу.
  6. При прочих (каких?) равных к будущим проблемам больше готов тот разработчик, что знает и умеет больше уже сейчас.
  7. Рынок готов платить за таких разработчиков — достаточно посмотреть актуальные вакансии.

Безусловно, рынок платит и за тех, кто знает меньше. Платит, впрочем, тоже меньше. Часто очень меньше. Подумайте, возможно, всё не просто так.


PS. От поднятой проблемы легко увернуться, обвинив работодателя в нежелании оплачивать пере- и доквалификацию разработчика. Мол, нанимали как питониста, а сейчас вам джавист понадобился, так мне месяц по ночам не спать? Ясен пень, такие случаи оплачиваются. Если нет, бегите, вас обманывают. Эссе же о вечном споре: какие фундаментальные знания нинужны. Какие структуры данных не надо помнить. Какие алгоритмы выбросить из головы. Какие архитектуры, определения, математики, логики, факты считаются лишними в голове Васи, а какие в голове Пети. Имеет ли моральное право (а если не моральное, то нафига) Аристарх Ибульевич пытать на собеседовании бедного Олежку (который в Super Duper Software Ltd ажно целый Chief Senior Developer) на тему массивов (таких квадратненьких скобочек)? И как, наконец, вся эта бойня выглядит с точки зрения презренного золота? Потому не уворачивайтесь. Подумайте.

Нинужные знания и умения: 8 комментариев

  1. У вас множество правильных и правдивых аспектов одной мысли тут высказано. И ввиду определенного стиля в подаче этих вот тезисов позволю себе высказаться с другой стороны баррикад.
    Почему синиоры уходят за рубеж?
    Только из-за презренного золота и общего уровня жизни и комфорта? Возможно некоторые, но большинство ли?
    Не думаю. Потому что есть работодатели и есть то, что называется словом visionaries.
    От слова вИдение.
    У них есть то чего нет и никогда не было (и не будет) у работодателей. Работодатель даёт работу и деньги. Visionaries к этому добавляют своё вИдение будущего, свою страсть и веру в то, что именно с ними ты творишь нечто бОльшее чем просто «создать конкурентноспособный продукт» и навариться на нём.
    Apple начинала в гараже и у них была идея. Идея, которая, вообще говоря, много у кого тогда была кроме них. Но именно Стив Джобс стал тем кем, кто повёл за собой толпы, тем, кто заразил своей верой и идеей не только инженеров и разработчиков софта но и обывателей. И фейсбук начинался вовсе не из желания заработать. Он начался с идеи и человека, который в эту идею верил всем сердцем. git был создан не ради денег. Этот список можно долго продолжать, но я не вижу в этом большого смысла.

    Только у тех, кто «смотрит с прищуром» кроме денег нет в голове ничего иного. Ничего бОльшего. У них нет задачи творить революции, у них есть только текущий проект и последующие возможности *заработать*. Именно в их понимании врач скорой помощи приносит больше пользы за вдвое меньший оклад чем программист. Именно они относятся к своим кадрам как к источнику финансового благополучия и не более.
    Именно про таких людей Стругацкие когда-то написали:
    «Разоблаченный чародей подлежал сожжению; неплохо было также засадить его в каменный мешок и заставить изготавливать золото из собственного дерьма.»
    А тут вроде и незаконно сажать в мешок да и неэффективен он, рабский труд, ведь умные ребята уже это доказали. Но слово «галера» в его нынешнем понимании возникло не так давно. Именно благодаря работодателям.

    По-настоящему талантливому разработчику (которым я, увы, не являюсь) куда интереснее быть с теми, кто понимает и разделяет его желание совершить нечто выдающееся. Ему не близки и неинтересны ваши мотивы (прижать конкурентов, навариться, отжать долю рынка) и уж точно не интересно когда его сравнивают с врачом скорой помощи.

    • Те сеньоры, что уехали за границу, и с которыми я общался о причинах, называли следующее: 1) уровень жизни, 2) будущее [детей, семьи, своё] не в России, 3) деньги, 4) повидать мир, 5) работа в топовой компании (Oracle, Google, Amazon, Facebook). Уверен, есть и другие причины у других уехавших, но мне другие причины не озвучивались.

      На остальное отвечу после осмысления, но сразу же замечу: Apple начался с идеи Возняка и желания Джобса на этой идее (и реализации) неплохо заработать, что у них вполне получилось, пусть и не с первой попытки. 🙂

  2. Интересен вот какой момент — как обозначить верхние пределы нужных знаний и умений?
    Действительно, чем больше знаешь, тем лучше. Но ресурсы получения этих знаний, к сожалению, ограничены — временем, возможностями, мозгом 🙂
    Например — видя будущее в облаках, стоит подробнее изучить AWS, может быть Linux, Azure вроде неплох, а как же сети, а может виртуализация? Но сильно распыляться тоже не хочется.. поэтому лучше вернуться к программированию. Но тут куда смотреть? Умные ребята придумывают гораздо больше новый технологий, трендов, языков чем могли бы одновременно знать и изучать ребята обычные.
    Что делать, если Вася не знает что такое хэш не потому что ленивый, а потому что все время на машин ленинг потратил?

    *Не программист, поэтому за неточности прошу простить*

    • Никак не обозначать эти пределы, в целом вредно и думать об этом.
      Выбирается специализация и упорото нарабатывается всё свободное время, которого в реальности достаточно, чтобы даже взрослому человеку в будний день пару-тройку часов учиться. На выходных три-четыре часа. За год 500..1000 учебных часов, не считая практики на работе, если работа рядом со специализацией.
      Если не волынить, даже с распылением выучится многое. Тем более, бОльшая часть из практических знаний вовсе не сложны (в том же AWS вам не интегралы брать надо будет).

      • Допустим. Но что, если специализация выбрана неудачно и она в условиях изменившегося рынка больше не востребована?
        И как быть со временем на спорт, домашние дела, отдых в конце концов?

  3. Мне вот только интересно, если разработчик — это такой офисный геморрой, ну так посади его на upwork на почасовку, со снимаемыми экранами и видь эффективность удалённой работы, тем более тратить время других сотрудников удалённо сложнее. Не хотят. Считают только офис — только хардкор.

  4. Длинный рабочий день удобен, по той причине, что людям проще налаживать между собой контакты.

    Человек в офисе хорошо, потому что не у всех есть железная концентрация, потом можно быстрее решить проблему, есть какой-то общий дух.

    Проблема зарплат в нашей стране это очень больная тема, видимо от того, что люди смотрят друг на друга, и довольствуются тем, что у них есть. Им это вбивают в голову «лучше синица в руке», «где родился, там и пригодился», «много будешь знать, скоро состаришься».

    Относительно знаний и занятий, пожалуй это самый верный путь. Причем можно ведь дополнять свои умения из смежных областей. Часть идей из одной сферы переносимы в другую. А для тех кто говорит, а если я выбрал то, что будет не нужно? Это конечно страшно, но, мозг ведь работал, значит он способен к восприятию новой информации.

Добавить комментарий