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