Я зустрічав розробників із десятьма роками досвіду, які досі мислять як джуни, і хлопців із двома роками, які вже думають як сеньйори. Тому після десяти років у професії моя чесна думка про різницю між senior і junior така: справа майже не в тому, скільки років ти пишеш код. Справа в питанні, яке ти ставиш до того, як напишеш бодай рядок.

Два питання

Питання джуна: «Як мені це закодити?»

Питання сеньйора: «А чи взагалі варто це робити?»

Тільки не подумайте, що я тут ідеалізую сеньйорів, — я сам роками ставив не те питання. Будь-яка задача виглядала як задача «написати код», тому рішенням завжди був... ще код. Нова фіча? Пишемо. Дивний кейс? Обробляємо. Хтось на стендапі згадав модний фреймворк? Чудовий привід переписати те, що й так працювало. Мені здавалося, що це і є інженерія. Насправді — імітація бурхливої діяльності.

Мислення сеньйора вмикається на крок раніше, ще до першого рядка. У чому реальна проблема? Яке найпростіше рішення її закриває? Що зламається, коли це викликатиметься тисячу разів на секунду, а не один раз? Джуни розв'язують задачі про код. Сеньйори розв'язують задачі бізнесу, у яких просто бере участь код.

Історія «два тижні проти двох годин»

Ось момент, коли до мене дійшло. Дійшло так, що пам'ятаю досі.

Прилітає запит: користувачам потрібен експорт даних. Я-з-минулого — чесно — витратив би на це два тижні. Повноцінна система експорту. Кастомні формати. Черга для фонової обробки. Прогрес-бари. Логіка ретраїв. Цілий собор. І ще б пишався результатом.

Сеньйорка з команди натомість поставила одне питання: «А в якому форматі їм реально треба?»

Відповідь — Excel. Усе. Люди просто хотіли відкрити дані в Excel.

Вона додала кнопку «Завантажити CSV». Дві години. Той самий результат — і, мабуть, навіть кращий, бо підтримувати не було чого. Мій прекрасний двотижневий план тихо поїхав у кошик, а я сидів і почувався трохи по-дурному.

У цьому вся суть. Той самий результат, у десять разів простіше, і різниця була не у швидкості друку. Різниця — в одному питанні, поставленому в потрібний момент.

І так щоразу

Варто побачити цей патерн — і помічаєш його всюди.

  • Джун тиждень пише власну систему моніторингу. Сеньйор питає: «Ти перевірив, може, Azure Monitor це вже вміє?» — і так, вміє, з коробки.
  • Джун повідомляє: «Білд впав». Сеньйор повідомляє: «Білд впав через X, ось фікс, а ось як зробити, щоб це не повторювалося».
  • Джун хоче додати ще один сервіс. Сеньйор хоче спершу зрозуміти, чому гальмує попередній, а не ховати проблему за другим.

Ті самі помилки, ті самі тікети — абсолютно різна реакція. Ти стаєш сеньйором тієї миті, коли перестаєш закривати тікети і починаєш лагодити системи, які ці тікети плодять.

Як цей зсув реально відбувається

Жодного клацання тумблера не буде. Але якщо стиснути до речей, які можна почати практикувати хоч завтра:

  • Питай «навіщо» перед «як». Перш ніж проєктувати рішення, переконайся, що зрозумів проблему. У половині випадків те, про що просять, — не те, що людям насправді потрібно.
  • Обирай просте, а не розумне. Розумний код — це той код, який ти дебажитимеш напівсонний у неділю. Лагодити його майже завжди доведеться тобі ж за півроку, без жодного спогаду, навіщо ти так написав. Пиши для цієї людини.
  • Перевіряй, що вже є. Твій клауд-провайдер, твій фреймворк, стандартна бібліотека — найпевніше, це вже хтось розв'язав. Найкращий код — той, який ти не написав.
  • Оптимізуй під команду, а не під «гарно виглядати на рев'ю». Витончений однорядковик не запам'ятає ніхто. А ось падіння прода через нього — усі.

То хто ж ти?

Усе це — не про рядки в резюме. Це про те, яке питання вилітає в тебе першим, коли на стіл падає задача: «як» чи «навіщо».

Я досі ловлю себе на тому, що тягнуся до «двотижневої» версії. Різниця в тому, що тепер я чую в голові те саме питання сеньйора ще до того, як відкрию редактор: а що їм реально треба? І відповідь зазвичай менша, простіша і вже лежить у стандартній бібліотеці.

Якщо ти на початку шляху — тобі не потрібні ще десять років. Тобі треба почати ставити друге питання вже сьогодні. А якщо ти в професії давно, але все ще ставиш лише перше, — ось чесний розрив, який варто закрити.

Яке питання ти ставиш першим?