Николай Костов е софтуерен инженер с умения, обхващащи почти всяка сфера на програмните езици и технологии. Портфолиото му от проекти е изключително разнообразно, като една от любимите му разработки е популярна система за автоматична проверка на състезания и изпити по програмиране. Николай е и сертифициран треньор на Microsoft, отличен с наградата „30 под 30“ от Forbes България и „Студент на годината в България“.
Николай, как започнахте да се интересувате от програмиране?
За голямо щастие моят път в програмирането започна доста рано. Започнах да се интересувам още когато бях 6-ти клас и оттогава то леко-полеко се превърна в мое хоби, а впоследствие и в професия. Не съм имал никога ментор или човек, който да ме насочва в тази област. Интересното е даже, че в гимназията (НПМГ) учих химия и биология – нищо общо с програмиране и въпреки това, запазих интереса си към него.
Най-първият ми досег до някакъв вид кодене беше докато играех една стратегическа игра писана на BASIC и тя се счупи, пращайки ме директно в интерпретатора на езика и показвайки ми кода на играта. Започнах да променям някакви неща, леко полеко започнах да разбирам инструкциите и тяхната идея и концепция.
По-късно, заради състезанията, минах на C++. Започнах като ученик да изкарвам пари от проекти на PHP, писал съм на Visual Basic, Java, JavaScript и др. После научих за C# и оттогава той ми стана любимия език.
Вие имате богат кариерен опит и участие в различни проекти – кой проект се установи като любим за Вас?
Много от проектите, които съм разработвал са ми били страшно интересни. Във всеки е имало по нещо предизвикателно и сложно. Ако трябва, обаче, от всички проекти, които съм правил, да избера само един – това ще бъде OpenJudgeSystem.
Накратко, това е уеб приложение с отворен код, което писах преди повече от 7 години и до днес се използва активно. То представлява система за състезания и изпити по програмиране, в която автоматично се проверяват задачи на различни технологии (C#, C++, JavaScript, Java, Python, PHP и дори CSS). Предизвикателното в създаването на системата беше така нареченият “sandbox” (или restricted process). Той има за цел да стартира кода на потребителите (студентите) в ограничена среда, която да ги пази от това да правят злонамерени действия с програмите си върху тестващия сървър. Тъй като цялата система е създадена на Windows, а в Windows такава защитена среда няма вградена, се наложи да я имплементирам, използвайки т.нар. “Windows API”, което заедно с тестването беше едно от най-интересните неща, които съм правил.
По какво работите към този момент и какви технологии използвате най-активно?
Към момента най-активно и ежедневно използвам C#, .NET Core, ASP.NET Core и на работа, и в свободното си време. В компанията, в която работя – ZenCodeo, разработваме активно различни проекти, от адвокатски софтуер, който се интегрира автоматично с американския съд и подготвя необходимите документи за делата, през системи за финанси до абстрактна уеб-базирана система с възможности за уеб телефония, менажиране на маркетинг и sales информация, откъде идват клиентите и как, данни за тях, кол-центрове и служители в тях и още.
Като “Студент на годината, 2015” и носител на много награди от национални ИКТ олимпиади, как бихте оценили познанията, които сте получили в средното училище, а на по-късен етап и от висше учебно заведение?
Определено съм доволен от гимназиалното и университетското си образование. В гимназията, ходейки по състезания по информатика и информационни технологии и прославяйки гимназията, директорът тогава (г-н Петър Недевски) беше изключително разбран и даваше на състезателите голяма свобода да се подготвяме за тях по време на часовете и дори вместо часовете в училище. Това смятам, че доста ми помогна да се развия като програмист още в ученическите си години.
В университета изучавах компютърни науки във ФМИ. Там получих доста важни фундаментални знания по математика, които и до днес смятам, че са ми полезни. Обучението по софтуерните дисциплини, обаче, не беше на нивото, което очаквах. Сега карам магистратура в НБУ и съм доста доволен от базата, от преподавателите и от съвременния материал. При всички положения, обаче, 4 години в университета дават едно добро начало за сериозна работа в сектора. Друг е въпросът дали не може същата основа, човек да получи и за по-малко от 4 години.
Зад гърба си имате много фрийланс проекти. Какви са ползите на фрийланс работата и защо този вид ангажименти са предпочитани от много специалисти?
Фрийлансването дава една голяма свобода на човека да работи в удобно за него време, на приятно, избрано от него място. В IT сектора, понякога, тези ангажименти са дори по-добре платени от работата в някоя компания. Минусите са, че вие сте човекът, който трябва да си търси клиентите и да комуникира с тях, което понякога е доста неприятно занимание за един програмист.
Кой бенефит на работодателя не може да замести дори най-добрия фрийланс ангажимент?
Сигурността. Компанията поема отговорността да се грижи винаги да има клиенти и проекти. В компаниите има и хора, които да пазят програмистите от директен сблъсък с клиентите. Всички други предимства, които компаниите обещават (храни, паркинг, работа от вкъщи, допълнително здравно осигуряване, карти за спорт и т.н.) всеки фрийлансър, ако има желание, може да си ги набави.
Бихте ли се съгласили с твърдението, че болшинството от IT компаниите се движат в определена, единна и общоприета рамка на финансовите възнаграждения на специалистите?
Мисля, че има някаква обща рамка и това е нормално и предвид, че заплатите в нашия сектор на този етап отговарят на положения труд и уменията на програмистите, смятам че това е хубаво. Тази рамка, обаче, е доста широка и заплатите варират в доста широки граници.
А в какъв размер смятате, че трябва да бъде едно разумно финансово възнаграждение на Senior и Junior дивелъпър?
Junior позициите в момента се движат в огромен диапазон (от 800 до над 2000 лв.) като много зависи от технологиите и дори града. Според мен за начинаещи програмисти (не стажанти) заплатата трябва да е в диапазона от 1500 до 2000 лв. чисто. И градът не трябва да има значение за заплатата. Ако си добър, няма значение, че си в Бургас, например.
За Senior позиции отново има голям диапазон на заплатите. В .NET технологиите съм забелязал, че заплатите варират от 4000 до 8000 лв. чисто. Моето мнение е, че тук в България за един Senior разработчик с поне 6 години опит трябва да се плаща между 6000 и 9000 лв. чисто, предвид че повечето компании разработват продукти или продават услуги на държави, в които това е под минималната заплата за подобни специалисти.
Кой е най-ценният съвет, който разбрахте в течение на професионалната си кариера и бихте дали на нашата аудитория?
От опита си съм се убедил, че най-успешните колеги са тези, които не се отказват и завършват нещата до край. Успех!
Интервюто проведе Вяра Стефчева