Історія хіміка, який став програмістом в Ubisoft і нині служить у ЗСУ

Костянтин Ніфантьєв уже п’ять років є частиною київської команди Ubisoft. Хімік за освітою, він тепер програмує внутрішні продукти компанії, які полегшують роботу іншим командам і покращують ігрові релізи. В інтерв’ю GameDev DOU розробник розповів про те, чому змінив професію, чим робота в R&D-відділі відрізняється від роботи над конкретною грою та що спонукало його з власної ініціативи піти в ЗСУ.

«Від таких можливостей не відмовляються». Про знайомство з програмуванням і шанс змінити професію

За освітою я хімік. У 2014-му закінчив Київський університет ім. Шевченка й навіть роздумував завершити аспірантуру, але з особистих причин відмовився від цієї ідеї. Попри те, що мене цікавила хімія (втім, це й досі так), влаштуватися за професією не вийшло. Ринок праці в Україні був несприятливим — виявилося, знайти хорошу роботу банально складно. Потрібно було або щодня їздити далеко за межі Києва, де розташовувалося те чи інше виробництво, або розглядати еміграцію, а цього я не хотів. Відповідно, діяльність довелося змінити.

У 2014-му я потрапив на роботу в мережу гуртків дитячої творчості й робототехніки. Там я викладав, а також частково працював над розробкою моделей і створенням інструкцій до них. За певний час доріс до головного методиста відділу робототехніки — це була цікава робота. Власне, у програмування я «зайшов» саме через неї: почав вивчати візуальні мови на кшталт Scratch і трошки «залазив» у текстові (Python, Java, C++).

Так тривало до 2018-го. Викладання — захоплива справа, але виснажує психологічно. Я розумів, що вигорання вже на півдорозі, тож став розглядати інші варіанти праці.

«Розглядав дві сфери: Embedded або геймдев. Тому що і там, і там потрібно досягти певного мистецтва в програмуванні»

Вирішив підтягнути свої знання з програмування: ця сфера в мене теж викликала інтерес, а знайти роботу в ній було точно простіше, ніж у тій самій хімічній індустрії. Панує думка, що ідеальна мова для новачків — Python, але у мене з нею як з першою «промисловою» мовою програмування не склалося. Пробував опанувати самотужки після університету, але без особливого захвату та успіхів. Натомість С++ мене зацікавила (через програмування тих же ардуїнок і використання у ігрових рушіях).

Для того, щоб підтягнути свої знання С++ я пішов на курси від IT-компанії за рекомендацією знайомих. Отримавши класну базу я у тому ж 2018 році став підшукувати роботу в IT. Розглядав дві сфери: Embedded або геймдев. Тому що і там, і там потрібно досягти певного мистецтва в програмуванні, якщо хочеш, щоб усе не просто працювало, а працювало добре, та ще й було оптимізовано. Як на мене, в цих сферах значно цікавіші технічні завдання, ніж у тому ж корпоративному ентерпрайзі, де подекуди доводиться працювати з мільйоном формочок.

За збігом обставин якраз тоді в Ubisoft оголосили набір на Coding Campus — піврічну навчальну програму з онлайн-програмування, після закінчення якої можна було отримати офер від студії. Від таких можливостей не відмовляються, тож я вирішив спробувати свої сили.

«Я не був „нулем“ у програмуванні, але чимало інформації доводилося вивчати самотужки». Про навчання в межах Ubisoft Coding Campus

Щоби потрапити на Ubisoft Coding Campus, потрібно було надіслати резюме й пройти об’ємний онлайн-тест, який, зокрема, демонстрував навички роботи з С++. Завершувалося все офлайн-співбесідою. Врешті я став одним із 22 студентів і, певно, одним із двох світчерів. Усі інші були або студентами вишів, які профільно вивчали програмування, або ж представниками самої компанії, які хотіли перекваліфікуватися, наприклад, із тестерів на розробників.

