Мартин Чаов работи като софтуерен архитект в SBTech. Той е архитект/дизайнер на софтуер спечелил множество награди за най-добър и иновативен продукт в бранша. На събитието на 20-ти юли „JS OOP, Classical, Functional and Prototypal“, той ще засегне теми като класическо и прототипно ООП, свързани обекти, „засенчващи“ свойства и много други. Сега той разказва кое е най-голямото технологично предизвикателство, с което се е сблъсквал, как го е разреши и много друго.

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

С JS започнах да се занимавам съвсем случайно. Библиотеки като jQuery/MooTools/Dojo имат голяма заслуга за това да започна да програмирам отново. Като студент Assembler и C++ ме отказаха от тази професия.

С JavaScript за първи път усетих тръпката от това да напишеш нещо свое, в този език нямаш нормалните ограничения наложени от компилатора. Почти всичко, което напишеш, стига да е с правилен синтаксис, ще работи… по един или друг начин. С JS започнах да пиша компоненти за потребителски интерфейси (с jQuery разбира се), тъй като интересите ми ме бяха насочили в дизайна и потребителските изживявания. Постепенно се запалих по програмирането и на други нива. В момента пиша код и за сървъра и за клиента.



 

Събитие на фокус:

Building scalable applications for the cloud

 


 

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

Това е много добър въпрос, до сега не съм се замислял, какво ме мотивира в това, което правя! Изпитвам удоволствие, като се справя с някаква задача/проблем. Да съм първият, който може да се справи с проблема, сякаш ми харесва още повече, а ако съм единствения – най-много. Спортна злоба! Програмирането е необятно поле. В момента интересите ми се изместиха към писането на сървърен код и тъй като нямам сериозен опит там, всеки ден откривам по някое ново парче от пъзела.

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

Доста са, даже продължават да излизат нови и нови. В момента разработвам платформа, която да контролира презентацията на готовите ни продукти чрез уеб интерфейс.

Ако трябва да избирам обаче, това ще е „SBTech Match tracker“. Това беше първата ми предизвикателна задача в SBTech. „Match tracker“ e компонент, на който се визуализира текущото състояние на дадено спортно събитие. Състоянията разбира се, са анимирани, в зависимост от това, какво се случва на терена. Пример: футболен мач, отбор А има пряк свободен удар. В нашият компонент анимираме стрелка от приблизителната локация върху терена в посоката на изпълнение на удара. Аналогично, за други състояния и спортове. Доста удобно, да задържи вниманието на потребителя върху страницата, особено ако няма възможност да гледа или слуша живо предаване.

Проблемите за решаване в този компонент бяха много: трябва да работи на мобилни устройства, да е донякъде адаптивен според екрана, да покрива различни клиентски платформи. Да има интерфейс за комуникация, който да може да работи с различни потоци от данни идващи от сървъра. Да се разширява лесно, за да се добавят нови спортове и т.н. Производителността на анимацията да е консистентна и да не пада под 30 кадъра в секунда.

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

За съжаление, по това време в компанията, бях единственият фронт-енд, с опит в дизайна и анимацията и като цяло работех сам по клиентската част на „SBTech Match tracker“.

Трудно беше да взема решението дали да го направим на Flash или да ползваме HTML5 и Canvas. Аз реших да се захванем с HTML5, въпреки че нямахме много силно мобилно приложение по това време. Това да поддържаме мобилните клиенти обаче, ограничаваше възможностите ми да работя и с библиотеки. По това време разчитахме на 3G и нямаше възможност да се зарежда допълнителен код.

Беше ми предизвикателно да избера и добра архитектура за същият този продукт, която да може да се разширява във времето с не дефинирани към момента екстри. JavaScript нямаше класово наследяване по това време, нямаше и компилатори, транспилатори и прочее, или поне не знаех за такива. Единствената архитектура, която познавах беше класическото наследяване от времето ми в университета, където изучавах C++. С доста четене на статии от Крокфорд и други JS светила, успях да направя собствена „ООП“ архитектура за компонента, която да се разширява чрез композиция но да прилича на класическо ООП.

И не на последно място имаме и навързването с HTML/CSS анимациите. Анимирането на текстове в CANVAS не е оптимално, за това трябваше да напиша CSS анимации, за част от логиката. Това ме обвързваше с допълнителен HTML код, който трябва да се управлява и синхронизира с анимациите които се движат в CANVAS.

Интеграцията във съществуващият софтуер не беше тривиална, но там вече не бях сам. Колегите ми свършиха страхотна работа да интегрират „Match tracker“ в съществуващия софтуер и да го свържат с това, което друг екип беше направил на като сървърен код.

Бях допуснал грешки в дизайна на кода, които открихме и поправихме във времето с екипа. Този продукт беше първата ми стъпка към софтуерен архитект. Тук за първи път трябваше да мисля за много проблеми, с които не се бях сблъсквал преди това. Хареса ми! Къде съзнателно или несъзнателно, продължих да дълбая в тази посока.

Продукта за следене на статуса на спортните събития в реално време, пуснахме официално за най-голямото гейминг експо „ICE Totally gaming„. Спечелихме награда за иновации в бранша през 2014-та година на база цялостният ни софтуер за спортни залози в реално време.

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

JavaScript е уникален в това да прилича по малко на доста други езици, като синтаксис и нотация. Съветът ми към по опитните, които идват от други среди, е да не се опитват да пишат на езикът X на JavaScript. Заслужава си да се отдели малко време, да се научат особеностите и възможностите на езика.

Съвсем начинаещите бих посъветвал, да започнат просто с код, който се изпълнява директно на клиента. Ако се впуснат от самото начало в компилатори, транспилатори, модул мениджъри, ES6, ES2015, ES2017, разликите между тях, какво и къде могат да ползват, ще има повече объркване и по-малко ползи за тях.


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

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

Прочети още:
„Основната работа на всеки един лидер е да стане излишен“ – Веско Колев, Director Software Engineering, Progress
Умен дом с openHAB и Eclipse SmartHome. Интервю с Димитър Иванов

Share This