Но независимо от того, нравятся ли вам такие ярлыки или нет, они полезны, потому что позволяют обсудить набор ожиданий для конкретной роли (уровни программистов). Да, это упрощение, но оно полезно. Например, вы не хотите нанимать младшего разработчика для создания архитектуры крупного обновления устаревшей системы. Точно так же вы не хотите тратить свое время (или время кандидатов) на собеседование с кандидатами, у которых нет нужного потенциала. Фактически, вы даже не хотите, чтобы совершенно неподходящие кандидаты подавали заявку.
Ваша цель - создавать команды с правильным балансом младших разработчиков (также называемых разработчиками начального уровня), разработчиков среднего уровня и старших разработчиков. Таким образом вы разовьете культуру, которая приведет к первоклассному обмену информацией, что позволит выполнять задачи и в то же время экономить деньги.
Младший разработчик против разработчика среднего уровня и старшего разработчика (различия)
Есть много реальных различий между младшими и старшими разработчиками. Как правило, вопрос о том, чтобы быть младшим, средним или старшим разработчиком, не имеет ничего общего с тем, сколько лет опыта имеет данный кандидат - младший разработчик может быть даже старше старшего разработчика. Отчасти это вопрос знаний и технических навыков, которые приобрели кандидаты. Но, прежде всего, это во многом связано с тем, как разработчик воспринимает свою работу, как они взаимодействуют со своими коллегами и как они решают проблемы. В этом смысле ярлык «младший», «средний» или «старший» относится, прежде всего, к определенному уровню зрелости.
Основные требования к Junior программисту
Когда речь идет о должностях младшего звена, главное требование - чтобы кандидаты имели возможность самостоятельно выполнять технические задания. Часто мышление младшего разработчика сводится к тому, чтобы просто заставить код работать. Например, если проект основан на такой же архитектуре (и предполагается, что такая архитектура либо хорошо известна, либо хорошо документирована), то младший разработчик должен иметь возможность довольно быстро реализовать следующую часть логики приложения. Младшие разработчики не являются полностью независимыми, и им нужно будет обсудить, как реализовать определенные элементы проекта. Помните, что младшие разработчики пишут сложный код, так как им сложно писать простой код. Им также необходимо будет проверить готовый код с более старшим инженером-программистом. Это также означает, что вы можете ожидать, что юниоры не поймут всех нюансов проекта и время от времени будут совершать ошибки. Для справки, от младших разработчиков не ожидается, что они будут проектировать какую-либо часть архитектуры программного обеспечения.
Качества младшего разработчика
Когда дело доходит до найма разработчика младшего уровня, вы ищете кандидатов, которые имеют определенный уровень зрелости. В этом случае вы хотите, чтобы кандидаты продемонстрировали такие качества, как:
- Настоящее желание развиваться и учиться
- Готовность учиться на собственных ошибках
- Умение спокойно принимать (конструктивную) критику
- Подлинная энергия и приверженность
Кандидаты на должность младшего разработчика должны показать, что они:
- Прошли весь цикл разработки хотя бы пару раз
- Обладают некоторыми знаниями соответствующего языка программирования и технологических стеков.
- Имеют некоторое представление о большинстве процессов, связанных с созданием программного обеспечения.
- Очень хотят узнать больше обо всем, что связано с созданием программного обеспечения.
- Умеют находить решения небольших проблем
- Могут продуктивно работать над определенной особенностью продукта
Поведенческие вопросы для интервью с младшим программистом Приведите пример ситуации, когда вы:
- Взяли на себя инициативу решить небольшую, но существенную проблему
- Смогли поддержать команду, даже если вы не согласны с ней.
- С пониманием относились к новому стартеру
Основные требования к разработчику среднего уровня
Когда речь идет о должностях среднего звена, главное требование - чтобы кандидаты имели возможность самостоятельно выполнять задачи. Это не то же самое, что основное требование к младшим разработчикам, поскольку слово «технический» было удалено из определения. Конечно, до тех пор, пока разработчикам среднего уровня не ставятся сложные технические задачи, требующие глубоких знаний, они должны иметь возможность выполнять эти задачи самостоятельно. Однако на этом уровне разработчики также должны понимать бизнес-требования, а затем уметь переводить их в технические решения.
Качества программиста среднего уровня
Разработчики среднего уровня должны уметь точно понимать, что данное приложение делает в заданном контексте. В результате они смогут глубже понять любую задачу. И поэтому они могут более точно оценивать изменения и более эффективно их реализовывать. На этапе планирования хороший разработчик среднего уровня должен уметь читать требования и знать, что чего-то не хватает или можно улучшить. С другой стороны, младшие разработчики, вероятно, будут реализовывать именно то, что заявлено в требованиях. Это означает, что приложение работает правильно (согласно «счастливому пути»), но может вылетать после того, как пользователь предпримет какие-то нестандартные действия.
Разработка кода - это командная работа, поэтому стандартизация очень важна, поскольку она позволяет новому человеку быстро понять, что есть что, и сводит к минимуму количество ошибок. Понимание структуры типичного приложения делает задачу его создания довольно простой. Это, в свою очередь, позволяет обсудить принципы правильной реализации и отличить хороший код от плохого. Разработчик среднего уровня наверняка знаком со стандартными шаблонами и решениями при создании приложений в своей области. Они не только знакомы с определенными решениями, но и искренне понимают, зачем они нужны, и знают, когда и как применять их для достижения наилучшего эффекта.
Разработчик среднего уровня знает, как эффективно и результативно взаимодействовать с другими членами команды. И особенно это касается тех ситуаций, когда сложно достичь консенсуса. Например, это актуально при обсуждении более субъективных элементов дизайна, при разъяснении требований, которые по своей сути являются неполными, когда существует какая-то серьезная нехватка времени или при обсуждении серьезных изменений в способах работы.
Как провести собеседование с разработчиками среднего звена Ситуационные вопросы
Приведите примеры ситуаций, когда вы:
- Были готовы взять на себя задачи, которые никто не знает (или не хочет знать), как исправить
- Смогли найти баланс между сложностью и производительностью при решении сложной технической задачи.
- Сыграли важную роль в создании анализа требований
- Участвовали в тестировании ПО
- Сыграли важную роль в создании документации
- Проявили инициативу в решении проблем и исправлении критических ошибок
- Пришлось работать над несколькими проектами одновременно
Основные требования к Senior Developer
Старший разработчик видел много кода, сделал множество ошибок и сделал правильные выводы из всего процесса. Все разработчики постоянно задают вопросы. Разница в том, что по сравнению с типами разработчиков с меньшим опытом, старшие разработчики знают, как задавать правильные вопросы на правильном уровне абстракции. Основная ответственность старшего разработчика всегда заключается в принятии правильных решений.(с имеющейся информацией в данный момент), решения, которые создают максимальную выгоду для бизнеса и минимизируют затраты. Хороший старший разработчик всегда ищет способы получить больше пользы, но также осознает, что необходимо максимально эффективно использовать ресурсы, такие как время и деньги. Хороший руководитель всегда думает о конечной цели, поэтому часто может решить проблемы еще до того, как они появятся. Например, они заранее думают об узких местах системы, запоминают уязвимости и проблемы, вызванные неправильным использованием инструментов. Код, написанный старшим разработчиком, будет сделан с учетом удобства обслуживания и масштабируемости.
Качества старшего разработчика Хороший старший разработчик должен:
- Уметь решать несколько сложных задач (и быстрее), чем разработчик среднего уровня
- Уметь отличать «достаточно хороший» продукт от «слишком хорошего» или «недостаточно хорошего».
- Знает, как проявляется технический долг. Сколько стоит рефакторинг в реальном выражении, какие шаблоны действительно нужны и когда проводить черту, когда дело касается уровней абстракции
- Обладают выдающимися коммуникативными навыками, потому что они должны не только говорить другим, что такое «правильное решение», но и убеждать своего клиента и команду согласиться с ними. Авторитарный подход («делай, как я говорю») часто приводит к большему количеству конфликтов, что означает отсутствие прогресса в улучшении общей ситуации.
- Умеют объяснить и обосновать любое важное решение таким образом, чтобы его могли понять все заинтересованные стороны. Таким образом, у самой команды есть шанс извлечь уроки из своего опыта и, таким образом, развиваться быстрее, избегая при этом большинства болевых точек.
Есть много важных различий между младшими, средними и старшими разработчиками. При приеме на работу любого программиста важно учитывать весь набор навыков, которыми обладает каждый ит специалист. Многие люди обращают внимание на многолетний опыт, что важно, но вам также необходимо нанимать людей на ту работу, на которую они способны, а не на то, что они делали в прошлом. Поэтому, если вы встретите разработчика, который подает большие надежды, было бы неплохо взять его на себя и позволить ему расти профессионально.