Виктор Кирилов започва да се занимава със С++ още през ученическите си години, а след това на професионално ниво се занимава с него в Gameloft и ChaosGroup. От две години работи по собствени проекти с отворен код, а освен това е и създател на най-бързата за компилация и изпълнение библиотека за писане на тестове в C++. На събитието The Hitchhiker’s Guide to Building Time Reduction той ще разкаже защо компилацията на С++ е толкова бавна и как процесът може да се ускори. Преди това обаче ни разказа за страстта си към създаването на компютърни игри и какво би посъветвал всички, които сега започват да се занимават с езика.

Как започна да се занимаваш със C++?

В училище (ТУЕС – Технологично Училище Електронни Системи – към Технически Университет София) ни запознаха с Pascal още в 9-ти клас, а със C в 10-ти. Бях кандидатствал в това училище за да се науча да правя компютърни игри и след 10-ти клас попаднах на серия видео уроци по C++ в които се градеше конзолна игра (с графика от символи – в терминал). Сега сигурно има и по-добри начини да навлезе човек в C++, но тогава този източник ми се струваше като златна мина – изгледах всичко 2 пъти. В 11-ти клас вече беше ред на C++ в училище, но аз вече се бях сблъсквал с повечето от материала и ми беше доста лесно. Дипломната ми работа за 12-ти клас беше именно игра (този път с реална графика!) написана на C++.

Какво те мотивира в работата ти?

Ето 5 неща които ми хрумнаха веднага (редът не е от значение):

  • Елегантност – когато за решаването на сложен проблем бъдат използвани правилните абстракции и модели, така че резултатът да е разбираем, лесен за поддръжка и сравнително оптимален като производителност – тогава изпитвам истински кеф.
  • Качество – не обичам да върша посредствена работа – много рядко бих оправдал калпаво изпълнение на задача. Качеството е доста по-рядко несъвместимо с бизнес целите на компаниите, отколкото повечето хора предполагат.
  • Смисъл – проблемът, който решавам трябва да има някаква значимост – да е от полза на някого. Също така имам силно-изразени негативни чувства към лош мениджмънт и наличието на его.
  • Съревнование – малко или много, това е част от човешката природа – стремежът да изпъкнеш. Това да решиш труден проблем който другите не могат, или да го решиш по по-добър начин – престиж.
  • Кооперация – всичко по-голямо от гаражен експеримент изисква кооперация между хора. Освен това ние сме социални създания, а програмирането е така или иначе доста изолиращ занаят – всяка допълнителна капка човешки взаимоотношения е от полза.

Кое е най-голямото технологично предизвикателство, с което си се сблъсквал?

На последната ми работа трябваше да се справя с една лошо документирана черна кутия от друга фирма с доста бъгове – неприятен процес от поне 6 месеца. Явно нямам силно изразена жилка на reverse engineering – харесвам ясни задания и добра документация. Иначе е имало много други проблеми през годините, но те си идват с професията.

Как го разреши / разрешихте?

Конкретният проблем с черната кутия – след достатъчно време (и разбиране от страна на работодателя ми) постепенно прогресирах и разни неща ми ставаха ясни – и така докато не стигнахме до задоволителен компромис, който да е от полза и на клиентите ни.

Забелязал съм, че често ми трябва някакво време даден проблем да отлежи в главата ми докато ми хрумне оптималното решение. Поговорката, че утрото идва с мъдрост си е доста на мястото – понякога забиваме в даден проблем и спираме да мислим извън рамки – и в такива моменти работата по нещо друго (или просто релакса) са доста ценни.

Какво би посъветвал всички, които сега започват да се занимават със C++?

Бих посъветвал всеки да не се води по мъдрости като „exception-ите са бавни“ или „STL-а е зле“ на сляпо, ами да закопае сам и да осъзнае плюсовете и минусите – и на базата на това си познание да преценява дали дадена техника/методология/инструмент си струва за даден проблем. Почти винаги генерализациите са грешни, а в случая на C++ има доста догма. Но това е по-скоро съвет за всеки човек занимаващ се с каквото и да е… А конкретно за C++? Ако са тръгнали да се учат от източник, който не взима новите стандарти в предвид (C++11, C++14, C++17) – да си потърсят друг източник.


Стани част от потребителска група C, C++. Абонирай се и ще ти изпращаме информация за всичко, което предстои в групата.

Визия: Личен архив

Прочети още:
Обучение с Утвърждение (Част 1)
Кога и как да интегрираме автоматизация с Postman

Share This