13 август, 2022

Даниел Йорданов става част от направление „Информационни технологии и дигитална трансформация“ на А1 през 2015 година, след сливането с blizoo. Там той работи от 2010 г. като ръководител на екипа, който отговаря за разработването и поддръжката на основната CRM система в компанията, базирана на .NET Framework и ползваща C# като основен език за програмиране. След присъединяването на екипа му към А1 тази система е интегрирана в останалите платформи за оперативна поддръжка. В резултат на добрите резултати екипът последователно придобива по-широк обхват на дейности и отговорности в компанията. Впоследствие Даниел получава покана от мениджмънта да поеме проекта за модернизация на сайта a1.bg и self-care приложението Моят А1. В началото работи в сътрудничество с външна компания, но с течение на времето екипът на Даниел се разраства и поема разработките, като от близо година отговаря за тях самостоятелно. Решението за a1.bg/Моят A1 е базирано на микросървиси, написани на .NET Core, с FrontEnd решения, базирани на React, native IOS/Android, React Native. Даниел има дългогодишен опит в работата със C#, HTML, CSS, Javascript (JQuery). В последните години добавя към програмните езици, с които борави, React, NodeJS, Python, Bash. Отвъд директно свързаните с програмирането технологии, в посока деплоймънт има опит с containers (Docker, Podman, Buildah), Kubernetes и OpenShift, които счита за изключително важни заради микросървис архитектурата.

Даниел, разкажи ни повече за твоя старт в кариерата. Как се насочи към информационните технологии и по-специално към разработването на софтуер?

Моят старт в професията беше отдавна и е доста по-различен от този на голяма част от хората в индустрията. Учех в Софийската математическа гимназия и бях убеден, че ще се занимавам с приложна математика, до момента, в който получих задание по информатика. Това беше и първият път, когато се докоснах до програмиране. Хареса ми дотолкова, че много бързо промених визията си за бъдещето – от човек, който учи и е решил да се занимава с приложна математика, в човек, който се насочва към информатиката. Сравнително късно започнах с програмирането. По време на втората година от следването ми по информатика започнах и първата си работа като програмист – през 2005-та година.

Интересен кариерен обрат! Дълги години работиш със C#, HTML, CSS, JavaScript, боравиш с React, NodeJS, Python, Bash, имаш опит с Docker, Podman, Buildah, Kubernetes и OpenShift. Направо може да се каже, че си технологичен полиглот – как се стига до това ниво? Има ли основа, която е задължителна?

Да, това са технологии, с които работя в последно време. Най-дългогодишен опит имам със С#. Преди 2-3 години започнах да се занимавам с React, контейнерните технологии – OpenShift, Kubernetes. Тогава поех екипа „Разработка на потребителски софтуер“ в А1, който ръководя и в момента. Преди това не бях използвал тези технологии, но доста бързо “влязох в час”. Преходът за мен беше от конвеционалното програмиране, както аз го наричам, с HTML, JavaScript, библиотеки като JQuery и т.н., към React и въобще към модерните front-end frameworks, React, Angular, Vue. Имаше доста за учене, със сигурност бих го описал като предизвикателство

Мисля, че е показателно за многобройните възможности за професионално израстване, че вече 12 години се развивам в компанията. Първо като член на екипа на Blizoo, а след това и като част от А1. В Blizoo ръководех екипа, който изграждаше система, която правеше почти всичко в компанията, включително имаше функционалност за обслужване на клиенти. С колегите ми бяхме стигнали до ниво провизиониране на услугите. Системата, която бяхме изградили, беше базирана на така наречените конвенционални технологии и аз вярвах, че вече съм измислил едва ли не всичко. Но когато поех екипа, с който работя в момента, пред мен се откриха изцяло нови хоризонти, включващи контейнерни технологии, modern JavaScript frameworks и т.н.

А по какви проекти работите сега? Кои са чисто технологичните предизвикателства, които срещате?

През последните години отговарям за екипа в А1, който се занимава със сайта на компанията и приложението за самообслужване Mоят A1. Дотогава те се разработваха от външна компания и практически трябваше да създам нов екип, който да поеме задачите, изпълнявани преди това от външната компания. Необходимо беше и да направим плавно предаване на знания, така че да сме запознати с проекта. Започнах с екип от 3-4 човека, а в момента сме вече 26, което е доста сериозен ръст в рамките на изминалите две-три години.