Ubisoft Coding Campus був сфокусований на мережевому програмуванні (ми розбиралися з мережевим кодом, який забезпечує роботу мультиплеєра в грі) та додатковій інфраструктурі (метчмейкінг, новини, магазин тощо). Але цьому передувала і загальна підготовка геймдев-програміста: вивчали, як працюють ігрові рушії, в чому їхні особливості тощо. Ми працювали з модельним рушієм. Він самописний і невеличкий. У нас був базовий код, який ми доопрацьовували, додавали функціонал, більш притаманний повноцінному проєкту, й так відточували навички.

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

Попри те, що я не був геть «нулем» у програмуванні, чимало інформації доводилося вивчати самотужки. Тож частенько, особливо на початку Coding Campus, я шукав інформацію вже вдома, аби підтягнути свій рівень. На це витрачав майже весь вільний час. Виявилося, що писати код для себе, в межах навчання, й писати код для роботи, щоб його розуміли інші, — це абсолютно різні речі. Доводиться враховувати куди більше нюансів. Було важко, але зміна сфери діяльності завжди потребує зусиль.

Будь-які труднощі, що виникали, мене не відлякували. Я б сказав, навпаки: коли певний час щось не виходило, а потім зрештою вдавалося розв’язати проблему, відчував додаткову мотивацію. Мене драйвить процес пошуку рішень складних проблем і отриманий результат. Та й загалом було цікаво дізнаватись, як той чи інший функціонал, що бачив в іграх, реалізують у коді.

До речі, двоє людей, якщо не помиляюся, відсіялися в процесі навчання — зрозуміли, що заняття не для них. Я ж усвідомив: це якраз те, що треба.

На перший погляд, програмування далеке від викладання й тим паче хімії. Але я вважаю, що моє світчерство вийшло доволі органічним. Усі ці сфери об’єднує дослідницький характер роботи та потреба систематично знаходити рішення нестандартних проблем. І взагалі вважається, що людині треба періодично змінювати характер діяльності. Головне — не пересиджувати й не доводити ситуацію до повного вигорання, коли вже просто неспроможний зібратися з духом, аби спробувати щось нове. Звісно, є люди, які можуть хоч усе життя робити те, що їм не до вподоби, але, як на мене, це сумно.

«Ми з командою автоматизували те, що раніше годинами робила окрема людина». Про технічні виклики в R&D-відділі геймдев-компанії

На Ubisoft Coding Campus я провчився пів року й приблизно за місяць після випуску отримав офер. Тоді в київському офісі якраз відкривали R&D-відділ — туди й потрапив. Оскільки я не прагнув піти на якийсь конкретний проєкт, над яким працювала компанія, то не засмутився. Навпаки, я чітко розумів, що сучасні ігри — це величезні програми, й окремо взятий програміст не працюватиме там над усім, а, скоріше за все, йому доручать конкретну фічу, тобто щось дуже вузьке. Мені ж кортіло подивитися, як усе влаштовано зсередини, як інструменти, які ми розробляємо, можуть масово впливати на ігри. Тому все зійшлося.

З одного боку, я міг би швидше розвиватися, якби долучився до вже спрацьованої команди. Та з іншого, я отримав більше гнучкості й можливостей експериментувати, тестувати різні підходи в роботі. Внутрішня культура Ubisoft передбачає: якщо тобі щось незрозуміло, можеш знайти в загальній системі будь-якого фахівця компанії та написати йому напряму, Senior це чи продюсер — неважливо. І я цією опцією користувався. Наприклад, коли ми прототипували одну з внутрішніх фіч — розподільчу систему, — мені було складно розібратися з її архітектурою (як саме зв’язати елементи системи, які взагалі елементи використовувати тощо). Тож я «постукав» до одного з наших Senior-спеціалістів, який працював із мережевим програмуванням, — і ми разом усе намалювали, обговорили нюанси та зрештою стартували цей проєкт. Така взаємодія траплялася неодноразово, тому не можу сказати, що я щось утратив, потрапивши в R&D-команду.

Також імпонувало те, що я міг доволі швидко побачити реакцію кінцевого користувача на свою розробку. Якби я працював безпосередньо над грою, довелося б чекати релізу — а це довго. В моєму ж випадку, коли це внутрішній продукт, кінцевий користувач може сидіти з тобою на одному поверсі. І якщо хочеш дізнатися його думку — просто йдеш і питаєш. Це прекрасно хоча б тому, що в рази пришвидшує роботу.

