Фёдор Борщёв

Заметки с тегом «HR»

Как выучить любой язык программирования

Если вы только собираетесь войти в ИТ, и выбираете куда пойти учиться и какой курс купить, вот вам краткая инструкция:

  1. Покупаете хорошую книгу по выбранному языку программирования. «Хорошая» означает, что её кто-нибудь кому-нибудь советовал в группах/форумах больше 5 раз. К примеру по питону это Марк Лутц — «Изучаем питон».
  2. Изучаете её всю, от корки до корки, делая все домашние задания.
  3. Выбираете самый популярный фреймворк. «Самый популярный» означает «чаще всего упоминается на тематических сайтах». В питоне под веб это Django.
  4. Изучаете всю официальную документацию к фреймворку, от корки до корки. Проходите официальные обучалки. Гугите <framework> best practices, изучаете их.
  5. Делаете свой пет-проект. Блог, сайт, исследование аномалий в парковке под окном, что угодно — зависит от выбранного языка.
  6. Ищете команду с высокой инженерной культурой, которая возьмёт вас джуниором. Дальше учитесь у них.
  7. На сэкономленные на курсе деньги езжайте на недельку или две в Питер (если живёте в Питере — в Калининград).

И не благодарите.

Люди любят слабые решения

  • Давайте возьмём этого кандидата? Ну и пусть он недотягивает, вдруг мы ещё месяц других не найдём.
  • Давайте сделаем редизайн сайта — пофиг, что продаж нет.
  • Давайте наймём ещё десяток программистов вместо одного продакта, который будет резать фичи.
  • Давайте никому не скажем, что не успеваем запуститься в срок.

Обычно источник таких решений (не важно, принятых явно или нет) — достаточно банальный: у ответственного дома собака с ипотекой и вообще сегодня пятница. А зачем делать острые и конфликтные вещи, когда можно делать тихие и посредственные? Авось всё само потом рассосётся. И, бывает, рассасывается же.

Задача хорошего руководителя — предотвращать: не нанимать людей, склонных к слабым решениям, блокировать, отговаривать, увольнять. Пусть его все ненавидят, завтра CEO его уволит за конфликты, но сегодня команда хуйни делать не будет.

За это умение руководители и берут деньги.

Новый человек — это гипотеза

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

Этого не будет. Если такие ребята где-то и существуют, то странно, что мы нанимаем их, а не они — нас.

В момент, когда офер уже подписан, не садитесь на розового пони — никто ваши проблемы за вас не решит. Отнеситесь к новому человеку, как к продуктовой гипотезе: выстройте цифровые ожидания от его выхода и проверьте, выполняются ли они.

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

Найм людей: лучше false negative, чем false positive

Лучше не взять хорошего специалиста, чем взять недостаточно хорошего. Особенно это актуально для небольших команд в стартапах.

Самое главное в команде — общая среда, которую еще иногда называют «корпоративной культурой». Среда может развивать ответственность у новых участников (пример — Студия Лебедева, почитайте их конституцию), а может наоборот, подавлять, как условный ЖелДорСвязьКредитБанк, где инициатива наказуема. В хорошей среде люди цветут и развиваются, в плохой — киснут.

Среду создают люди. Пока в вашей команде один участник, вся среда — это вы: команда планирует время в точности, как вы, реагирует в случае авралов как вы, выстраивает отношения с коллегами как вы.

Когда вы нанимаете людей, вы меняете внутреннюю среду — команда начинает вести себя не как вы, а как вы плюс те, кого вы наняли. Простая математика: чем меньше команда — тем сильнее каждый новый человек её меняет.

И пока один человек может скомпрометировать всю команду, лучше ошибиться и не взять хорошего, чем ошибиться и взять плохого.

Тестовые задания для программистов

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

Самая большая ошибка — вместо тестового задания давать абстрактные задачи на знание алгоритмов. Часто ли в работе ваши программисты обходят графы или вручную реализуют шейкерную сортировку?

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

Тестовые задания для программистов

Такое задание — как открытый вопрос. Поймет ли новенький наш стиль для названий тестов? Не испугается ли сложности? Дополнит ли документацию? Напишет ли переиспользуемый код? Не постесняется задавать вопросы? Выдержит ли дедлайн, который сам назовёт?

Если вдруг проект не получается отдать из-за НДА-шных причин — отдаю специально хранимый для этих целей pet project.