От новичка до профессионала: ключевые навыки разработчиков программного обеспечения

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

Навыки младших и старших разработчиков

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

Навыки младших разработчиков

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

Конечно, индивидуальные различия также велики: от самоучек, внёсших значительный вклад в проекты с открытым исходным кодом, до стажёров, которые могут не понимать разницы между JavaScript и React. Однако, если быть честными относительно навыков, которые мы ожидаем от младшего разработчика, этот список примерно отражает наши ожидания.

Навыки старших разработчиков

  • Знание языков программирования, используемых в компаниях, и глубокие знания по крайней мере одного из них.
  • Способность быстро освоить новый язык программирования.
  • Опыт работы в команде, над крупными проектами и с устаревшим программным обеспечением.
  • Понимание корпоративных требований.
  • Способность обучать новых сотрудников.
  • Глубокие знания об инструментальной среде.
  • Серьёзные навыки отладки.
  • Способность брать на себя ответственность за важные решения.

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

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

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

Опыт и навыки

Языки и алгоритмы — это всего лишь стартовые условия; они не являются отличительными чертами старшего разработчика. Мы ожидаем, что старший разработчик будет обладать более широкими и глубокими знаниями, но то, что делает его старшим разработчиком, — это всё остальное в списке: командная работа, способность работать над крупными проектами, понимание корпоративных требований, наставничество и многое другое.

Мы можем обобщить это, сказав «опыт», но это не совсем полезно. Что даёт опыт? Опыт начинается с признания того, что программирование не сводится к языкам программирования. Языки программирования необходимы, но старшие разработчики знают, что суть программирования — это решение проблем: понимание проблем и поиск способов их решения структурированными и повторяемыми способами.

Старшие разработчики также признают, что понимание проблем — это не просто разработка алгоритма. Это понимание того, кто хочет решить проблему, почему они хотят её решить, кто платит за решение проблемы, какие части проблемы уже решены, какие существуют различные виды решений, можно ли их масштабировать или расширить — и многое другое.

Профессиональные навыки старших разработчиков выходят за рамки способности быстро осваивать новые языки программирования. Опытные разработчики, по-видимому, обладают способностью смотреть на код с ошибками и говорить: «Это выглядит подозрительно». Потому что они многое видели, они знают, что выглядит правильно, а что нет. Они знают, где вероятны ошибки. Они решили множество проблем и знают, какие решения, скорее всего, сработают, и знают, как тестировать различные подходы.

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

Искусственный интеллект и разработка программного обеспечения

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

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

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

Источник

Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *