Столкнулся тут с потребностью расширить команду программистов. Давно этим не занимался, год-полтора. Кого брать джуна, мидла, сеньора - не важно, бюджет есть на любого, дел всем хватит.

Найм человека похож как маркетинг - есть “воронка продаж”:

  1. Сперва собираем побольше “лидов” - отклики на вакансию.
  2. Затем дёшево отсеиваем нерелевантных людей - сортируя резюме.
  3. После этого пытаемся выбрать подходящих на собеседованиях.
  4. И наконец подтверждаем гипотезы о прошедших собеседования на испытательном сроке.

И вот начитался я всякого, призадумался. На четырёх этапах найма мы работаем с разными качествами людей.

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

Для упрощения предположим что денежный запас бесконечен и за полчаса разговора с человеком получится оценить характеристики кандидата:

  • Опыт работы с конкретными технологиями
  • Развитый кругозор
  • Острота мышления
  • Ясность мышления

Намерено использую ненумерованный список - не знаю что из этого важнее и как эти характеристики взаимосвязаны.

Ясность мышления влияет на его остроту? Не факт. В седьмом классе я решал задачу по математике у доски. Решил правильно, но пару шагов рассуждения проделал в голове и не стал писать на доске. Преподаватель спросила - а откуда ты взял этот результат? Я не смог внятно сформулировать эту мысль и ответил - “от балды”. “Хорошая у тебя балда”, ответила учительница, класс похихикал. А ведь это прискорбно - не уметь формулировать мысли, ведь толку от них, если никому их не объяснишь не так уж много. В таком случае в действиях ты ограничен лишь своими силами и не можешь рассчитывать на помощь со стороны.

Развитый кругозор влияет на ясность мышления? Если скормить много диалогов с клиентами в цепь Маркова и посадить её в форме чат-бота общаться с клиентами вместо технической поддержки - это будет успех? Вряд ли. Куда скармливать данные - это важно. Если умеющий систематизировать информацию человек начитан - ему будет проще воспринимать новую информацию, будет видеть аналогии и интуитивно понимать как работают вещи, которые никогда не видел. Если же заставить начитываться человека глупого - проку из этого выйдет не так уж много, он может наделать неправильных выводов и будет много ошибаться. (Хихи, всего-то определить умный человек или глупый и широк ли его кругозор!)

Влияет ли острота мышления на скорость приобретения опыта? Для начала - определить остроту мышления сложно. Дурные задачки с собеседований заучиваются, на них легко затупить, а для того чтобы исключить затупливания - нужна статистическая выборка по таким задачкам часов за 8 их решения одним человеком. Вряд ли кто согласится. Опять же собеседование - это стресс для программистов, такие уж мы неженки. Я вот в себе уверенность ощущать только к 27 годам начал, до этого позвонить или поговорить было нерешаемой проблемой. В стрессовых условиях острота мышления притупляется, а работать-то человек будет в условиях нормальных, мы стараемся это обеспечить.

Есть у меня гипотеза о том, что хороших потенциальных программистов без опыта в нужных технологиях можно определять по письменной речи. Я эту гипотезу боюсь проверять, если она ошибочна - потеряю много хороших кандидатов. Опять же гипотезы этой я боюсь потому что она может быть вызвана лишь вдохновением от недавнего прочтения “Норы Галь - Слово живое и мёртвое” и “Пиши-сокращай”, а вдохновение штука обманчивая. Я не хочу акцентировать внимание при выборе коллег на том, что вызвано мимолётным увлечением. Да и способа проверить письменную речь не знаю, не заставлять же людей сочинение писать (привет, сопроводительные письма, которых боятся джуниоры, потому что не знают зачем они нужны и что в них писать, ведь всё и так в резюме написано).

Но попробую объяснить эту гипотезу. Программирование это формализация идеи. Письменная речь - то же самое. Как люди работают с соченениями и книгами? Пишут черновик, потом перечитывают, думают как улучшить, пишут чистовик. Если чистовик получился понятным и интересным, человека зовут писателем и гордятся всей страной. Но что стоит за хорошим чистовиком помимо таланта? Усердие. Без усердия с первого раза ни один текст хорошим не получится, как и программа. Для того чтобы код был понятен человеку нужно думать о других людях, ставить себя на их место, представлять как человек незнакомый с кодом будет его читать, задумываться - говорят ли за себя названия функций и переменных.

Но за умением ясно излагать мысли стоит умение эти мысли выстроить и сформулировать. Вот этот навык как мне кажется - то, вокруг чего можно вырастить идеального программиста. Все эти паттерны, технологии, джаваскрипты, архитектуры - это детали, мелочи, которые меняются каждый год, а умение формулировать мысли никуда не девается.

Update 2020-05-03: не я один так считаю