Представяме ви Виктор Ташков, Software Engineering Manager в компанията HedgeServ. Той има повече от 15 години опит в ИТ индустрията, което е и причината DevStyleR да се свърже с него. Какъв е кариерният му път и как изглежда софтуерната индустрия през призмата на един Team Lead?
Виктор, разкажи ни повече за своя старт в кариерата, как се насочи към компютърните науки и по-специално към софтуерната разработка?
Още от дете имам страст към компютрите и по-специално, разбира се, към игрите. Но в даден момент попаднах на книги за програмиране и те събудиха интерес в мен, как аз бих могъл да започна да пиша тези игри. Не мога да кажа, че има момент, в който съм взел твърдо решение, но лека по лека се насочих към софтуерната индустрия. Спомням си, че когато трябваше да да кандидатствам след седми клас видях в един справочник Технологично училище „Електронни системи“(ТУЕС). Тогава някак ми се избистри в главата, че това може да е моята професия.
Преминал си обучение през големи “ковачници за кадри” – ТУЕС, ТУ София, Военна Академия “Г. С. Раковски”. Защо избра точно този път?
Избрах ТУЕС, защото може би беше единственото училище, което предоставяше възможност за обучение точно в разработка на софтуер. След което логичното продължение бе Техническия Университет (ТУ). Така или иначе половината преподаватели в ТУЕС са от там. Колкото до Военната Академия, реших да се насоча към нещо по-различно от техническите училища, през които вече съм преминал и именно там изкарах магистратура. Решенията в общи линии винаги са били логични за мен, тъй като аз започнах със средно-специално по “Софтуерна разработка и компютърни системи”, което продължих и в ТУ.
Важно ли е разработчиците на софтуер да извървят целия този път, включително да завършат висше образование по специалността?
И да, и не. Не е важно дали си завършил висше образование по специалността, тъй като всички учебни заведения, особено в България, са не напълно адекватни към индустрията. Тя се развива в изключително бързи темпове и всеки ден се появяват нови и нови неща, които трябва да се учат. За стандартния начин на преподаване в университетска среда, наваксването е невъзможно. Но от друга страна завършването на висше образование доказва, че човек може да бъде целенасочен, може да отдаде необходимото, за да постигне една цел и не се отказва лесно. Поради тази причина е важно човек да покаже, че може да се справи с взимането на диплома. Все пак не е задължително условие, за да се демонстрират необходимите знания и умения. Много от хората с които работя и с които съм работил, са изключително добри професионалисти без да са завършили висше.
А къде смяташ, че е мястото на частните академии, насочени към обучение на желаещи да се занимават с програмиране? Допълва ли това обучение университетското?
Частните академии са една хубава инициатива, която се роди в рамките на нашия бранш. Тяхното място е, че те могат да послужат за бързо преквалифициране от една индустрия към нашата, тази на информационните технологии. Това е особено полезно за целия бранш, тъй като знаем, че има недостиг на работна ръка и на кадри, и това няма да се промени скоро. Тези академии също така могат да послужат и като допълнително обучение на учениците и студентите, които са първи курс. Ако един човек е в по-горните курсове обаче, моето мнение е, че за него би било вече късно, в случай, че не се е насочил да се образова по-рано.
Какви качества трябва да притежава един софтуерен разработчик, за да е успешен?
Мога да ви кажа аз на какво обръщам внимание, когато някой идва на интервю. Има три основни качества. Най-напред, той да е добър и приятен за общуване. Това е важно, защото хората са над 8 часа на ден на работното си място. Това е повече, отколкото прекарват вкъщи, следователно трябва да се разбират помежду си.
Второто нещо е това, което наричаме работна етика. На хората, които искат да бъдат разработчици, трябва да им се работи. Не е лесна професията и не е нещо, което се случва между другото и за което после се вземат едни пари. Изисква се много труд и голямо отдаване. Затова трябва да се демонстрира желанието, че искаш да работиш много.
На трето място са знанията и техническите умения – доколко човек има желание на учи. В тази индустрия това трябва да се случва всеки ден и ако има такъв, в който не си научил нищо, значи е загубен ден и трябва да наваксаш. Човек, който иска да влезе в бранша трябва да има желанието за учене. Ако сферата не му е интересна, то рано или късно това ще му попречи да бъде добър професионалист.
Ти имаш опит като ръководител на екипи от програмисти, включително успешно си изградил настоящия си екип. Как ти се отразява лидерската роля и какви предизвикателства крие тя? Какво не може да си позволи един ръководител на екип?
Лидерската роля е много интересна. Отразява ми се с повече умора, тъй като след толкова много години общуване с компютри човек свиква и намира начин да се разбира с машините, докато хората не са толкова праволинейни. Предизвикателна е ролята. Необходими са много знания в сфери, които нямат нищо общо с технологиите. Изисква се отдаване откъм работно време, но е и много удовлетворяващо, защото една голяма част от проблемите в нашата индустрия са свързани с лош и некомпетентен мениджмънт на ниво Team Lead. Затова, когато имаш шансът да промениш този факт, е изключително приятно. Относно какво не може да си позволи един Team Lead, то това е да бъде технически неадекватен. Имаше случаи преди години, когато ръководителите на екипи не бяха технически лица, а чисти мениджъри и това се отразяваше страшно негативно на професионализма и на работата в екипа. Също така има тенденция, че когато човек акостира на такава позиция, забравя какво е да си обикновен програмист и забравя какво е ежедневната работа. Това също се отразява негативно на неговата преценка и умения да ръководи екипа.
А как повлия на твоя екип извънредното положение и беше ли трудно? Отчиташ ли промяна в ефективността при работа от вкъщи?
Разбира се, че повлия и има промяна в производствеността. Ние изначало сме децентрализиран екип и имаме всички технологии за да работим и общуваме от вкъщи, но въпреки това на първо място, аз нямам възможност да усещам духа в екипа, настроенията, следователно е по-трудно да се намесвам адекватно. От друга страна, на лично ниво, всеки един служител изпитва трудности да се настрои за работа от вкъщи. Особено ако има деца или пък няма свободно място, на което да се настрои за работа. Това започва да влияе върху производителността на хората, защото България не е страна, в която човек да разполага с една свободна стая, която да може да направи на кабинет.
А каква е тайната на успешния екип? Каква роля играят работната обстановка, фирмената култура и компанията като цяло?
Не мога да кажа, че съм намерил тайната на успешния екип, но това, което мисля в момента е, че успешен екип се изгражда, когато хората се допълват и се разбират помежду си. Когато са личности. Това е стартът. Оттам нататък екипът сам по себе си започва да се развива и да напредва. Разбира се, фирмената култура и обстановка са изключително важни, защото екипът не живее на остров, а в рамките на цялостната система в компанията и един лидер и екип не могат да променят всички. Компанията трябва да предостави възможност на екипа да се развива и да бъде насърчаван в своята работа.
До каква степен в момента се занимаваш с писане на код и какъв технологичен стек използвате? По какви проекти работите?
Аз се занимавам с писане на код ежедневно, както съм го правил и преди да стана ръководител на екип. Това е културата на нашата компания, а и аз самия дълбоко вярвам в това, че независимо от мениджърската позиция, ако не пишеш код поне от време на време, не разбираш това, което правиш – не си технически човек и ще загубиш връзката с работата в съвременния бранш. Стакът който използваме е основно Angular framework за Front-еnd, а за Back-еnd използваме Java и Node.js. За бази данни използваме MS SQL. Разработваме уеб приложение за финансовия сектор, което представлява single page application.
Кое е ключовото за теб, когато участваш в интервю за кандидат за твоя екип? Имаш ли check list?
Не бих казал. Ключовото е да са приятни хора, на които им се работи и желаят да учат постоянно. Още от първия момент на влизане в стаята за интервю прави впечатление начинът на общуване на кандидата. Елементарни неща от рода на това, дали е дошъл на време, дали е заинтересован от работата и технологиите, или просто е там, за да провери какви пари може да му се дадат.
Поговорихме за образование, за провеждане на интервюта. Изниква един въпрос. Смяташ ли, че кандидат за позиция разработчик на софтуер трябва да знае какво е Свързан списък и въобще, какво според теб е добре да се знае като абсолютен минимум?
Не смятам, че трябва да знае какво е свързан списък, но не мога и да кажа какъв трябва да е минимумът. В крайна сметка няма една позиция за разработчик на софтуер, а всичко зависи от това, компанията какви изисквания има и какъв продукт разработва. Не смятам, че има единен стандарт. Понякога имаш нужда от някой, който да извършва елементарни задачи, но понякога имаш нужда от някой, който да създаде приложение като Facebook. Поради тази причина няма как да има минимум от знания, които да се изискват. Конкретно за “Свързания списък”, ако човек смята да кандидатства за работа, в която се изискват архитектурни решения, то би трябвало да има идея какво е.
Продължаваш ли да се учиш ежедневно в твоята работа и в каква посока са твоите интереси и източници на знания като книги, подкастове, платформи за обучение?
Уча се всеки ден. Както на работното място, така и вкъщи. Основните ми интереси са свързани с всичко, което е способно да подобри ежедневната ни работа. Различен framework, който да използваме, различни езици и среди, но също така и аспекти, свързани с по-философската страна на разработването на софтуер – архитектурни решения, начин на структуриране на разработката на софтуер, бизнес процеси и т.н. Като източници, залагам на различни конференции и видеа, книги и блогове, случайни статии на различни хора в интернет. Нямам нещо конкретно, въпрос на късмет е дали ще попадна на нещо интересно.
Какво ще препоръчаш на всички, които тепърва стартират своята кариера и искат да достигнат твоето ниво? Откъде да започнат?
Човек учи по два начина. С работа и с ментор. Препоръчвам и двете. Няма смисъл просто да се четат книги и да се назубрят неща. В нашия бранш това не е функционално. Трябва бързо да намериш нещо, което да направиш, да започнеш да опитваш. Да грешиш и да се учиш от грешките си. Много помага, когато и има кой да ти показва и да ти гледа в ръцете.
Финален въпрос. Каква е твоята прогноза за развитието на софтуерния сегмент и какви технологии ще се търсят през следващите години?
Прогнозата ми е, че гладът за кадри ще расте, както у нас, така и навсякъде по света. Но не можем да имаме и прогноза в краткосрочен план, тъй като това, което днес се случва като програмисти и технологии, преди 10-15 години никой не можеше да си го представи. Нещата, с които аз стартирах вече са толкова остарели, че ги няма дори по учебниците. Като технологии бих прогнозирал, че Front-еnd ще се търси все повече и повече, тъй като тепърва приложенията ще започват да се пишат за web. Ще видим и какви нови уеб езици и framework технологии ще има. Аз имам големи надежди за WebAssembly като нещо, което ще отвори web приложенията за всякакви езици, а не само Java.
А какво смяташ за изкуствен интелект и machine learning?
Изключително заинтересован съм от тази тема и тепърва ще видим какво ще се случва. От една страна има хора, които казват, че сме преминали пределната точка и оттук нататък все по-ускорено ще имаме полза от изкуствен интелект. Това се вижда до някаква степен с всичко което вече се създава. От друга страна има хора, които се занимават с това от десетилетия и казват, че направеното до тук е много хубаво и дава резултати, но само в определени сфери и че няма да е отговора за създаването на Artificial General Intelligence.