Історія хіміка, який став програмістом в Ubisoft і нині служить у ЗСУ
Костянтин Ніфантьєв уже п’ять років є частиною київської команди Ubisoft. Хімік за освітою, він тепер програмує внутрішні продукти компанії, які полегшують роботу іншим командам і покращують ігрові релізи. В інтерв’ю GameDev DOU розробник розповів про те, чому змінив професію, чим робота в R&D-відділі відрізняється від роботи над конкретною грою та що спонукало його з власної ініціативи піти в ЗСУ.
«Від таких можливостей не відмовляються». Про знайомство з програмуванням і шанс змінити професію
За освітою я хімік. У
У
Так тривало до
«Розглядав дві сфери: 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 лютого
Коли розв’язав усі поточні завдання, став шукати можливості використати бодай частину своїх навичок у програмуванні, робототехніці й роботі з електронікою для оборони країни. Через особисті зв’язки мені вдалося знайти хороший підрозділ, який робить дещо дуже потрібне — деталей не розкрию, бо це теж своєрідний NDA [усміхається]. Скажу лише, що мої знання й уміння стали в пригоді — з січня цього року я перебуваю на службі.
Чи страшно було йти в ЗСУ? Думаю, якщо людині геть не страшно, в неї є певні проблеми, з якими слід звертатися до відповідного медичного спеціаліста [сміється]. Інше питання — що лякає більше. Для мене фактором, який напружував у рази сильніше, була нездатність щось зробити. Якби ворожі війська зайшли в Київ першого ж місяця, я б нічого не зміг удіяти: особистої зброї немає, в ТрО не взяли — тобто захистити себе, родину та вплинути на ситуацію просто не було змоги. І це вдарило по мені куди потужніше, ніж будь-які ризики, які є безпосередньо на службі.
«Мені здається, воєнний стан у країні триватиме ще півтора-два роки»
Внутрішнього стрижня йти в ДШВ мені забракло — це занадто серйозна робота, і моя глибока повага тим, хто її виконує. А проте завдань в армії, як і в цивільному житті, маса, і їх покривають фахівці абсолютно різних напрямів.
Як на мене, важливо самостійно керувати ситуацією, тому що військкомати нічого не робитимуть, аби ви потрапили туди, куди хочете. Щоб не грати у лотерею з розподілом, є сенс вибирати підрозділ в обхід центрів комплектації з огляду на те, яким набором навичок ви володієте і які є потреби в цього підрозділу. Знайшли? Добре. Далі берете в підрозділі документ, який називається «відношення» — він і дає змогу підвищити шанси цілеспрямовано кудись потрапити. Це законно. ЗСУ — дійсно для кожного, адже там настільки багато людей, що можна сміливо казати: це не чиясь, а наша армія, армія українців. І що більше людей зі здоровим глуздом туди приходитиме, то більше позитивних трансформацій ми бачитимемо.
Наразі мій головний план — усунути фактор, який заважає втілювати решту планів. Що менше живих ворогів, то простіше рухатися далі. Мені здається, воєнний стан у країні триватиме ще півтора-два роки. Що зміниться за цей час для мене? Подивимося. Зараз я хочу отримати бронзового зайця — таку статуетку дають співробітникам Ubisoft, які працюють з компанією понад п’ять років. А згодом, може, зазіхатиму на срібного й золотого — за 10 і 15 років відповідно [усміхається]. Та зараз потрібно, щоб кожен робив свою справу на своєму місці. Ми не обирали реальність, у якій опинилися, але мусимо до неї адаптуватися — і перемогти.
5 коментарів
Додати коментар Підписатись на коментаріВідписатись від коментарів