От около година започнахме да участваме в проекти, свързани с партньори на А1 И разработваме приложения и за външни компании. Основният технологичен стек, който се използва конкретно в моя екип, включва ASP.NET Core за back-end-а и React – за front-end. Стараем се да създаваме колкото се може по-голяма база от „преизползваем“ код, за да може, когато се наложи, да не започваме отначало, а да стъпим върху основа, върху която да надграждаме.

В А1 се работи и с многообразни други съвременни технологии –  с Node.js, Java и др.

Споменахте, че екипът, който ръководите е 26 човека. Какви са техните позиции и отговорности?

Да, вече сме 26 човека и плановете са и още да се разширяваме. Екипът ми е обособен в 3 основни звена: mobile development, front-end development и back-end development. Стараем се хората, които работят в domain-a, свързан със сайта на компанията и приложението за самообслужване Моят A1, да могат да работят и по съвместни проекти с фирми-партньори. Постигаме това, като разработваме компоненти, които могат да се използват за база и при други проекти. Вярвам, че това е полезно и за тяхното професионално развитие, дава им нови идеи и поле за изява.

Структурата в екипа, както и в цялата компания, е сравнително плоска по отношение на отговорностите и позициите. Визията ни е с течение на времето да започнем да разделяме екипа на по-малки екипчета, които да работят заедно по популярните вече Agile или Scrum методологии. Въпреки това, към момента аз се старая да нямаме стриктно разграничаване на ролите на хората в екипа.

Екипът ни се разраства бързо и плановете са да расте и занапред. Каним да се присъединят към нас както junior-и и стажанти, така и хора с повече професионален опит. По отношение на младите кадри, смятам, че е много ценна възможност, както за тях, защото имат възможност да учат тънкостите на професията в реална бизнес среда от по-опитните колеги, така и за нас – ние винаги се радваме на новите идеи на младите хора. Пример за бързо развиващ се професионалист е и Мелик Пехливанов, софтуерен инженер , част от екипа ми, с когото работя успешно в последните 2 години.

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

Как ти се отразява лидерската роля и какви предизвикателства крие тя? Ти сподели за хубавата част, виждайки израстването на тези junior-и във вече, така да се каже, по-опитни специалисти в различните екипи на компанията.

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

Целият процес на изграждане на екипа, който ръководя, и работата с колегите в него, за мен е една цяла нова ера. Чувствам голямо удовлетворение от постигнатото развитие – от това, че започнахме 3-4 човека и се разрастнахме многократно. Горд съм, че непрекъснато се доказваме и надграждаме.

А според теб какво не може да си позволи един ръководител на екип?

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

Може ли да споделиш някоя тънкост или да дадеш ценен съвет на база на твоя опит до момента на разработчиците, които са 90% от нашата аудитория? 

Съветът ми е към по-младите колеги, които сега навлизат в професията. В началото на кариерния си път в много по-голяма степен повечето хора наблягат на технологиите. “Коя е най-новата? Кой програмен език да науча?” А всъщност, най-важното е не на какъв език, а какво точно ще напишеш. За да напишеш нещо качествено, трябва да го разбираш. Затова е много важно хората да развиват уменията си, да разбират проблематиката на това, което разработват.

Има много случаи, в които хората създават start-up, който е свързан с нещо, което ги вълнува. Там нещата се получават от само себе си. “Аз разбирам конкретиката, защото това аз съм си го измислил”. Обаче, когато пишеш софтуер за друга компания, е много важно да се стараеш максимално да вникнеш в бизнес логиката и проблематиката. Ясно е, че когато е необходимо да научиш React, го правиш. Когато трябва да научиш как да се интегрира конкретна система – също. По-трудното е да се навлезе в конкретната бизнес логика, да се погледне през очите на потребителите, защото ако те не използват софтуера, то той губи смисъл. Нашата цел е да разработим софтуер, който да е максимално лесен, удобен и приятен за ползване от хората, които ще работят с него, а не просто да изпълним заданието. Реално, този подход в последно време вече започва да разделя хората в индустрията. Има програмисти, които се превръщат в кодъри. Те получават задача и просто пишат на конкретната технология. От друга страна, има и разработчици, които са problem solver-и – това са хора, които разбират проблема, и могат да дадат конкретни предложения.

