Насправді, ні. Для цього достатньо задовольняти мінімальним вимогам: мати кілька років досвіду у роботі над комерційними проєктами, вміти під час інтерв’ю відповісти на запитання про відмінності між вектором і лістом, і володіти англійською хоча б на рівні intermediate. Вмієте усе це? Сміливо вирушайте на співбесіду. З високою ймовірністю ви отримаєте пропозицію роботи.
Далі ви вже потрапляєте у потік. Рано чи пізно майже всі джуни і мідли досягають рівня сеньйора – і це абсолютно не залежить від того, якою мовою ви програмуєте: C++ чи якоюсь іншою. Дехто схильний вважати це “знеціненням” сеньйорності, та, як на мене, це абсолютно нормальна ситуація.
Але давайте поговоримо не про те, як отримати наступний грейд, а власне про те, як стати вартісним фахівцем. На мою думку, визначальним фактором тут є не ваша робоча мова, а ваші навички як інженера. Про що саме йдеться? Про вміння бачити й розуміти загальну архітектуру системи, про навички декомпонування задач, про здатність розставляти пріоритети і відмежовувати суттєві фактори від несуттєвих та визначати витоки проблем. По суті, ми говоримо про обов’язкове для досвідченого інженера вміння окреслювати шляхи вирішення будь-яких технічних задач.
Ще одна ознака інженерної зрілості – простота коду. Писати складний код значно легше, ніж простий. Далеко не завжди недостатня структурованість коду є ознакою початківця, подібним “почерком” може відзначатися і досвідчений розробник. Більше того, такий код зазвичай працює і не створює ніяких проблем – аж до моменту, коли виникає потреба оновити функціонал або змінити логіку системи. Прочитати надлишковий код іноді виявляється складнішою задачею, ніж написати його.
Чимало девелоперів вважає, що на експертність може суттєво вплинути знання додаткових фреймворків. Щоправда, у випадку з С++ це не особливо працює. Універсального фреймворку у нас досі не існує, і навіть С++11, хоч і покращив стан речей, проте докорінно його не змінив. Кожному “плюсисту” все одно доводиться працювати з інструментами, проєктування яких не регламентувалося чіткими стандартами.
Особисто я вважаю ще однією must have навичкою інженера уміння вирішувати алгоритмічні задачі. У вітчизняних IT-компаніях цей скіл усе частіше починають перевіряти під час технічних інтерв’ю. Дехто може заперечити, що на реальних проєктах ми стикаємося з алгоритмами відносно рідко. Все вірно і, тим не менш, алгоритмічні задачі дозволяють швидко, легко, практично в ігровій формі отримати інсайти про структуру і патерни мислення. Більше того, стають очевидними не лише технічні, а й комунікативні особливості.
Кваліфікований розробник – це не лише хороший інженер, а й людина з розвиненими софт-скілами, котра здатна бути надійним командним гравцем. Для того, щоб проілюструвати ідеальну роботу в команді, достатньо згадати основні принципи протоколу TCP. Став високі вимоги до самого себе і будь поблажливим до інших. Виконуй якісно те, що потрібно зробити, і не витрачай свій час і час команди на зайві функції. Стався відповідально до протоколювання усього зробленого.
The best vacancies, are waiting for you!
We picked vacancies that suit your skills!