JavaRush /Курси /Go SELF /Шлях програміста

Шлях програміста

Go SELF
Рівень 7 , Лекція 6
Відкрита

Шлях програміста

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% часу — решту забирають читання документації, вивчення нових технологій, проєктування та робота в команді на мітингах. Програмісти-одинаки — це вже радше рідкісний виняток.

Коментарі
ЩОБ ПОДИВИТИСЯ ВСІ КОМЕНТАРІ АБО ЗАЛИШИТИ КОМЕНТАР,
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