Днес ви срещаме с Генади Сергеев от Progress, за да разберем каква история се крие зад бързото му израстване в компанията. Присъединява се към нея през 2009 г., докато е третокурсник по „Информатика”. Преди това е бил градинар, момче за всичко и какво ли още не — все работа, която може и да не е мечта, но му помага да изгради стабилни трудови навици.
През голяма част от ученическите си години играе популярната тогава Warcraft III с приятели и за първи път разбира какво е екипност. Дори заформят професионален e-sports отбор и заедно борят „Царството на хаоса” по турнири. Случайно или не, отборните играчи стават колеги, а Генади вече се е превърнал в един от лидерите в софийския офис на Progress и заема позицията старши директор „Софтуерно инженерство“.
Завършил си езикова гимназия. Как човек с хуманитарен бекграунд се ориентира към програмирането?
Паралелно с гимназията учих Pascal и в университета вече можех да програмирам. През 2008 г. колега от гейминг екипа ми изпрати линк към курс на академия НАРС, която тогава провеждаше обучения за Telerik, от които компанията си наемаше хора. Това беше добър шанс да се закача към нещо практично, защото тогава големият въпрос на всеки студент беше как да направи крачката от университета към реална работа. Към онзи момент това не беше толкова лесно, колкото е днес, а и бяхме във финансова криза. Не знаех абсолютно нищо за компанията, но знаех, че ако завърша успешно курса, ще си намеря работа в Telerik, елиминирайки голямата несигурност, която съществуваше.
Въпросът дали академичната теория има приложение в практиката все още стои на дневен ред. При теб как се случи?
Добрата теоретична подготовка много улеснява живота, ако искаш да влезеш в дълбочина на това, което учиш, и по-важното — да разбираш защо нещата се случват по определен начин. В противен случай наизустяваш, че когато стане А, следва Б, но не разбираш защо, което впоследствие може да е проблем, ако се наложи да вникваш в по-комплексни технически проблеми. Симбиозата между това, което учих в университета и в НАРС, за мен се оказа най-работещият вариант.
Разкажи ни накратко какви позиции си заемал в Progress.
Започнах като младши програмист – предоставях технически съпорт за един от UI компонентите ни. В началото работих с коуч, който ми помагаше с оперативните аспекти от работата, и ментор, който ми помогна да навляза в културата на компанията. Целта на този онбординг беше, а и продължава да бъде и днес, младшите програмисти да стигнат до ниво, на което да работят самостоятелно.
За кратко време преминах през фазата на техническа поддръжка и моят коуч и ментор прецениха, че мога да разработвам фийчъри. Тъй като навлизах бързо в нещата, започнах да получавам по-чести повишения. Освен това компанията растеше динамично и като бизнес, и като хора, което наложи по-опитните колеги да работят с нови технологии, нови продукти и нови екипи. В този момент някой трябваше да вдигне ръка и да каже „Искам да опитам да поема отговорност и да водя екип”, така че изявих желание. Имах само няколко години практика като програмист, но бях уверен, че ще се справя като лидер на екип, благодарение на геймърския ми опит.
Малко след това мениджмънтът ми предложи да поема и трите екипа с близо 50 човека, които разработваха Web UI продуктите. Трябваше да ги развиваме, да наемаме хора, да оперираме като самостоятелна инженерна организация. Предизвикателството беше голямо, защото такъв вид отговорности предполагат, че имаш нужните мениджърски умения. Ние ги нямахме. Допускахме грешки, но се учехме и от тях, и от по-опитните хора в компанията.
След време се оказах най-подходящият човек, който да застане начело и на останалите продуктови екипи за уеб компоненти, а след една от реорганизациите в компанията оглавих цялата инженерна група, която развива компонентния ни бизнес.
Какво ти помогна да израснеш толкова бързо в компанията?
Едно от нещата е, че владеех английски, а езиковата бариера към онзи момент беше проблем. Ако трябва едновременно да навлизаш в компонентите и не си много добре с езика, имаш да учиш две неща едновременно.
Самият начин, по който общуваш и влияеш положително на останалите хора, с времето придобива все по-голяма тежест. Ако съществува бариера, която не може да бъде преодоляна, тя често спира кариерното развитие, защото само технически умения не стигат. Във всяка IT компания професионалният път започва на ниво individual contributor, но след известно време човек се ориентира или към мениджърска роля, или продължава да програмира.
Каквото и да избере, от всеки човек на старша позиция се очаква да е лидер в компанията или в рамките на екипа си, да е ролеви модел, от който да се учат по-младите как да бъдат добри професионалисти. Днес повечето екипи са международни и ако нещо не е наред от езикова гледна точка, ако човек се затруднява да поддържа добре работеща комуникация с колегите, това автоматично означава, че ще му е много трудно да влезе в лидерска роля.
Истинската стойност на старши специалистите е, че успяват да повлияят на голяма маса от хора да започнат да гледат в определена посока и да развиват определени умения. На много места, включително в Progress, има корпоративни обучения в тази насока, но най-добрият учител е практиката и желанието.
Преминал си през няколко фирмени реорганизации и това обикновено са тежки процеси. Кои са най-ценните уроци, които научи от тях?
Първият е, че трябва да променя начина си на работа. Аз съм от хората, които имат склонност към хаотичен подход и това не е модел, който работи добре, когато трябва да застанеш начело на екип. Наложи се да осъзная, че начинът ми на работа е проблемен, след което да се опитам да съм по-организиран и най-вече предсказуем за моя екип, защото честите промени не влияят добре на екипния морал.
Другият голям урок беше по отношение на колаборацията ми с колегите. Когато си individual contributor или лидер на екип, ти програмираш рамо до рамо с твоите хора, но с нарастването на отговорностите работата ти от оперативна става стратегическа. В този смисъл понякога си свидетел на ситуации, в които екипът ти не се справя или някой допуска грешка, и имаш желание да се намесиш директно. Това обаче е контрапродуктивно в дългосрочен план, защото най-добрият начин екипът да се научи да оперира самостоятелно, е като го оставиш да допуска грешките, които са необходими, за да стигне до по-високо ниво.
Едно от важните неща, които разбрах, е че хората имат нужда от визия, която няма откъде да дойде освен от мен и колегите на моята позиция, така че е нужно да се фокусираме върху това, а не върху битови задачки. Всеки мениджър трябва да направи тази крачка, въпреки че е изключително трудна.
Говорейки за грешки, какъв е твоят толеранс към тях?
Има едно клише, че е важно грешките да не се повтарят, но аз не съм съгласен с него, защото понякога грешката е една и съща, но контекстът е различен и той изцяло променя ситуацията и динамиката. Това, което комуникирам с екипа ми, е че когато не знаем как да направим нещо, по-добре е да предприемем някакво действие, дори то да доведе до грешка, защото тя ще ни даде базова точка, от която да надградим следващите си действия. Другата стъпка отново може да се окаже грешна, но за мен важното е да има бърз поток от решения и корекции на действията, защото това винаги води към правилната траектория след определен брой опити. Разбира се, има ситуации, в които някои неща не се получават, но това е нормална част от работата.
Ако един junior developer също иска да стане успешен лидер, какво би го/я посъветвал?
Най-важната предпоставка е желанието да си проактивен. Ако забележиш, че нещо не е както трябва, да не седиш като статичен наблюдател, а да предприемеш активни действия. Това може да е технически проблем, за който всички знаят, но никой не иска да реши, или проблем, свързан с вътрешната документация, или дори някаква ситуация между колеги. С течение на времето всеки се убеждава, че това е начинът да започнеш да поемаш отговорност и имплицитно, без да го търсиш, ти ставаш лидер, защото хората виждат, че поемаш отговорност, когато е необходимо, и подобряваш нещата, без някой да го изисква изрично от теб.
Другото важно нещо е всеки стартиращ специалист да трупа свой социален капитал, като се среща с различни хора и е проактивен в комуникацията си с тях, защото това ще му помогне да научи много неща. И ако след време поеме лидерска роля, той вече има необходимите контакти, за да може по-ефективно да прилага промени, да търси съдействие и да се справя с предизвикателства. Като цяло основните неща, върху които акцентирам, не са толкова техническите умения — те са налични по подразбиране и се предполага постоянно да са на топ ниво, колкото социалните.
Светът се променя всеки ден, технологиите — още по-бързо. Върху какви твърди умения да се фокусират младите програмисти?
За всички тези години в индустрията станах свидетел на истински кръговрат на технологиите, в който добрите практики се сменяха на всеки три години. Така че от гледна точка на преходността на технологичните решения не е добра идея да има фокус върху определена технология или framework. Хората, които не са видели този кръговрат, не знаят, че любимата им технология след две години вероятно няма да е релевантна и ще трябва да започнат пак от нулата. Това, което трябва да осъзнаят, е че технологиите са временни и ще еволюират. Но не трябва и да приемат за негатив, ако работят с технология, която не се е променила през последните няколко години, защото често се случва така, че докато сменим технологията, кръговратът пак се е завъртял и следващият framework е сходен на това, което правим в момента, напр. ASP.NET Web Forms като компонентен модел и архитектура е много близка до новия Blazor framework.
В индустрията говорим за два вида умения — такива, които могат да се трансферират на ново място, и умения, които са специфични за определен бизнес. Една от грешките, които забелязвам в по-младите мениджъри, е фокусът да намерят хора, които имат и двата вида умения, но днес това рядко е възможно. Практиката ме научи, че е много по-удачно да дадеш шанс на хората с правилните трансферируеми умения и добра основа, защото след това те могат да развият „домейн” умения в рамките на няколко месеца. Затова за мен не е проблем да дам възможност на човек с Java background, ако иска да стартира работа в .NET екосистемата.
Ти си от хората, които спортуват редовно, но голямата ти страст са ските. Намираш ли допирателни между тях и работата си?
Научих се да карам ски, малко преди да започна да работя в Telerik, така че професионалното ми израстване съвпадна с развитието ми на скиор. И при двете с времето приемах все по-големи предизвикателства и попадах на все по-непознати места, но отговорността и тежестта на правилните решения при свободните ски са по-големи, защото при тях стигнеш ли до определено ниво, оттам насетне една лоша преценка може да е разликата между хубав ден в планината и ден, който приключва в болницата. Начинът това да не се случи е предварителната подготовка под формата на четене, осмисляне и планиране, дисциплина, предвидимост, учене от грешките и най-важното — от грешките на другите, и това е еднакво и в програмирането, и в мениджърската работа, и при карането на ски.
Но за мен е важно и да съм смирен и да съм наясно, че също имам слаби страни и е добре да приемам съвети от хора с опит. Без такива съвети сме в някаква самозаблуда, че знаем всичко и можем всичко.
Мисията на екипа ти е да помага на общността от 3.5 милиона разработчици на Progress да създават по-бързо и по-лесно приложения. Каква е твоята мисия на работното място?
За да помагаме на нашите клиенти да постигат целите си бързо, лесно и с възможно най-малко разходи, е необходимо координираният труд на страшно много хора да води до добри резултати. Когато се случи значимо събитие, например на пазара излиза нова платформа за user interface компоненти, ние сме първи на него, за да пуснем нов продукт и клиентите ни очакват точно това от нас. Но те разчитат да сме тук и след две, пет, десет години. Искаме да постигнем това, като сме наясно, че нуждите им ще се променят, платформите ще се променят, но като се случи такова събитие, сме си поставили за цел в рамките на няколко месеца да предложим продукт, който реално да решава техните проблеми.
А моята мисия е да помогна на екипа ми от 140 човека да постигнем тази цел, намирайки възможно най-добрия баланс между резултатите, които постигаме, и темпа на работа, който налагаме, защото резултатите на всяка цена не са нещо, което задължително работи в дългосрочен план. Нужен е дълъг хоризонт и точно той характеризира нашата работа.
Ако и вие гледате надалеч и искате да правите нови неща, за да станете още по-добри, разгледайте всички свободни позиции на Progress в Job Board-а на DEV.BG.