В описании вакансии на младшего разработчика легко насчитать полтора десятка строк требований. Человек, только что закончивший курс, читает их подряд и закрывает вкладку: уверенно он проходит по четырём пунктам из пятнадцати. На собеседовании его спросят по трём. А на испытательном сроке проверят фактически одно — способен ли он разобраться в чужом коде, который писали до него несколько человек в течение нескольких лет.
Разрыв между тем, чему учат, и тем, чего просят, устроен не как обман. Учебная задача формулируется целиком, данные в ней чистые, проект пишется с нуля и заканчивается в ту минуту, когда заработал. Рабочая задача формулируется наполовину, данные приходят грязными, проект начали без вас, а слово «заработало» открывает разговор, а не закрывает его. Это два разных ремесла. Второму на курсах почти нигде не учат по простой причине: для него нужен чужой унаследованный код, а взять его в учебном репозитории неоткуда.
Дальше речь пойдёт не о том, какой язык выбирать первым, — этот спор бесконечен и решается положением дел на местном рынке труда, а не убеждениями спорящих. Речь о другом: как перевести текст вакансии на человеческий язык и чем закрывать графу «опыт», когда закрывать её нечем.
Ниже — четыре вопроса, которые начинающие разработчики задают мне чаще прочих; отвечаю так, как отвечал бы человеку, у которого собеседование назначено на послезавтра:
- Почему после курса рабочая задача выглядит незнакомой?
- Какие строки в требованиях обязательны, а какие списаны из соседнего объявления?
- Чем закрыть графу «опыт», если за работу вам ещё ни разу не платили?
- Что решает исход собеседования, когда навыки у кандидатов примерно равны?
Курс учит писать с нуля, работа — править чужое
Учебный проект живёт на чистом листе: вы выбираете структуру, называете переменные так, как вам удобно, и никому не обязаны объяснять решения. Первая рабочая задача обычно звучит иначе — найти, почему на одной конкретной странице пропала кнопка, в системе, где вы не писали ни строки. Здесь навык «написать» не помогает совсем, а помогает другой: сузить область поиска, прочитать историю правок, воспроизвести сбой у себя, отделить причину от следствия.
Этому можно научиться самостоятельно, и способ ровно один — взять чужой проект. Не переписать его, а внести небольшую правку внутри чужой архитектуры, приняв её как данность. Дискомфорт от того, что «я бы сделал иначе», и есть содержание упражнения: на работе платят не за архитектурный вкус, а за умение не сломать то, что уже работает.
На форуме для молодых IT-специалистов я вёл мастер-класс именно об этом разрыве. Он обнаруживается одинаково у всех, независимо от того, какой курс человек закончил и сколько за него заплатил, и обнаруживается всегда в первые две недели работы — то есть в момент, когда репутация новичка внутри команды складывается быстрее всего.
Как разобрать описание вакансии на три слоя
Список требований — не единый текст, а склейка из трёх источников с разной степенью обязательности. Разложить его полезно до отклика, а не после отказа.
| Слой | Как выглядит в объявлении | Насколько обязателен |
|---|---|---|
| Ядро задачи | Названо конкретно: язык, база, фреймворк, с которым живёт продукт | Без этого не позовут |
| Окружение команды | Система задач, git, код-ревью, тестовый контур | Догоняется за две недели, спрашивают для проверки кругозора |
| Списанное | Длинный перечень технологий через запятую, «знание паттернов», «английский» | Часто перенесено из прошлой вакансии |
Проверить принадлежность строки к слою проще, чем кажется. Откройте два-три объявления той же компании за последний год: то, что повторяется дословно из вакансии в вакансию независимо от позиции, — шаблон. То, что описано подробно, с деталями продукта, которые нельзя списать, — ядро. Отдельный признак ядра: требование связано с существительным из описания самого продукта, а не висит в воздухе отдельным маркером.
Практический вывод: откликаться имеет смысл, когда закрыто ядро, даже если общий процент совпадения по списку невелик. Обратная ситуация — совпало десять строк из шаблонного слоя и ни одной из ядра — почти гарантированный отказ, о котором вы не узнаете причины.
Кто пишет требования и почему в них попадает лишнее
Полезно понимать происхождение текста. Чаще всего его собирает не тот, кто будет с вами работать: рекрутер берёт прошлое объявление, просит у руководителя список технологий, получает его в виде наспех надиктованного перечня и добавляет обязательный абзац про ответственность и работу в команде. Никто на этом этапе не разделяет «нужно завтра» и «пригодилось бы когда-нибудь».
Отсюда следуют две вещи. Первая: перечень длиннее реальной потребности почти всегда, и это не ловушка для новичков, а издержки процесса. Вторая: описание задачи в свободной форме — тот абзац, где рассказано, чем занимается команда, — информативнее списка маркеров. Если из этого абзаца непонятно, что вы будете делать руками в первый месяц, стоит спросить об этом первым же вопросом на собеседовании. Ответ покажет, есть ли в команде место для новичка вообще: там, где всех загружают на пределе, младшему специалисту не выделят наставника, и его выход закончится расставанием на третьем месяце.
Пустая графа опыта закрывается фактами, а не словами
Формулировка «есть опыт учебных проектов» не сообщает нанимающему ничего: она одинакова у всех выпускников потока и потому не различает кандидатов. Различает конкретика — задача, ограничение, результат, срок.
- Опишите не проект целиком, а одну задачу внутри него, которая была трудной: что не получалось, какую гипотезу проверили первой, чем всё закончилось.
- Назовите измеримое: сколько записей обрабатывалось, за какое время выполнялся запрос до правки и после, сколько было пользователей у вашего бота.
- Приведите след чужой оценки — принятая правка в открытом проекте, разобранное на ревью решение, задача, сделанная бесплатно для знакомой компании и доведённая до внедрения.
- Скажите про то, что не вышло, и что вы из этого поняли. Пункт выглядит рискованным, но именно он отличает человека, который работал, от человека, который слушал.
Отдельно про соседние входы в отрасль. Техническая поддержка, тестирование, работа аналитиком на стороне заказчика — это не «понижение», а редкая возможность год смотреть, как продукт ведёт себя в руках живых людей. Разработчик, пришедший из поддержки, задаёт другие вопросы на старте задачи и ошибается реже. Отрасль ценит не путь по прямой, а понимание, откуда берутся требования.
Что решает собеседование, когда кандидаты равны
Когда навыки в резюме сопоставимы, выбирают по стоимости сопровождения: сколько времени старший специалист потратит на новичка в первые месяцы. Эту величину нанимающий оценивает прямо на разговоре, и оценивает по мелочам.
Первое — что человек делает, столкнувшись с незнакомым. Ответ «не знаю» с продолжением «проверил бы вот так и вот так» стоит дороже уверенной выдумки: выдумка обещает будущие часы разбора чужих фантазий. Второе — умение объяснять словами. Разработчик половину времени объясняет своё решение людям, у которых нет вашего контекста, и если объяснить не получается, задача возвращается по кругу. Третье — вопросы кандидата. Их отсутствие читается как безразличие, а два содержательных вопроса о продукте переворачивают впечатление сильнее, чем строчка о курсе.
Про тестовое задание скажу отдельно, потому что здесь ошибаются массово. Его смотрят не на предмет «работает или нет», а на предмет того, как оно сделано: есть ли обработка пустого ввода, читаются ли названия, лежит ли рядом короткая записка о принятых допущениях. Такая записка на десять строк добавляет к работе двадцать минут и меняет её восприятие целиком.
Отклик, который дочитывают до конца
Соберём сказанное в то, что делается за вечер. Возьмите вакансию, которая вам действительно интересна, и выпишите из неё ядро — два-три пункта, без которых работа не существует. Под каждый найдите у себя факт, а не самооценку. Если факта нет ни под одним пунктом, эту вакансию отложите и вернитесь к ней через месяц с закрытым пробелом — так честнее и быстрее, чем рассылать отклики веером.
Сопроводительное письмо сделайте коротким: три-четыре предложения, в которых названо, чем занимается компания, и сказано, что конкретно вы делали похожего. Никаких «быстро обучаюсь» и «стрессоустойчив» — эти слова стоят ноль, потому что их пишут все. Работает единственное: проверяемое утверждение, к которому приложена ссылка на результат.
И последнее, что стоит принять заранее. Отказы на входе в профессию — статистика, а не приговор: описание вакансии часто устаревает, позицию закрывают внутренним переводом, бюджет замораживают в день вашего отклика. Считайте не отказы, а доведённые до конца разговоры — их число растёт вместе с качеством откликов, и первое приглашение обычно приходит раньше, чем заканчивается терпение.
Комментарии