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

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

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

1. Карʼєрна драбина

У програмістів також є градації за рівнем кваліфікації. Колись використовували поняття на кшталт «кодер», «програміст» і «хакер», а нині частіше вживають англомовні назви з американського ІТ або їхні українські відповідники.

Для розробника виокремлюють шість основних рівнів:

  • Intern Software Engineer
  • Junior Software Engineer
  • Middle Software Engineer
  • Senior Software Engineer
  • Tech Lead (TechLead)
  • Principal Software Engineer

Від країни до країни, а також від компанії до компанії, деталі можуть різнитися, а загальна логіка приблизно така:

  • 🌱 Intern Software Engineer — це стажери. Вони перебувають у процесі вивчення програмування, не мають ані комерційного досвіду, ані досвіду участі у великих проєктах. Зазвичай працюють під наглядом досвідченіших колег. Головне завдання — опанувати кодову базу й основи розробки програмного забезпечення, виконуючи прості завдання з кодування та беручи участь у тестуванні.
  • 🐣 Junior Software Engineer — це вже програмісти, але без серйозного комерційного досвіду або з досвідом менше року. Працюють під керівництвом досвідченіших розробників, реалізуючи частини проєктів і беручи участь у ревʼю коду. Цей етап карʼєри зосереджений на поглибленні технічних навичок і розумінні проєктних завдань.
  • 🦾 Middle Software Engineer (або просто Software Engineer) — мають більше самостійності в ухваленні технічних рішень, відповідають за значущі ділянки проєкту, починають наставництво над менш досвідченими колегами та активніше беруть участь в обговоренні архітектури. Зазвичай мають 2–5 років практичного досвіду.
  • 🧑‍🔬 Senior Software Engineer — відповідають за проєктування та реалізацію складних систем, забезпечують менторство та лідерство всередині команди, беруть участь у стратегічному плануванні проєктів і часто представляють команду в комунікації з клієнтами та іншими зацікавленими сторонами. Зазвичай мають 5–10 років досвіду.
  • 🧠 Tech Lead — несе відповідальність за кінцевий технічний результат проєкту, керує розробкою, розвʼязує найскладніші завдання, забезпечує дотримання технічних стандартів і координує діяльність розробників.
  • 🏆 Principal Software Engineer — працює на найвищому технічному рівні, часто бере участь у формуванні технічної стратегії компанії, розробці інноваційних рішень і встановленні технічних стандартів; є головним наставником для технічних лідерів і ключовим експертом у складних технічних питаннях.

Це цікаво. У великих компаніях можуть бути додаткові ролі та проміжні рівні. Наприклад, у Google є такі позиції:

  • Staff Software Engineer (L6) — має значний вплив на технічну політику свого відділу.
  • Senior Staff Software Engineer (L7) — працює над масштабними й складними проєктами, визначає стратегічний напрям технологічного розвитку в компанії.

2. Lego‑продукти

Колись давно (у 1975 році) Ніклаус Вірт, творець мови Pascal, написав книгу «Алгоритми + Структури даних = Програми». Відтоді багато що змінилося. Сучасний програмний продукт — це вже не те, чим він був 10 років тому, і вже точно не те, що було 20 років тому. Про 1975 рік і говорити не варто — відтоді минуло понад 50 років ⏳

Сучасний програміст уже не пише програми вручну. Він радше збирає їх із готових частин (бібліотек) і пише код, який допомагає цим частинам взаємодіяти 🧩. Сучасні програмні продукти можуть складатися з десятків і сотень програм. Деякі з них запускаються на компʼютері користувача, його мобільних пристроях, а більша частина — на серверах у дата‑центрі.

Багато з цих програм, такі, як веб‑сервер або база даних, уже написані. Їх потрібно просто правильно налаштувати, щоб вони працювали як слід. Іноді процес налаштування стає настільки складним, що фактично перетворюється на розробку. 🤦‍♂️

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

За останні 20 років було створено дуже багато бібліотек, фреймворків і відкритих репозиторіїв — їх справді мільйони. І тепер писати увесь код з нуля вважається поганим тоном. Натомість варто зібрати програму з якісних і перевірених рішень — бібліотек, фреймворків, пакетів і модулів 🧱

Та й цей підхід поступово застаріває. Тренд останніх 10 років — переїзд у хмари: великі дата‑центри надають вашим програмам усе необхідне. Потрібна база даних? У провайдерів — сотні варіантів на вибір. Потрібен специфічний веб‑сервер — знайдеться й такий. Майже будь‑яку потребу можна задовольнити за гроші.

3. «Я — інженер» © Ілон Маск

img

Уже не потрібно писати складні й нудні речі самостійно. Якщо вам потрібна певна функціональність — для цього є готові бібліотеки й фреймворки. Ваше завдання: а) знати про їхнє існування; б) добрати відповідний варіант (аналогів зазвичай кілька, із різною якістю та нюансами); в) зрозуміти, як інтегрувати його у свій проєкт 🎓

Від цього робота стала лише цікавішою. Тепер ви можете вдесятеро швидше додавати нову функціональність у продукт. 30 років тому, якби вам потрібен був веб‑сервер, ви писали його з нуля. 20 років тому — купували, встановлювали й налаштовували його. А зараз — просто заходите в хмарний портал Azure чи AWS і вмикаєте потрібний сервіс 🌐

Це, до речі, одна з причин популярності мови Java. Вона чудово підходить не лише для розробки великих корпоративних рішень, а й для «склеювання» різних компонентів — завдяки багатій екосистемі JVM доступні інтеграції майже з будь‑чим: бази даних, мікросервіси, REST API, системи обміну повідомленнями, хмарні сервіси, аналітичні платформи.

Відповідно, і професія Java Software Engineer давно трансформувалася у роль, яку часто називають Fullstack Java Developer. Сучасному розробникові важливо розуміти, як працює база даних (PostgreSQL, MySQL/MariaDB, MongoDB тощо), щоб грамотно будувати взаємодію. Потрібно розуміти, як влаштований фронтенд (HTML, CSS, JavaScript/TypeScript, React, Angular), щоб налаштовувати обмін із бекенд‑частиною на Java (Spring Boot, Micronaut, Quarkus). І, звісно, без Docker нині нікуди — це вже стандарт індустрії 🐳.

Сучасна розробка загалом суттєво відрізняється від того, що було 20 років тому. Програміст пише код не більше 50 % часу — решта минає на читання документації, вивчення нових технологій, проєктування та роботу в команді на зустрічах. Програмісти‑одинаки — це радше рідкісний виняток.

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