Кафедра прикладної математики ХНУРЕ

Мова:

Ієрархія програмістів

Ієрархія програмістів

*Junior розробник – розробник, який тільки-но почав свій шлях у програмуванні. Зазвичай людина з маленьким досвідом розробки або взагалі без нього – вчорашній студент або навіть школяр, який має випадковий набір початкових навичок. Готовий вислуховувати критику і багато вчитися.
Можливо, він має теоретичні знання і, цілком ймовірно, професійну освіту або, як мінімум, освоєну програму курсів з програмування. Часто – розуміє основи алгоритмізації та основні структури даних, можливості обраної мови програмування та обраного 1-2 фреймворків. Однак ці знання, як правило, не систематизовані, уривчасті та не підкріплені практичним застосуванням.


Беруть у команду до сильніших колег, які допомагають їм не лише із постановкою завдання, а й із вибором інструментів для її вирішення. Молодшим довіряють прості, некритичні для проекту завдання, на яких вони, швидше, навчаються, ніж доставляють конкретний результат. У середньому через 1-1,5 роки в міру здатний junior developer вже готовий до переходу до категорії «середнячків».

*Middle розробник – вчорашній Junior, який успішно освоїв весь стек технологій, що використовується командою. Має практичний досвід розробки. Зазвичай він знає кілька мов програмування/фреймворків. І завдяки тому, що його знання систематизовані, такий фахівець здатний самостійно вирішувати завдання – за ним майже не доводиться переписувати код – і він навіть може передавати свої знання junior-розробникам.
За стеком технологій такий розробник має не дуже багатий бекграунд і не завжди може вибрати необхідні та достатні інструменти для вирішення завдань. Middle-розробник бачить розв’язання конкретного завдання, але не завжди представляє загальну картину і те, як розв’язання задачі інтегрується в архітектуру проекту.

*Senior розробник – експерт у своїй галузі. Це досить впевнений і досвідчений фахівець, який пройшов бойове хрещення реальними проектами. Такими спеціалістами стають, за рідкісним винятком, мінімум через 3 роки після початку кар’єри. Основна відмінність «старших» в тому, що вони вже повністю самостійні і можуть не тільки одноосібно приймати правильні рішення, а й нести за них відповідальність перед замовниками та користувачами. Досить часто вони керують власною командою менш досвідчених співробітників, при цьому значно менше самі пишуть код, зате можуть виявляти помилки та упущення новобранців, допомагають їм з розстановкою пріоритетів і визначенням напрямку для розвитку. Це вже однозначні експерти у певній галузі, які високо цінуються на ринку праці.
Що далі?
Існує міф про зростання сеньйорів у менеджери проектів. Перехід у менеджери – крок не вгору, а вбік.
Позицію Senior Developer варто розглядати не як кар’єрне плато, а як плацдарм для подальшого розвитку, наприклад, в одному з наступних напрямків:

1. Технічний експерт
Статус технічного експерта пердбачає глибоке знання окремої та специфічної галузі. Наприклад, можна бути експертом в Azure/AWS та знати різноманітні сервіси, які надають ці платформи. Вміти робити Machine Learning або Computer Vision, знати все про вразливість у Інтернеті, розуміти, як працюють криптовалюти або правильно готувати Sharepoint. Такі завдання зустрічаються не кожен день, але коли з’являються, настає зоряна година технічних експертів. Без них подібні проекти були б неможливими, і компанія часто готова доплачувати за ці унікальні знання.

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

3. Фронтмен або менеджер проекту
PM – це проектний менеджер або менеджер по продукту. Він повністю керує, презентує проект чи продукт, а також спілкується із замовниками. Він відповідає за проект.
PM іноді уособлює у собі фронтмена – тобто людину, що першою спілкується із замовником, презентує компанію, створює комерційну пропозицію, розраховує кількість роботи, кількість потрібних спеціалістів, тощо.

4. Тімлід
Роль тімліда – це, по суті, комбінація технічно грамотних рішень з якісними процесами розробки. Їхнє правильне поєднання означає більше користі для клієнта за ті ж гроші, менше шансів для джуніора щось по недосвідченості зіпсувати, плюс для компанії —стандартизація підходів до розробки, зниження порога входу в проект і стимулювання зростання фахівців у потрібному напрямку.

5. Архітектор
Деякі проекти не можна просто взяти, сісти та почати писати. Вони можуть бути занадто великими або складними. Від архітектора потрібно розуміння бізнесу клієнта, уміння аналізувати складні технічні системи, а потім доносити це розуміння до замовника та розробників. Плюс широкий кругозір у плані наявних на ринку платформ та компонент, з яких можна синтезувати рішення.

6. SCRUM-майстер – людина, що вибудовує процес роботи команди за гнучкою методологією SCRUM. Стежить за їх тривалістю та виконуваністю, є координатором на зустрічах команди.
Це можливі ролі тільки в технічній галузі розвитку, не торкаючись тестувальників, аналітиків, менеджерів, дизайнерів, маркетологів або продавців.

Ієрархія програмістів