Чим відрізняється Junior, Middle та Senior розробник?

Рівні програмістів не мають жодного відношення до віку програміста. Можна і в 60 бути джуном, і в 22 мідлом. Все змішалося і ваш молодший розробник може бути старшим за віком ніж старший (за посадою) розробник у команді.
Однак питання не таке просте, як здається, адже крім навичок кодування, є ще щось, що відрізняє рівні програмістів. У чому саме відмінності?
Знання
Очевидно, що старший (за статусом) розробник має набагато більші знання, ніж розробник молодшого та середнього рівня. Знання шаблонів проектування, архітектури, автоматизації тестування, продуктивності, безпеки тощо - гарна можливість для молодшого розробника скоротити розрив у знаннях із середнім та старшим розробниками.
Важливо знати, як розробляти програмне забезпечення. Але просто знання всього цього не робить вас старшим розробником. Знання – це не найбільша різниця між розробниками, це лише один із факторів.
Кодінг
Незважаючи на те, що думає більшість людей, кодування – це не спілкування з комп'ютером. Кодування – це спілкування з людьми та створення інструкцій для комп'ютера. Зрештою, код компілюється і переводиться в нулі та одиниці. Код повинен мати сенс для інших розробників, які будуть працювати з цим кодом у майбутньому. Нова команда, яка ніколи не бачила код раніше, повинна мати можливість відкрити код та почати працювати над новими функціями чи виправленнями помилок. Тут велика різниця між молодшими та старшими розробниками.
Давайте відпустимо мідлів – вони вже пройшли шлях помилок, а як використовують ці знання – вже їхня справа. А щодо джунів? Молодші розробники недосвідчені. Дехто щойно закінчив і починає свою першу роботу на повну ставку. Мислення початківця розробника часто полягає в тому, щоб змусити код працювати. Працююче ПЗ і якісне ПЗ джуни вважають однаковими.
Відмінністю джуна є «вміння» писати код складно. Вони пишуть химерний код, ускладнюючи будь-яку просту дію. Junior намагається створити унікальне рішення для суми двох чисел із класами та абстракціями. Намагаються домислити завдання зробити його мега універсальним і показати іншим – що вони вміють писати код. Також, особливістю джунів, є використання найновіших функцій на шкоду логікі та сумістності.
Тобто джуни зосереджені на коді і не звертають увагу на людську складову розробки.
А як щодо старшого розробника?
Дивлячись на код старшого розробника, ви можете подумати: це все, що є? Де решта коду? Старший розробник пише простий, зрозумілий і, можливо, навіть тупий код. Це одна з найкращіх якостей, яку може мати розробник, коли доходить до програмування. Старший розробник дотримується принципу KISS: пиши максимально просто.
Старший розробник думає про свій код інакше, ніж молодший розробник. Код, написаний старшим розробником, буде створено з урахуванням зручності обслуговування та масштабованості. Це зовсім інше мислення, ніж у молодшого розробника: старший думає про людей, які повинні працювати з кодом, а молодший просто думає про те, як змусити код працювати на комп'ютері.
Більше, ніж просто навички кодування
Окрім навичок кодування є інші фактори, які можуть сказати вам рівень розробника. Молодші розробники зазвичай виконують найпростіші завдання або завдання з низьким рівнем впливу. Вони не займаються дизайном архітектури. Розробники середнього рівня також не розробляють рішення, вони просто виконують завдання.
Різниця з молодшим розробником полягає в тому, що вони виконують ці завдання з меншим контролем, якщо вони призначені щодо рутинних завдань. Старші розробники можуть розробити програму повністю самостійно. Це не означає, що старший розробник не має питань з розробки. У кожного розробника багато питань кожен день, і це ніколи не зміниться.
Різниця в тому, що старші розробники знають, як ставити правильні питання і як з ними працювати. Розробники середнього рівня можуть ставити правильні питання, коли йдеться про їх щодо рутинних завдань, але їм потрібна допомога по складнішим завданням.
Старший розробник ніколи не губиться і знає, як відповісти на запитання правильними діями. Це не означає, що старший розробник неспроможна попросити допомоги в інших розробників. Іноді найкраще звернутися за допомогою до інших розробникам, які мають досвід у цій галузі. Розробник середнього рівня також повинен вміти ставити правильні питання, якщо він не отримує тасків із дуже складними завданнями, які потребують глибокого рівня знань. Ви не повинні очікувати, що молодший розробник одразу поставить правильні питання. Оскільки молодші розробники недосвідчені, їм потрібне керівництво від досвідченішого розробника. Молодший розробник має бути забезпечений необхідними ресурсами або великим стусаном у правильному напрямку.
Перехід на наступний рівень
Ми всі хочемо розвиватись. Але які кроки ви можете зробити, щоб перейти на наступний рівень?
Молодший до середнього рівня
Оскільки молодші розробники недосвідчені, важливо пройти весь цикл розробки хоча б кілька разів. Таким чином, ви зробите багато помилок і навчитеся уникати їх наступного разу. Коли доходить до кодування, ви повинні навчитися писати простий код. Подумайте про наступну людину, яка буде працювати над цим фрагментом коду. Ви також повинні навчитися дебагінгу, тому що це допоможе вам краще зрозуміти, що відбувається у процесі.
Крім того, ви повинні ознайомитися з кращими практиками та дізнатися про архітектуру, продуктивність, безпеку тощо. д. Закрийте пробіл у знаннях, необхідний для переходу на середній рівень.Мідл рівень до старшого
Перехід від середнього до старшого може бути досить складним. Деякі розробники залишаться на середньому рівні протягом усієї своєї кар'єри. Сеньйори знають, які кути можна обрізати і які кути ніколи не слід обрізати. Це засвоєні уроки, зроблені у минулому на помилках. Якщо ви хочете здобути вищу освіту, ви повинні бути готові до виконання завдань, які ніхто не знає, як виконувати. Ви повинні знати більше, ніж просто, як виконувати роботу. Як старший розробник, ви також повинні допомагати менш досвідченим розробникам. Ви - запасний варіант для інших розробників, коли вони не знають, як зробити функцію.
І вас може не здивувати, що старші розробники оволодівають своїм технологічним стеком. Це більше, ніж просто навички кодування. Ознайомтеся з усіма інструментами та програмами, які використовуються в компанії, в якій ви працюєте.
Висновок
Різниця між молодшим, мідлом і старшим розробником полягає не в багаторічному досвіді. Звичайно, можна з упевненістю сказати, що старші розробники більш досвідчені, ніж молодші та мідл розробники. Але знання не найважливіший чинник. Сеньйори пишуть простіший код і приходять з іншим мисленням, ніж молодші розробники. Але це більше, ніж просто навички кодування. Знання того, які питання ставити і як працювати з отриманою інформацією, дуже важливе. І це те, що тільки старший розробник з його багатим досвідом знає, як робити у всіх ситуаціях.
Щоб вирости як розробник-початківець, ви повинні зосередитися на написанні простого коду і проходженні декількох циклів розробки. Щоб перейти від середнього рівня до старшого розробника, ви повинні зосередитись на навчанні, а не тільки на вирішенні рутинних завдань.
Ви повинні бути готові взяти на себе найскладніші завдання та стати господарем свого технічного стеку. Інший обов'язок старшого розробника - бути запасним варіантом менш досвідчених розробників. Я залишу вам цитату Мартіна Фаулера: «Будь-який дурень може написати код, зрозумілий комп'ютеру. Хороші програмісти пишуть код, зрозумілий людям»..