«Ми автоматизували те, що раніше годинами робили цілі команди»

Ось уже п’ять років, як разом з командою я створюю інструменти для покращення внутрішніх процесів у компанії. Наприклад, потрібно тестувати складний мультиплеєр. Як організувати тестувальників у правильну команду під цю роботу й дати їм усе, щоб якісно виконувати завдання? Самого лишень месенджера замало: потрібно фіксувати проблеми, які виникають, динамічно змінювати завдання тощо. Ці запити ми і закриваємо шляхом розробки власного технічного рішення.

Інший напрям — автоматизація самого тестування. Ми створили інструмент автоматичного тестування за Black Box методикою. Гра в цьому разі розглядається як закрита система. Ми взаємодіємо з нею як звичайний користувач, жодних інтеграцій не здійснюємо. Але скрипт вводить певні інпути, реєструє те, що виводиться на екран, розпізнає елементи та взаємодіє з ними. Дуже класний інструмент, особливо для тестування UI, оскільки економить величезну кількість часу й зусиль. Тепер тестувальник не мусить виконувати рутинну роботу — натискати тисячу кнопок за день. Він може приділити увагу важливішим аспектам гри: квестам, ігроладу абощо. Тобто ми з командою автоматизували те, що раніше годинами робили цілі команди. І при цьому — створили можливості для розвитку самих тестувальників, що тепер можуть опановувати програмування працюючи над написанням автоматичних тестів.

«На дозвіллі я зацікавлений в інді, а на роботі — у розв’язанні інженерних завдань». Про бажання експериментувати в геймдеві та кар’єру в межах однієї компанії

Декому може здаватися, ніби працювати над внутрішніми інструментами, які покращують ігри чи полегшують роботу інших спеціалістів, — це не справжній геймдев, оскільки безпосередньо робота з грою нині не входить до моїх обов’язків. Але, по-перше, наша команда потрапила в титри вже не однієї гри, бо кінцеві релізи стають відчутно кращими завдяки нашій роботі. По-друге, це захоплює суто з інженерної точки зору, адже немає готових рішень, які б задовольняли всі параметри. Або є обмеження на право використання чужого коду, або банально не існує продуктів, які покривали б ту чи іншу нішу. Наприклад, як у випадку тестування. Є Selenium, який працює схожим чином до нашої розробки. Але він інтегрується в сам браузер, завдяки чому можна програмно читати сторінку. У випадку гри такої можливості немає, відповідно, немає й повноцінного продукту, який би покривав потреби компанії.

Якщо я хочу задовольнити своє бажання поекспериментувати саме з іграми, йду на геймджеми. Я брав участь як у складі команди, так і соло, робив ігри на Global Game Jam та на внутрішньому конкурсі від Ubisoft. Цікавий досвід і гарна нагода познайомитися з однодумцями, краще пізнати людей поруч, бо як не крути, а програмістська тусівка доволі асоціальна [усміхається].

