Разделение на сеньор- и джуниор-разработчиков основывается на уровне их компетенций и навыках командно-управленческой работы. Мартин Фаулер, американский программист и автор ряда книг об архитектуре ПО когда-то очень удачно сформулировал главное различие между джуниорами и сеньор-разработчиками: «Любой дурак может написать код, понятный компьютеру. Хороший программист пишет код, понятный человеку».
Почему сеньор, а не джуниор
Одно из главных преимуществ сеньор разработчика – умение копнуть вглубь, применить теоретические знания на практике и расширить их здесь и сейчас, если этого требует задача. Опытный специалист ясно понимает принципы работы аппаратных и программных систем, разбирается в деталях и отдельных блоках проекта. Он знает, как будет работать и развиваться приложение после релиза, заранее планирует масштабируемость и модернизацию. В решении задач умеет плыть не только по течению, но и по диагонали, вглубь и даже вверх. Если нужно. Вообще, сеньоров отличает вариабельность инструментов разработки и широта выбора технологий. Компетенции и опыт позволяют видеть больше и находить лучшие решения там, где на поверхности шаблонные и типовые.
Вторая отличительная черта сеньора – широкий кругозор. Опытный разработчик разбирается в смежных областях и понимает, как каждое его решение повлияет на функциональность продукта в целом и в разных ситуациях. К примеру, хороший фронтенд-разработчик понимает дизайн-систему, может различать хорошие и плохие API-запросы к серверам.
Какие задачи решают сеньоры
Задачи сеньор разработчика выходят далеко за пределы программирования и тесно связаны с работой команды. Нельзя сказать, что один senior определяет качество готового приложения. Нет, но если создать условия для продуктивной работы сеньора и эффективной работы команды, приложение получится более гармоничным, а поддержка – более дешевой. В рамках командной работы под проектом опытный специалист может и должен:
- инициировать обсуждения проекта и вести его в нужном русле;
- составлять проектную документацию, получать по ней обратную связь и строго придерживаться дедлайнов;
- контролировать работу младших специалистов, помогать им и направлять, быть готовым поддержать и дать технический совет;
- объяснять сложные вещи простым языком, например, менеджеру, который далек от понимания технических терминов и программных систем;
- объяснять техническую составляющую проекта клиенту;
- убеждать других, чем именно это решение проблемы выгодно отличается от других вариантов;
- уметь делегировать часть задач другим техническим специалистам, соответственно уровню и опыту каждого;
- понятно и интересно рассказывать о ходе выполнения проекта всем заинтересованным лицам;
- отходить от шаблонных разработок и при создании продукта вносить в него дополнительную ценность;
- давать аргументированную обратную связь по замечаниям к проекту.
Почему выгодно работать с senior разработчиками
Нас часто спрашивают, почему мы работаем с сеньорами, ведь это дороже. Согласны, проще и дешевле обратиться к мидлу, а тем более к junior-программистам, но… С сеньорами приложениям обходятся нашим клиентам дешевле. Вот такой парадокс. Хотя почему парадокс. Все логично:
- Работа сеньора получается дешевле. Продуктивность джуниоров традиционно ниже. Там, где над задачей будет работать сразу несколько новичков, справится один сеньор. И зачастую быстрее, чем команда джуниоров. В сумме за их человекочасы придётся отдать больше, чем за работу опытного разработчика.
- Качество, чистота кода у сеньора выше. С точки зрения денег это, как минимум, меньше трат на тестирование, меньше времени на устранение багов, ниже расходы на поддержку и запуск следующего релиза с исправлением ошибок.
- Приложение, сделанное сеньором, возьмет на поддержку любая команда. Но никто не хочет брать плохой код и мучиться с костыльными решениями за те же деньги, что и поддержка хорошо закомментированного, чистого проекта. Передать приложение, написанное джуниором, на поддержку – та еще задача.
- Senior на проекте – это приложение без костылей. Нестандартный функционал продукта можно сработать как костыль или найти изящное решение, которое не снизит скорость и не ухудшит функциональность приложения. Изящное решение – это как раз про сеньора.
Джуниорам на проекте не место? Ни в коем случае! Сеньоры получаются из джуниоров и никак иначе.
Вот почему мы учим junior-разработчиков на многочисленных внутренних проектах, вводим их в большие команды с middle и senior-специалистами, даем отрабатывать навыки и пробовать нестандартные решения на тестовых задачах. А над клиентскими приложениям трудятся сеньоры. Потому что мы знаем цену деньгам, а больше денег ценим свою репутацию.