Шлях програміста
1. Кар’єрні щаблі
Програмісти теж мають рівні залежно від кваліфікації. Колись уживали такі поняття, як «кодер», «програміст» і «хакер», а нині всі користуються англомовними назвами, що прийшли з американського ІТ-середовища.
У розробників є шість основних рівнів:
- Intern Software Engineer
- Junior Software Engineer
- Middle Software Engineer
- Senior Software Engineer
- TechLead
- Principal Software Engineer
Від країни до країни, а подекуди й від компанії до компанії, окремі параметри можуть різнитися. Але загалом суть така:
🌱 Intern Software Engineer — це стажери. Вони вивчають програмування, не мають ані комерційного досвіду, ані досвіду участі у великих проєктах. Зазвичай працюють під наглядом більш досвідчених колег. На роботі їхнє головне завдання — вивчати кодову базу та основи розроблення ПЗ, виконуючи прості завдання з розроблення й беручи участь у тестуванні.
🐣 Junior Software Engineer — це вже програмісти, але без серйозного комерційного досвіду або з досвідом менш як рік. Працюють під керівництвом досвідченіших розробників, реалізують окремі частини проєктів і беруть участь у циклах код-ревʼю. Цей етап кар’єри зосереджений на поглибленні технічних навичок і розумінні завдань проєкту.
🦾 Middle Software Engineer (або просто Software Engineer): мають більше самостійності в ухваленні технічних рішень, відповідають за важливі ділянки проєкту, починають наставляти менш досвідчених колег і активніше беруть участь в обговоренні архітектури. Зазвичай мають 2–5 років практичного досвіду.
🧑🔬 Senior Software Engineer: відповідають за проєктування й реалізацію складних систем, беруть на себе наставництво й лідерство в команді, беруть участь у стратегічному плануванні проєктів і часто представляють команду у спілкуванні з клієнтами та іншими зацікавленими сторонами. Зазвичай мають 5–10 років досвіду.
🧠 TechLead: відповідає за кінцевий технічний результат проєкту, керує розробленням, розв’язує найскладніші завдання, забезпечує дотримання технічних стандартів і координує роботу розробників.
🏆 Principal Software Engineer: працює на найвищому технічному рівні, часто бере участь у формуванні технічної стратегії компанії, розробленні інноваційних рішень та встановленні технічних стандартів, слугує головним наставником для технічних лідерів і є ключовим експертом у складних технічних питаннях.
Це цікаво. У великих компаніях можуть бути додаткові ролі та підролі. Наприклад, у Google є такі ролі:
- Staff Software Engineer (L6): має значний вплив на технічну політику свого відділу.
- Senior Staff Software Engineer (L7): працює над масштабними й складними проєктами, визначає стратегічний напрям технологічного розвитку в компанії.
2. LEGO-продукти
Колись давно, у 1975 році, Ніклаус Вірт, творець мови Pascal, написав книжку «Алгоритми + структури даних = програми». Відтоді багато що змінилося. Сучасний програмний продукт — уже не те, чим був 10 років тому, і тим більше не те, чим був 20 років тому. А про 1975 рік і говорити нічого: відтоді минуло 50 років ⏳
Сучасний програміст уже не пише програми з нуля. Він радше збирає їх із готових частин — бібліотек — і пише код, який допомагає цим частинам взаємодіяти 🧩. Сучасні програмні продукти можуть складатися з десятків і сотень програм. Деякі з них запускаються на комп’ютері користувача та на його мобільних пристроях, а більша частина — на серверах у дата-центрі.
Багато з цих програм, таких як вебсервер або база даних, уже написані. Їх потрібно лише правильно налаштувати, щоб вони працювали як слід. А згодом процес налаштування може стати настільки складним, що фактично перетворюється на розроблення. 🤦♂️
Програмісти постійно борються зі спокусою щоразу писати схожий код заново. Замість цього вони створюють бібліотеки, які можна налаштувати під свої потреби, а потім просто підключають їх у всі потрібні місця.
За останні 20 років програмісти написали дуже багато бібліотек, фреймворків і відкритих репозиторіїв. Їх справді мільйони. І тепер писати весь код з нуля вважається поганим тоном. Натомість потрібно зібрати програму з якісних і перевірених рішень — бібліотек, фреймворків, пакетів і модулів 🧱
Але й такий підхід уже застаріває. Останні 10 років усе крутиться навколо переходу в хмару: великі дата-центри надають вашим програмам усе необхідне. Хочете базу даних? Є сотні варіантів на вибір. Потрібен рідкісний унікальний вебсервер — і таке є! Будь-який каприз — за ваші гроші.
3. «Я — інженер» © Ілон Маск
Вам більше не потрібно самостійно писати складні й нудні речі. Якщо вам потрібна певна функціональність, для цього вже є готові бібліотеки та фреймворки. Ваше завдання: а) знати про їхнє існування, б) знайти відповідний варіант (аналогів часто буває кілька, із різною якістю та нюансами), в) зрозуміти, як інтегрувати його у свій проєкт 🎓
Робота від цього стала лише цікавішою. Тепер ви можете в 10 разів швидше додавати нову функціональність до продукту. 30 років тому, якщо вам був потрібен вебсервер, ви писали його з нуля. 20 років тому — купували, встановлювали й налаштовували. А зараз — просто заходите в хмарний портал Azure або AWS і вмикаєте потрібний сервіс 🌐
Це, до речі, одна з причин популярності мови Go. Вона чудово підходить для розробки високонавантажених backend-ів, microservices та хмарної інфраструктури — простий синтаксис, вбудована конкурентність через goroutines та швидка компіляція роблять її одним із головних інструментів сучасного backend-розробника. Невипадково на Go написані Docker, Kubernetes та Terraform.
Відповідно, і професія Go Software Engineer з часом охоплює дедалі ширший stack. Сучасному розробнику важливо розуміти, як працює база даних (PostgreSQL, MySQL/MariaDB, MongoDB тощо), щоб грамотно вибудовувати взаємодію. Потрібно розуміти базові принципи роботи frontend (HTML, CSS, JavaScript/TypeScript, React, Angular). І, звичайно, без Docker зараз нікуди — це вже стандарт галузі 🐳.
Сучасна розробка загалом дуже відрізняється від того, що було 20 років тому. Програміст витрачає на код не більше 50% часу — решту забирають читання документації, вивчення нових технологій, проєктування та робота в команді на мітингах. Програмісти-одинаки — це вже радше рідкісний виняток.
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