Водночас я розумію, що є люди, які хочуть бути суто геймдевелоперами, робити лише інді — це нормальний підхід. Я, наприклад, останні кілька років найпильніше відстежую якраз інді-релізи й граю саме в них: цим іграм притаманний рафінований, чистий і креативний ігролад, яскравий стиль. А також вони не потребують багато часу на проходження. Мені до вподоби, наприклад, Return of the Obra Dinn. Це гра-головоломка, яку фактично робила одна людина (ще один фахівець долучався для створення музики й локалізації. Щоб пройти гру, знадобиться менш як 20 годин. І не можна зіграти її ще раз, здобувши той самий досвід, оскільки відомо вже багато нюансів. Але для одного разу — це класний концентрований досвід та емоції, які ти отримуєш за короткий проміжок часу.

«Геймдев для інженерів — це завжди технічний виклик»

Тож на дозвіллі я зацікавлений в інді-іграх, а на роботі — насамперед у розв’язанні інженерних завдань, отож мене все влаштовує. Думаю, людям, які просто люблять геймдев і не прагнуть шукати відповіді на складні інженерні питання, краще обирати інший сектор роботи. Є низка спеціальностей, які не пов’язані з програмуванням, наприклад, щось із менеджерської лінійки позицій. Бо геймдев для інженерів — це завжди технічний виклик, особливо у великих проєктах. І якщо ти не готовий до цього, буде дуже складно.

Ubisoft став першою компанією з геймдев-індустрії, в яку я прийшов — і змінювати її поки що не планую. За п’ять років тут я доріс до Middle-позиції. Звісно, якби пострибав по компаніях, спокійно набив би собі «личку» Senior ще рік тому. Але мені це менш важливе, ніж відсутність стресів, пов’язаних зі зміною роботи та вливаннями в нові колективи. Я ціную екологічність і людяність, які тут панують. Стрибання між компаніями дає швидше зростання і в плані «личок», і в плані фінансів, однак я маю інші пріоритети, тому жертвую «званнями» й зарплатними підвищеннями заради креативних завдань та проєктів, які веду.

Для мене це правильний підхід хоча б тому, що за час роботи я досі не стикнувся з вигоранням. По-перше, я зараз пишу на «плюсах» і Python та періодично перемикаюся між проєктами, які написані цими мовами. По-друге, проєкти — це більше, ніж рухати одну кнопку п’ять років поспіль, як це іноді буває.

І ніхто не скасовував можливостей для розвитку. Наприклад, цього року я виступав на внутрішній конференції Ubisoft Developers Conference. У відеопрезентації розповідав, як ми організували в себе роботу з «плюсовими» пакетами, які проблеми можуть при цьому виникнути й чому тощо. З одного боку, я не можу сказати, що дуже прокачав якісь софт-скіли, адже презентації та робота з публікою — це моє і так, з огляду на викладання. З іншого — тут ішлося про презентацію для команд усіх офісів компанії, а це 20 тисяч співробітників — неабияка аудиторія! Крім того, такий досвід допомагає систематизувати знання та спонукає дописати документацію, на яку завжди бракує часу чи натхнення. А тут просто не лишається вибору, адже не можна щось презентувати й не дати гайду, як із цим працювати.

До речі, робота в мене є не лише в офісі [усміхається]. Моя дружина, коли вирішила змінити сферу діяльності, теж потрапила в Ubisoft — пройшла інтернатуру і тепер працює UI-програмісткою. Та й частина людей у нашому оточенні — спільні знайомі з компанії: наприклад, мій ментор з Coding Campus став лідом дружини. На щастя, вдається розділяти робоче й особисте, як мінімум тому, що в нас різні сфери діяльності. UI-програміст та розробник інструментів — і близько не одне й те саме.

«Щоб не грати у лотерею з розподілом, є сенс вибирати підрозділ в обхід центрів комплектації». Про службу в ЗСУ і професійні плани

Нині я перебуваю в лавах ЗСУ (до речі, згадану раніше презентацію записував уже не з дому — пощастило, що в місці моєї дислокації все добре з інтернетом). Це не була мобілізація за повісткою — я сам шукав, куди піти служити. Насправді ще до повномасштабного вторгнення я хотів записатися в ТрО, але не встиг прогнати всі документи через військовий комісаріат — це досі дуже складні установи з непростими робочими процесами. Після 24 лютого 2022-го я приходив у військкомат, але оскільки в мене немає військового досвіду, там порадили піти у волонтери. На цьому я і фокусувався певний час: допомагав організувати бомбосховище, виконував різні «ручні» завдання.

Коли розв’язав усі поточні завдання, став шукати можливості використати бодай частину своїх навичок у програмуванні, робототехніці й роботі з електронікою для оборони країни. Через особисті зв’язки мені вдалося знайти хороший підрозділ, який робить дещо дуже потрібне — деталей не розкрию, бо це теж своєрідний NDA [усміхається]. Скажу лише, що мої знання й уміння стали в пригоді — з січня цього року я перебуваю на службі.

Чи страшно було йти в ЗСУ? Думаю, якщо людині геть не страшно, в неї є певні проблеми, з якими слід звертатися до відповідного медичного спеціаліста [сміється]. Інше питання — що лякає більше. Для мене фактором, який напружував у рази сильніше, була нездатність щось зробити. Якби ворожі війська зайшли в Київ першого ж місяця, я б нічого не зміг удіяти: особистої зброї немає, в ТрО не взяли — тобто захистити себе, родину та вплинути на ситуацію просто не було змоги. І це вдарило по мені куди потужніше, ніж будь-які ризики, які є безпосередньо на службі.

«Мені здається, воєнний стан у країні триватиме ще півтора-два роки»

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

Як на мене, важливо самостійно керувати ситуацією, тому що військкомати нічого не робитимуть, аби ви потрапили туди, куди хочете. Щоб не грати у лотерею з розподілом, є сенс вибирати підрозділ в обхід центрів комплектації з огляду на те, яким набором навичок ви володієте і які є потреби в цього підрозділу. Знайшли? Добре. Далі берете в підрозділі документ, який називається «відношення» — він і дає змогу підвищити шанси цілеспрямовано кудись потрапити. Це законно. ЗСУ — дійсно для кожного, адже там настільки багато людей, що можна сміливо казати: це не чиясь, а наша армія, армія українців. І що більше людей зі здоровим глуздом туди приходитиме, то більше позитивних трансформацій ми бачитимемо.

Наразі мій головний план — усунути фактор, який заважає втілювати решту планів. Що менше живих ворогів, то простіше рухатися далі. Мені здається, воєнний стан у країні триватиме ще півтора-два роки. Що зміниться за цей час для мене? Подивимося. Зараз я хочу отримати бронзового зайця — таку статуетку дають співробітникам Ubisoft, які працюють з компанією понад п’ять років. А згодом, може, зазіхатиму на срібного й золотого — за 10 і 15 років відповідно [усміхається]. Та зараз потрібно, щоб кожен робив свою справу на своєму місці. Ми не обирали реальність, у якій опинилися, але мусимо до неї адаптуватися — і перемогти.

Підписуйтеся на Telegram-канал @gamedev_dou, щоб не пропустити найважливіші статті і новини

👍ПодобаєтьсяСподобалось10
До обраногоВ обраному2
LinkedIn

Схожі статті



Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Зараз я хочу отримати бронзового зайця

Напевно, що це якийсь евфемізм, як «вафельна вечірка» )

