Умение видеть общую картину – одно из важных качеств разработчика

Перевод статьи «Seeing The Big Picture: One Important Aspect Of Being A Senior Developer».

Умение видеть общую картину

Проводя собеседования, я часто спрашиваю: «Какая в вашей карьере была самая сложная или интересная задача?»

Ответы говорят мне о многом.

Все разработчики рассказывают о своих свершениях. Они использовали Kafka, RabbitMQ и Kubernetes. Делали шардинг, масштабировали и кластеризовали. Они переносили логику из монолитов в микросервисы. Интегрировали APIs. Они применяли все буквы из SOLID (базовые принципы объектно-ориентированного программирования, — прим. перев.). Строили замки и двигали горы.

Но никто не рассказывает, зачем это делалось.

В чем важность причины?

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

Я считаю, что последнее определяется не только сложностью созданных разработчиком систем или написанного кода. Также имеют значение:

  • мышление, ориентированное на пользователя;
  • умение идти на разумные компромиссы и делать рациональный выбор;
  • способность понятно объяснять все это.

Давайте посмотрим, как можно подчеркнуть эти качества, отвечая на вопрос о самых сложных задачах.

Важность причины

Мышление, ориентированное на пользователя

Умение работать с пользователями, на мой взгляд, это один из самых важных (и самых недооцененных) навыков разработчика.

Код никогда не пишется просто ради самого кода (кроме учебных целей или периодов прокрастинации). Вы всегда пишете код, чтобы развернуть его в продакшене и чтобы им могли пользоваться люди.

Этот момент не для всех очевиден сразу, с самого начала карьеры.

Разработчики приходят из университетов, где их учили профессора. Профессора это не пользователи, они смотрят на код и оценивают его. То есть, несколько лет продуктом вашей деятельности является код как таковой.

А пользователи смотрят на конечный продукт.

Если ваш код прекрасен, но не решает проблем пользователя, он бесполезен.

Это непросто понять и принять, но на уровне сеньора подобное понимание уже должно быть.

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

Умение делать рациональный выбор

Вы выбираете технологии, с которыми работаете, по каким-то причинам. Мне всегда любопытно, каковы эти причины. Достойными ответами могут быть следующие:

  • мы использовали эту технологию в похожем проекте и она хорошо нам подошла;
  • у нас в команде были люди, прежде работавшие с этой технологией;
  • мы провели сравнение и выявили, что эта технология подходит нам больше, чем другие, потому что А, Б и В.

А вот такие ответы звучат менее зрело:

  • это самая популярная технология на данный момент;
  • она классная;
  • ее использует компания Х.

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

Умение идти на разумные компромиссы

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

Я хочу услышать, как вы обдумываете принятые когда-то решения и как поясняете причины, которые тогда повлияли на ваш выбор (даже если теперь обстоятельства изменились).

Умение объяснять

Способность понятно объяснять

Разработчику очень часто приходится заниматься объяснениями. Вы будете объяснять один и тот же проект пользователям, бизнес-аналитикам, техническим писателям, QA, менеджерам, новым членам команды.

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

На собеседовании ответ на вопрос о предыдущих проектах является отличной возможностью показать свои навыки в этой сфере.

Умение рассказать историю

В общем, в ответ на свой вопрос я хочу услышать историю.

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

Скажем, я реализовала нашу собственную систему авторизации без использования oAuth.

Свою историю я бы начала с того, зачем мне пришлось это делать и каковы были требования.

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

Таким образом мне бы удалось:

  • рассказать отличную связную историю, легкую для восприятия и понимания;
  • показать, что я участвовала во всех аспектах разработки, как и положено разработчику-сеньору;
  • продемонстрировать, как я применяю свои навыки решения проблем от начала и до конца процесса;
  • дать интервьюеру возможность задать мне вопросы о каждом этапе проекта.

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


[customscript]techrocks_custom_after_post_html[/customscript]
[customscript]techrocks_custom_script[/customscript]

Оставьте комментарий

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

Прокрутить вверх