Софт-скіли, досвід чи навички? Що головне в роботі сучасного IT-профі
Колонка Костянтина Семененка, засновника та CTO Managed Code
Костянтин Семененко — технічний директор та розробник програмного забезпечення із Запоріжжя, засновник та СТО французької компанії Managed Code. Встиг попрацювати з такими технологіями, як-от .NET/C#, Microsoft Orleans, Azure, MAUI, Semantic Kernel, Blazor та багатьма іншими.
Констянтин отримав досвід у 12 компаніях і пройшов шлях від техніка, який налаштовує комп’ютери, до розробника мобільних застосунків і керівника технічних команд.
У своїй колонці для robot_dreams Костянтин розповідає інсайти, набуті за 18 років роботи індустрії, а також дає поради, що стануть у пригоді як новачкам в IT, так і досвідченим фахівцям.
Чому софт-скіли — це «новий чорний» в IT
Колись давно програмісти були своєрідними чарівниками — мало людей розуміло, що вони роблять насправді, а весь процес «програмування» збоку здавався неймовірно складним. Тоді хард-скіли — глибокі технічні знання та навички — були на першому місці. Програмісти могли тижнями писати код, не обмінюючись ні словом з колегами чи клієнтами. Головне було знати, як змусити машину робити те, що потрібно.
Сьогодні, коли технології стали доступнішими, а інструменти — потужнішими, основне запитання, яке варто ставити собі та іншим, — це вартість володіння проєктом (cost of ownership). Скільки коштує не тільки створити систему, а ще й підтримувати її? Програмістам вже недостатньо просто знати, як писати код. Вони повинні розуміти, як їхні рішення впливають на бізнес, як зменшити витрати й підвищити ефективність.
ChatGPT або інші інструменти штучного інтелекту можуть генерувати до 70 % коду. Але для того, щоб знати, що саме генерувати, як перевірити й отримати необхідний результат, потрібна база. Без міцного фундаменту важко зрозуміти й оцінити рішення, яке вам пропонує AI. А отже, мікс фундаментальних знань і вміння комунікувати найбільше цінують на сучасному ринку.
Розробник має бути проактивним, вміти самостійно розібратися в завданнях, пояснити, що саме потрібно для досягнення поставленої мети, а також запропонувати альтернативні рішення та проговорити непередбачувані складнощі, які можуть виникнути в процесі роботи.
Комунікація — основа для успішної роботи в команді. Це значить, що вам не тільки варто комунікувати свої ідеї, а ще й слухати та зважати на думку інших.
Відповідальність — це ще один ключовий аспект. Гарний розробник має не тільки вміти визнавати свої помилки, а й активно працювати над їхнім виправленням. Кожна дія має наслідки, і від особистої відповідальності залежить успіх проєкту.
Якщо команда відповідальна, то що ж роблять СТО?
Бути технічним директором (СТО) — це більше, ніж просто керувати технічними аспектами компанії. Це про те, як вести команду до інновацій, забезпечувати стабільність і безперервний розвиток, а також підтримувати баланс між технічними вимогами та бізнес-цілями.
СТО відповідає за вибір технологій, архітектуру систем, безпеку, якість коду та забезпечення ефективного процесу розробки. Він також має менторити команду, стежити за її перформансом, думати про зростання програмістів, планувати навчання, проводити рев'ю і допомогти в розв’язанні глобальних технічних проблем. У компаніях ця роль може мати різний вигляд.
Існують три основні типи технічних директорів (СТО):
1. СТО великих корпорацій. Вони ухвалюють стратегічні рішення стосовно вибору технологій, можливо, купівлі інших компаній тощо. Їм не обов’язково бути технічними фахівцями, головне — бачити фінансові показники та перспективи. Вони радше менеджери, ніж технічні експерти.
2. Стартапівські СТО. У їхній ролі поєднуються функції технічного лідера, менеджера команди та розробника. Вони відповідають за технологічний напрям компанії від ідеї до реалізації, часто працюючи безпосередньо з кодом.
3. Фракційний СТО. Це досвідчений фахівець, який працює декілька годин на тиждень та забезпечує стратегічне технологічне лідерство без повної зайнятості. Такий професіонал – гарне рішення для невеликих стартапів і малих підприємств, які не можуть собі дозволити повноцінного СТО.
Особисто для мене цікаво будувати проєкти й керувати командами. Суто технічна розробка та програмування вже не викликають у мене такого захвату, як раніше.
Мене приваблює процес створення нових продуктів — від візії до втілення. Я люблю спілкуватися з інвесторами, засновниками стартапів, намагатися зрозуміти їхні ідеї та перекласти їх у технічну площину. Це дає змогу бачити всю картину і розуміти, як кожен елемент впливає на кінцевий результат.
Значення створення власних проєктів та збереження навичок
Як технічний директор я переконаний, що навички розробки потрібно постійно підтримувати в тонусі. Програмування — це як гра на музичному інструменті: якщо довго не грати, то думаєш, що все ще вмієш, але руки вже не слухаються. Саме тому я вважаю, що потрібно постійно практикуватися.
Однак часу завжди бракує, тому я підтримую свою форму через опенсорсні проєкти, демоверсії, прототипи. Можливо, не так багато, як хотілося б, але це дає змогу тримати навички на кінчиках пальців. Такі проєкти допомагають залишатися в курсі нових технологій і трендів, а також підтримують мене в актуальному стані для розв’язання реальних завдань.
Зараз, коли технології, як-от ChatGPT та інші засоби штучного інтелекту, значно оптимізують і прискорюють багато процесів, важливо не відставати. Якщо відразу не почати впроваджувати нові тренди й практики, то вже за 2–3 роки конкуренти, що скористалися цими можливостями, будуть значно попереду вашої компанії.
Наприклад, підвищення продуктивності з GitHub Copilot у нас вже впроваджене, і це реально економить багато часу. Наші розробники стали продуктивнішими завдяки оптимізації виробничих процесів і використанню нових практик. Тому важливо бути в курсі всіх новинок, щоб не пропустити можливості підвищити ефективність.
Головні професійні виклики
Одним з найбільших викликів для мене як СТО є робота з людьми та побудова команди — це постійний процес, який вимагає уваги, терпіння та вміння знайти баланс між різними потребами й цілями.
Формування сильної та злагодженої команди — це більше, ніж просто зібрати висококваліфікованих фахівців. Це створення середовища, де кожен може максимально розкрити свій потенціал.
Коли я шукаю нового працівника, то звертаю увагу не тільки на його технічний рівень, але й на особистісні якості та здатність вписатися в колектив.
Про це ми вже говорили вище, але варто повторити: ефективна комунікація — ключ до успішної роботи будь-якої команди. Це охоплює чітке донесення завдань і цілей, активне слухання та врахування зворотного зв'язку. Коли всі члени команди розуміють, чого від них очікують, і мають змогу висловлювати свої ідеї та побоювання, робота стає більш злагодженою та продуктивною.
Мотивація є також важливим аспектом. Я прагну мотивувати свою команду досягати високих результатів і підтримувати їхню мотивацію на високому рівні. Цього добиваються через визнання досягнень, створення можливостей для професійного зростання й розвиток культури співпраці та підтримки.
Коли я пишу код, то цілком занурююся у творчий процес. Це вимагає чіткого фокуса та розуміння, що саме потрібно реалізувати. Відповідальність за продукт вимагає балансу між технічними рішеннями й комерційними цілями. Іноді доводиться жертвувати деякими «фічами для розробників» заради успіху проєкту. У таких ситуаціях важливо поговорити з командою та клієнтами, розібратися, що саме трапилося, і знайти конструктивне рішення. Головне правило — не замовчувати проблеми, а відверто розповідати про них. Лише так можна мінімізувати репутаційні та фінансові втрати для компанії.
Як розробнику не втратити навички
Залишатися актуальним у світі IT — постійний виклик, регулярне навчання. Участь у курсах, вебінарах і конференціях допомагає тримати руку на пульсі. Початок проходження різних сертифікацій може бути справжнім випробуванням, і підготовка до них вимагає значних зусиль, що зрештою окупається.
Значення сертифікацій та постійного навчання
Сертифікації Microsoft підтверджують компетентність і знання. Спочатку до їхнього здобуття я ставився жартома і тільки на практиці зрозумів, що отримати їх — челендж. Підготовка до іспитів потребує занурення в глибокі технічні деталі та вивчення нових аспектів технологій. Це стимулює постійний розвиток і навчання, що як результат підвищує вашу цінність на ринку праці та відкриває нові можливості для кар’єрного зростання.
Щоб тримати руку на пульсі, я стежу в X за розробниками Microsoft, які роблять цікаві опенсорс-проєкти. Коли бачу терміни, яких не розумію, то з’ясовую, що це таке. Також стежу за новинами в соцмережах, адже ІТ-технології постійно змінюються.
Головна порада: коли бачиш новий сервіс чи технологію, треба поцікавитися, що це таке і навіщо воно потрібне, і спробувати повторити це самостійно. Впровадження нових технологій та підходів у роботі допомагає залишатися попереду.
Використання різних LLM, наприклад, значно підвищило мою продуктивність, дозволивши зосередитися на складніших і цікавіших завданнях, а рутину віддати роботам.
Всі ми знаємо, що вивчити C++ дуже легко. Потрібно всього 21 день, щоб опанувати основи. Просто купуєте книгу «C++ за 21 день», вчитесь за нею — і ось ви вже маєте базові знання. А потім всього 7–8 років практики — і ви майстер C++. Звучить просто, правда? Але справжнє володіння цією потужною мовою програмування приходить із досвідом, постійним вивченням нових технік і розв’язанням складних завдань.
Навіть після 8 років вам доведеться постійно вчитися. Процес нескінченний, але саме в цьому й полягає краса програмування. Тож якщо ви готові присвятити час і зусилля, то перед вами неймовірні можливості.
Як виживати в складних умовах ринка і виділятися серед конкурентів
Ринок праці в IT сьогодні надзвичайно динамічний і конкурентний. Кількість вакансій зростає, але конкуренція стає жорсткішою. Наприклад, DOU каже, що у травні 2024 року середня кількість відгуків на одну вакансію досягла 28,9, а для деяких спеціалізацій, як-от Frontend, цей показник був ще вищим — до 114,7 відгуку на одну вакансію. Тому я звертаю увагу на софт-скіли, адже технічні знання мають бути за замовчуванням.
Коли на одну вакансію надсилають 300 заявок, недостатньо просто надіслати «Копія_CV.docx». Потрібно чітко та переконливо розповідати про свої досягнення, проєкти й навички на співбесідах. Софт-скіли, як-от комунікація, ведення переговорів та розуміння потреб роботодавця, стають вирішальними. Вміння донести свої ідеї, слухати й розуміти співрозмовника роблять вас ціннішим кандидатом.
Варто зазначити також роль банальної удачі на цьому шляху. Роботодавці шукають комбінацію максимальної віддачі за мінімальну винагороду. Висококваліфікованого фахівця, вартого своїх грошей, можуть взяти, але за умови рівних навичок оберуть дешевшого працівника — це вигідніше. До того ж часто на співбесідах джуни вимагають високої зарплати, ментора, бюджетного навчання тощо. Навчати джуна — це великі витрати для компанії. Отже, потрібно чітко усвідомлювати свою цінність і себе «продати».
Під час підготовки до співбесіди не тільки вивчіть інформацію про компанію, але й підготуйте реальні кейси з вашого портфоліо. Акцентуйте на своїх унікальних навичках та досягненнях.
Вузька спеціалізація робить вас незамінним фахівцем у певній галузі, що значно підвищує ваші шанси на успіх.
Якби я повернувся в минуле, то дав би собі три поради: вивчай англійську, купуй біткоїни, інвестуй в навчання: купуй онлайн-курси чи консультації у професіоналів, щоб заощадити роки самостійних пошуків.
Наостанок хочу порадити декілька класних книжок, які можуть сприяти вашому навчанню (деякі з них є тільки в англійській версії):
1. «Високонавантажені застосунки. Програмування, масштабування, підтримка» Мартіна Клеппмана — цю книгу зможуть осягнути ті, в кого є базові знання з SQL і того, як працюють бази даних. Вона про ключові принципи, алгоритми та компроміси, які незамінні під час розробки високонавантажених систем для роботи з даними. Автор розглядає все на прикладах внутрішньої структури популярних програмних пакетів і фреймворків.
2. ASP.NET Core in Action, Third Edition Ендрю Лока — це бестселер. Навіть якщо ви ніколи раніше не працювали з ASP.NET, то швидко почнете створювати продуктивні кросплатформні вебзастосунки. Ілюстрації та анотований код роблять читання/навчання візуальним та легким.
3. «Книга Scrum. Навчися робити вдвічі більше за менший час» Джеффа Сазерленда. IT-фахівець, радник венчурного фонду OpenView Venture Partners і керівник компанії Scrum. Inc Джефф Сазерленд сам вигадав і впровадив методику управління проєктами — «скрам». Книга акцентує на самій ідеї та її базових поняттях, а також на особистому досвіді автора і його міркуваннях з цього приводу. Вам точно має сподобатися, якщо цікавитеся бізнес-технологіями.
4. Dependency Injection. Principles, Practices, and Patterns Марка Сімана. Парадигма впровадження залежностей (DI) протягом минулого десятиліття де-факто стала однією з домінантних на платформі .NET і тепер обов’язкова до вивчення для всіх .NET-розробників.
5. C# Interview Guide: Boost your confidence with answers to hundreds of secret interview questions — як то кажуть, last but not least, книга власного авторства. Цей посібник я написав, щоб озброїти вас потрібними навичками для успішного проходження технічних співбесід, охоплюючи широкий спектр тем: від основ програмування на C# до складних технічних деталей. Особливо буде цікаво тим, хто готується до технічних співбесід.