Психолог: бронзовий Rabbid не існує, він не може тобі нашкодити. Тим часом бронзовий Rabbid: lh4.googleusercontent.com/...​CCxtkzACpEdElkHMJIqKSLFnJ (світлина зі статті на ain)

"

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

" - В цьому місці як мінімум хотілось би почути історяю автора, а можливо і лайфхаки як це робити і які є тогнкощі. "

. Далі берете в підрозділі документ, який називається «відношення» — він і дає змогу підвищити шанси цілеспрямовано кудись потрапити.

" - дуже мотивуюче...

Бо відношення не гарантія :)
Треба йти у військомат з яким співпрацює та частина

Особливих хаків немає, тільки здоровий глузд:
— подбати про фізичну форму (простіше буде на ЗВД — загальних військових дисциплінах)
— пройти курси з тактичної медицини (трошки піару — www.facebook.com/tacmed.north — вони круті, є курси для цивільних)
— якщо цікавлять дрони (ще трошки піару) — www.facebook.com/kruk.uav — групи змішані (цивільні та військові), якраз можна знайти контакти на майбутнє, якщо немає знайомих, що вже воюють. Звертайте увагу на відгуки про командування)

Далі або через знайомства шукати підрозділ або моніторити вакансії — списки в дусі «25 вакансій для програмістів» періодично публікуються як у ЗМІ так і в телеграм каналах та соцмережах.
Подальші кроки можуть варіюватися, але якщо ви пройшли співбесіду і вас хочуть бачити у лавах збройних сил — ви отримаєте документ (відношення) яке є дійсним певний термін і з яким можна йти у військомат.

Часи буремні — тому так, жодних гарантій

Перші пункти будуть корисними і у тому випадку, якщо ви не плануєте самі мобілізовуватись, а будете очікувати на повістку

Підписатись на коментарі