День 2585. #Карьера
Коллега Сказал Мне, что Мой Код «Уровня Джуна». Окончание
Начало
Три шаблона, которые изменили всё
Коллега не просто критиковал мой код. В последующем разговоре он перестроил мою ментальную модель, внушив мне три идеи, которые я теперь постоянно использую.
1. Разделяйте «что» и «как»
Мои функции делали слишком много, потому что я мыслил задачами, а не обязанностями. Теперь я спрашиваю себя: «Что заставит меня переписать это?» Если для функции есть несколько вариантов ответа, я разделяю её. Код становится длиннее, но его гораздо проще изменить.
2. Пишите код для того, кто отлаживает его в 2 часа ночи
Этот человек может оказаться вами через полгода, когда контекст полностью забудется. Правило простое. Если для понимания требуется удерживать в голове более 3 вещей одновременно, проводите рефакторинг, пока это не перестанет быть необходимым.
3. Изначально проектируйте с учётом возможных ошибок
Большинство из нас проектируют оптимальный сценарий, а обработку ошибок добавляют потом. Делайте наоборот. Начните с перечисления всех возможных способов поломки. Постройте сценарий успешного выполнения как один из многих вариантов. Этот единственный сдвиг мышления полностью изменил мои представления о надёжности.
Нюанс, который я чуть не упустил
Вот что вызывает дискомфорт. Подача коллеги не была идеальной. 47 комментариев, кульминацией чего стало «код уровня джуна», — это обидно. Во многих командах это воспринимается слишком резко. Но информация была точной.
В этом и проблема. Обратная связь может быть слишком резкой и одновременно совершенно правильной. Подача информации может стоить обсуждения с вашим руководителем. Содержание же при этом может быть невероятно полезным.
Теперь я научился разделять эти вещи. Реагировать на тон потом. Сначала воспринимать сигнал. Не каждому достанется такой коллега, который готов всё объяснить. Некоторые строгие рецензенты просто грубы. Никаких уроков, только резкость. Нужно научиться различать.
Что на самом деле изменилось
Три месяца спустя. PR аналогичного размера. Тот же рецензент. 4 комментария. Три были придирками. Один - действительно ценным замечанием. Разница была не в том, что я работал усерднее, а в том, что я стал по-другому смотреть на код.
Прежде чем что-либо отправить, я задаю себе три вопроса:
- Если требования изменятся, какие функции сломаются первыми?
- Что запутает другого разработчика, который будет читать это во время инцидента в 2 часа ночи?
- Важны ли для меня пути ошибок так же, как и пути успешного выполнения?
Эти вопросы больше меня не замедляют. Это просто мой нынешний образ мышления.
Возвращаясь к тому случаю
Я до сих пор помню жар на лице. Обида ещё не полностью утихла. Может быть, и не должна. Но вот что я теперь знаю. Этот дискомфорт был ощущением, будто мой потолок поднимается. Через боль, но поднимается.
Код, который я пишу сегодня, был бы неузнаваем для человека, отправившего этот PR. Не потому, что я стал умнее. А потому, что кто-то указал на то, чего я сам не видел. Если вы сейчас получаете болезненный отзыв, задайте себе один вопрос: указывает ли этот человек на что-то реальное, даже если он делает это грубо?
Иногда ответ — нет. Игнорируйте такой отзыв. Но иногда ответ — да. И вот тогда начинается настоящая работа.
Источник: https://medium.com/beyond-localhost/a-google-staff-engineer-told-me-my-code-was-junior-level-he-was-right-69ba2f80b7d3
Post #3106
2.19K
- 👍 19