Я встречал разработчиков с десятью годами опыта, которые до сих пор мыслят как джуны, и ребят с двумя годами, которые уже думают как сеньоры. Поэтому после десяти лет в профессии моё честное мнение о разнице между senior и junior такое: дело почти не в том, сколько лет ты пишешь код. Дело в вопросе, который ты задаёшь до того, как напишешь хоть строчку.
Два вопроса
Вопрос джуна: «Как мне это закодить?»
Вопрос сеньора: «А вообще стоит ли это делать?»
Только не подумайте, что я тут идеализирую сеньоров, — я сам годами задавал не тот вопрос. Любая задача выглядела как задача «написать код», поэтому решением всегда был... ещё код. Новая фича? Пишем. Странный кейс? Обрабатываем. Кто-то на стендапе упомянул модный фреймворк? Отличный повод переписать то, что и так работало. Мне казалось, это и есть инженерия. На деле — имитация бурной деятельности.
Мышление сеньора включается на шаг раньше, ещё до первой строчки. В чём реальная проблема? Какое самое простое решение её закрывает? Что сломается, когда это будет вызываться тысячу раз в секунду, а не один раз? Джуны решают задачи про код. Сеньоры решают задачи бизнеса, в которых просто участвует код.
История «две недели против двух часов»
Вот момент, когда до меня дошло. Дошло так, что помню до сих пор.
Прилетает запрос: пользователям нужен экспорт данных. Я-из-прошлого — честно — потратил бы на это две недели. Нормальная система экспорта. Кастомные форматы. Очередь для фоновой обработки. Прогресс-бары. Логика ретраев. Целый собор. И ещё бы гордился результатом.
Сеньор из команды вместо этого задала один вопрос: «А в каком формате им реально надо?»
Ответ — Excel. Всё. Люди просто хотели открыть данные в Excel.
Она добавила кнопку «Скачать CSV». Два часа. Тот же результат — и, пожалуй, даже лучше, потому что поддерживать было нечего. Мой прекрасный двухнедельный план тихо уехал в корзину, а я сидел и чувствовал себя немного глупо.
В этом вся суть. Тот же результат, в десять раз проще, и разница была не в скорости печати. Разница — в одном вопросе, заданном в нужный момент.
И так каждый раз
Стоит увидеть этот паттерн — и замечаешь его повсюду.
- Джун неделю пишет свою систему мониторинга. Сеньор спрашивает: «Ты проверил, может, Azure Monitor это уже умеет?» — и да, умеет, из коробки.
- Джун сообщает: «Билд упал». Сеньор сообщает: «Билд упал из-за X, вот фикс, а вот как сделать, чтобы это не повторялось».
- Джун хочет добавить ещё один сервис. Сеньор хочет сначала понять, почему тормозит предыдущий, а не прятать проблему за вторым.
Те же ошибки, те же тикеты — совершенно разная реакция. Ты становишься сеньором в тот момент, когда перестаёшь закрывать тикеты и начинаешь чинить системы, которые эти тикеты плодят.
Как этот сдвиг реально происходит
Никакого щелчка тумблера не будет. Но если сжать до вещей, которые можно начать практиковать хоть завтра:
- Спрашивай «зачем» перед «как». Прежде чем проектировать решение, убедись, что понял проблему. В половине случаев то, о чём просят, — не то, что людям на самом деле нужно.
- Выбирай простое, а не умное. Умный код — это тот код, который ты будешь дебажить в полусне в воскресенье. Чинить его почти всегда придётся тебе же через полгода, без единого воспоминания, зачем ты так написал. Пиши для этого человека.
- Проверяй, что уже есть. Твой клауд-провайдер, твой фреймворк, стандартная библиотека — скорее всего, это уже кто-то решил. Лучший код — тот, который ты не написал.
- Оптимизируй под команду, а не под «красиво выглядеть на ревью». Изящный однострочник не запомнит никто. А вот падение прода из-за него — все.
Так кто же ты?
Всё это — не про строчки в резюме. Это про то, какой вопрос вылетает у тебя первым, когда на стол падает задача: «как» или «зачем».
Я до сих пор ловлю себя на том, что тянусь к «двухнедельной» версии. Разница в том, что теперь я слышу в голове тот самый вопрос сеньора ещё до того, как открою редактор: а что им реально надо? И ответ обычно меньше, проще и уже лежит в стандартной библиотеке.
Если ты в начале пути — тебе не нужны ещё десять лет. Тебе нужно начать задавать второй вопрос уже сегодня. А если ты в профессии давно, но всё ещё задаёшь только первый, — вот честный разрыв, который стоит закрыть.
Какой вопрос ты задаёшь первым?