Именно това е ключово за мен, като ръководител на екип, и се радвам, че това е и цялостната визия на компанията. В А1 изграждаме професионалисти, които навлизат в дълбочина в естеството на бизнес логиката и могат да решават проблеми. При нас динамиката на работа налага колегите да се научат много ясно да разбират какво точно прави екипът ни, но и защо го правим. Това е различно и много по-ценно в дългосрочен план от буквално изпълнение на задание. Затова моят съвет е:“Наблягайте върху това да разберете проблема, който вашият код трябва да реши. Каква технология ще използвате, зависи от много фактори и се променя през годините”.

Кои са задължителните въпроси, които задаваш на интервю с кандидати за твоя екип? 

През годините съм използвал различни стилове на водене на интервю. Имало е такива, при които техническите въпроси са били под формата на логически задачи – с цел по-скоро да разбера начина на мислене на потенциалния колега. Има и случаи, в които подготвяме строго технически въпроси. Важно е човек да разбира достатъчно добре съответната технология, когато кандидатства за определена позиция.

Голяма част от хората, които сме наемали за екипа, са били junior-и и затова съм малко по-благосклонен към факта, че може да не знаят всичко. Понякога самите технически въпроси в интервюто са, за да опозная човека. В подобни моменти, дори да не получа точния отговор, анализирам начина, по който кандидатът подхожда към въпроса. Един честен отговор “Аз това не го знам” понякога е нещо много хубаво. По-добре да чуя това, отколкото да се опитват да ме излъжат, да уцелят и т.н..

За интервютата с по-senior кандидати се подготвям с по-сериозни въпроси, но дори и за тези позиции е по-важно да намеря човек, който ще пасне на моя екип. През годините съм попадал на разработчици, които са били с много добри технически знания, но просто не се вписват в екипа. Много е важно към екипа да се присъединят точните хора.

А кои са най-ценните качества и умения, които търсиш у кандидатите?

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

Удовлетворението от работата винаги личи и според мен води и до по-висока мотивация и до по-добри резултати.

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

Може ли да споделиш какви хора търсиш точно за твоя екип?

Както вече споменах основните технологии, с които работим, са React и C#. В други екипи, с които работим, се ползва Node.js. Имаме възможности и за Agile хора. Търсим колеги, които имат желание да надграждат знанията и уменията си и това е нашата дългосрочна политика. Фокусът ни в момента са C# и React. Ще се радваме, ако към екипа ни се присъединят и хора с много добри познания по OpenShift и ORM библиотеки (EF Core, Hibernate/NHibernate). Такива хора ще се търсят и занапред в компанията.

Как се промени процесът на софтуерна разработка през годините и какви са тенденциите за в бъдеще?

Най-ясната тенденция е навлизането на виртуалните технологии. Когато аз започвах професионалния си път, се работеше с хардуерни машини, малко по-късно навлязоха и виртуални машини. След няколко години се появиха контейнерните технологии, а те дават огромни възможности за оптимизиране на хардуера, което пък отвори огромни възможности за всякакви технологии. Неслучайно вече се развиват machine learning, изкуствен интелект и други технологии, които изискват голяма изчислителна мощ. Без развитието на виртуализацията и контейнеризацията в последните 15-тина години, нямаше да бъдем свидетели на настоящото развитие на технологичния свят.

А как се промени визията за класическия програмист през годините?

Стана много модерно да си програмист през последните 7-8 години. Софтуерните академии дадоха възможност на много хора да учат и дори да се преквалифицират в тази сфера. Някои от тях откриха призванието на живота си и установиха, че това, което са учили, не им харесва толкова, колкото да програмират. Помня, когато за първи път се появи един филм за Марк Зукърбърг “Социална мрежа” и беше много забавно, когато изведнъж се оказа, че хората започват да харесват програмисти. Явно е имало някакъв вид nerd-щина, остарели стереотипи покрай професията, която постепенно се променя. В днешно време професионалистите, които се занимават с разработка на софтуер, са толкова широк спектър от личности, че е много трудно да кажем, че “програмистите са ето такива”. Вероятно преди 20-тина години наистина хората, които са се занимавали с програмиране, е можело да бъдат квалифицирани като по-странни типове, но вече не е така.

Тагове: , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,