— Взвооод! Рівняйсь! Відставити! Рівняйсь! Струнко! Відкрити зошити, конспектувати!

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

Отже, вводимо новий термін.

Джуніориті — сукупність властивостей, притаманних підліткам.

Розкрити це визначення мені хотілося б через низку прикладів.

Джуніориті — це обмірковувати й пропонувати мінімум два варіанти розвʼязання тієї чи іншої проблеми.

Будь-який програміст стикається зі складними задачами, які не вдається розвʼязати з першого разу. Від досвідченого програміста очікується, що він розвʼяже їх самостійно. Очікувати того самого від підлітка не варто, бо бракує досвіду. Проте відсутність досвіду не є тією причиною, з якої можна відкласти розвʼязання задачі. Грамотний підліток на кожну проблему чи задачу має придумати (згенерувати, нагуглити, підслухати, підглянути, списати) щонайменше два варіанти розвʼязання, щоб обговорити їх із наставником. А ще краще три варіанти або навіть пʼять. Такий підхід стимулює мозок підлітка самостійно розвʼязувати свої проблеми.

Джуніориті — це прочитати всі книжки й памʼятати, яка задача в якій книжці розвʼязана. Посилатися на книжки під час роботи. Тримати книжки під рукою.

Тут усе дуже просто. Програміст-початківець має розуміти й говорити мовою, якою ведеться діалог між інженерами. Коли наставник сказав: «Introduce explaining variable», то в підлітка має клацнути в голові: «Так, щось таке було у Фаулера в книжці про рефакторинг». Після цього книжку потрібно відкрити, знайти розділ, прочитати й провести потрібний рефакторинг. Для початку підлітку слід прочитати ось ці книжки:

  1. Еріх Гамма, Р. Гелм, Р. Джонсон, Дж. Влісс. «Прийоми обʼєктно-орієнтованого проєктування. Патерни проєктування».
  2. Мартін Фаулер. «Рефакторинг. Поліпшення наявного коду».
  3. Ерік Еванс. «Предметно-орієнтоване проєктування (DDD). Структуризація складних програмних систем».
  4. Джефф Раскін. «Про інтерфейс».

Джуніориті — це вести документацію проєкту, протоколи нарад.

З документацією проєкту — все зрозуміло. Просто треба брати й писати її прямо в коді за допомогою спеціальних коментарів. З протоколами все трохи складніше. Більшість нарад у підлітка — це сам на сам зі своїм наставником. Найбільша помилка — це не записати якусь важливу думку наставника. Тому після будь-якої наради потрібно сісти й усе законспектувати.

Джуніориті — це писати тести.

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

Джуніориті — робити код-ревʼю колегам, а також вивчати їхні ревʼю.

Зазвичай у будь-якій компанії внесок колег завжди на видноті — Git у всіх виглядає однаково. Підліток має переглядати код своїх колег, залишати зауваження, а також дивитися, які зауваження вони залишають іншим програмістам. Учитися можна на своїх помилках, а також на чужих.

Джуніориті — це вести Jira. Регулярно звітувати й комітитися.

Активність у Jira, звіти імейлом, коміти в репозиторії — це все «пульс» підлітка, за яким наставники визначають, живий він чи мертвий. Нікому не потрібен «мертвий» співробітник, який боїться вчасно попросити допомоги, щоб розвʼязати поточні проблеми й рухатися далі.

Список властивостей можна продовжувати далі. Сама ідея дуже проста — можеш відповідати цим вимогам тривалий період часу — ти джуніор, не можеш — значить, ти хер з гори й бабуся.

Давайте запишемо кілька похідних термінів:

Прокачати джуніориті — послідовно й регулярно практикувати поради, дані вище.

Гнати підліткову херню — ігнорувати поради, дані вище або наставником.

Ви спитаєте: а як же сеньйори? А сеньйорів не існує. Програміст або розвʼязує поставлену перед ним задачу, або не розвʼязує. Логіка тут бінарна.