Живко Петьов е CTO в Abilitics. Един от неговите последни проекти е внедрен в 28 държави, използва се от 30 000 души и е преведен на 19 езика. На събитието на 26-ти септември „Beyond OOP: Functional Programming with C#“, той ще засегне теми като: Functional Inversion of control; Cross-cutting concerns; Асинхронен функционален код; Функционална архитектура и много други. Дни преди събитието му зададохме няколко въпроса, вижте какво отговори той:

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

Като ученик се занимавах със състезателна математика и информатика, но нямах допир до правенето на софтуер в реалния свят. Първият сблъсък с .NET беше в университета – един курс по .NET на Светлин Наков през 2005-а във ФМИ, от който се запалих. Малко след това започнах да се занимавам професионално с .NET. Оттогава съм се занимавал с много различни технологични платформи, но C# и .NET си остава технологията, на която тече мисълта ми.

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

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

Не на последно място ме мотивира това да създавам продукти/проекти, които оставят следа и които хората харесват.


 

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

Testing NodeJS Code

 

 


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

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

Следната случка беше особено интересна. Разработвахме нещо като „Dropbox“ за авиоиндустрията – мобилно приложение за iOS, разработено с Xamarin. Накратко: документи от сървъра се синхронизират с мобилното приложение и това трябваше да става в background режим без приложението да е пуснато. Проблемът беше, че background sync в iOS беше току що пуснат като capability, беше чуплив, нямаше примери и добра документация как се имплементира. Съответно изникваха грешки, които се появяват на random принцип – понякога работи, понякога не.

Отделно нямаше как да се дебъгва или изпълнява в изолация чупливия код. И след всяка промяна в кода трябваше да се изчаква 1 час докато започне синхронизацията и се тества промяната. API-тата на Apple не позволяваха друг вариант.

Как го разреши?

На първо място рефакторирах и опростих кода максимално, използвайки похвати от функционалното програмиране като чисти функции, immutable типове данни и lock-free thread синхронизация. След това прибягнах до scientific метода – правя промяна в кода, с която целя да потвърдя или отхвърля дадена хипотеза и един час по-късно след като се изпълни кода, анализирам и документирам резултатите. След няколко такива итерации успях да разгадая как работят API-тата на Apple и след това всичко тръгна гладко.

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

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

 


 

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

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

Прочети още:
6 от най-популярните Machine Learning алгоритми – приложения и възможности
Умен дом с openHAB и Eclipse SmartHome. Интервю с Димитър Иванов

 

 

Share This