Интервју со М-р Марин Трпеновски: Младите програмери ги советувам да не трчаат по висока плата
Ова интервју има за цел да биде опсежен водич низ процесот на создавање на програмерска кариера во Македонија, нудејќи увид во локалниот технолошки пејзаж, стратегиите за подготовка и квалитетите кои македонските технолошки компании ги бараат кај кандидатите. Од разбирањето на специфичните програмски јазици кои се бараат до совладувањето на уметноста на решавање проблеми под притисок, малку ќе се позабавиме со динамичната и растечка технолошка заедница. За таа цел имавме интервју со М-р Марин Трпеновски, една успешна приказна во македонското програмерство, која трае веќе 10-тина години.
„Размислувајќи за вашето богато патување во светот на програмерството, кои беа некои од клучните проекти што ја обликуваа вашата кариера и кои беа клучните поуки од тие искуства?
– Досега сум работел на повеќе проекти, пред сè “web” базирани и мобилни апликации, за он-лајн закажување и шопинг, “software” за банки, платформи за учење. Секој од овие проекти си имаше своја тежина и предизвик во одредена фаза од кариерата, што ми помагаа да пораснам како “software” инженер. Тешко е да се извлече некој проект како клучен, првиот проект беше клучен да се надградам технички каде што имаше широк спектар на технологии. Моменталниот проект кој го работам ми помогна да пораснам и технички и како инженер бидејќи работам на проекти за американскиот гигант ИБМ при што самото работење за нив создава на почетокот одреден притисок и позитивна трема кога ќе треба да се извршуваат задачите. Се преиспитуваш 2-3 пати дали е кодот во ред дали функционира, дали е оптимизиран, дали е документиран. Секое решение го гледаш од различни перспективи да не си имаш пропуштено некој детаљ со цел да нема клиентот забелешки. Така да мислам дека моменталниот проект сто го работам веќе подолго време ми има помогнато најмногу во мојот досегашен развој.
„Со брзата еволуција на технологијата, како се променија вашите вештини и преференции за програмски јазици низ текот на времето и што ги предизвика тие промени?“
– Тешко е да се следи еволуцијата на технологиите, секојдневно излегуваат нови „”framework”“ или библиотеки за јазиците, а се појавуваат исто така и нови јазици. Моите вештини само се надградија и адаптираа кон потребите на пазарот (односно потребите клиентот). Кога сме се одлучиле да работиме како “software” инженери тогаш знаеме дека секојдневно ќе треба да учиме за да бидеме во чекор со новите технологии. Секако не може сите технологии да ги знаеме исто добро, меѓутоа да знаеме кои се нивните концепти и за кој тип на проекти се погодни со цел да може да ги искористиме кога ќе имаме потреба од нив како најсоодветна алатка за нашиот проект. Сепак програмскиот јазик е само алатка за идејата да се претвори во реализација. Според мене, најтежок е почетокот бидејќи има многу јазици и технологии што не носи малку во бунило бидејќи не знаеме која насока да ја фатиме, но кога ќе се фати насока важно е само да се надградуваме учејќи нови технологии со што секогаш ќе биде во тек со последните промени. Најчесто промените се движат во насока на побарувачката на пазарот и развојот на самата технологија. Како што е сега појавата на Машинското учење или познато како АИ (вештачка интелигенција).
„Со вашето длабоко искуство во технолошката индустрија, како го споредувате технолошкиот пејзаж на Македонија со глобалниот пејзаж? Со кои уникатни можности или предизвици се соочуваме тука?
– Појавата и развојот на интернетот им овозможува на програмерите од Македонија да се рамо до рамо со програмерите од светот. Можеби нијанса малку поразвиените технолошки земји да имаат предност, пред сè поради тоа што светските технолошки гиганти имаат отворено фирми во нивните земји па програмерите од Македонија најчесто како стручни соработници или „изведувачи“ работат за тие фирми, а самото тоа не тера да го даваме максимумот со цел да се докажеме кај клиентот и да бидеме пред неговите инженери, што пак претставува голем предизвик да се бориш и докажуваш. Во поглед на личниот развој технички, мислам дека самиот пристап до интернет е сосема доволен за некој програмер да се надгради бидејќи има многу туториали, тренинзи и он-лајн конференции на различни теми за различни технологии, па така сметам дека личната желба и амбиција се тука пресудни за успехот на програмерот. Едноставно е за личниот развој, сакаш или не сакаш.
“Во индустрија која никогаш не престанува да еволуира, како пристапувате кон континуираното учење? Можете ли да споделите некои лични стратегии или навики?“
– Како што веќе споменав ИТ индустријата постојано еволуира и напредува со што треба да се следат трендовите на развој и побарувањата на пазарот. Континуираното учење и надградба најмногу доаѓа од желбата и љубопитноста да се научи нешто. Но, под учење не подразбирам она класично средношколско “бубање” туку да се истражи зошто и како функционира одреден јазик или технологија. Од тука најчесто јас ја црпам желбата за континуирано надградување. И истражувањето на различните технологии. Личната стратегија за успех е дека мора да си упорен и дисциплиниран. Не можеш со 8 часа на ден колку што е работното време да бидеш добар инженер или програмер. Како и секоја работа бара малку дополнителен труд за да се издигнеш и успееш. Добро е да се подели време на работа, барем неделно да се одделат 6-8 часа распределени во 3-4 работни дена по 1-2 часа на ден за личен развој. Викендите исто така може по некој час да се посвети на личен развој. Најчесто јас сум си работел на индивидуален развој на технологии што не ги користам на проектот. Односно ако проектот одреден период бара работа само на „backend“ таскови тогаш сам сум си креирал таскови за одреден јазик како React или Angular за лична надградба. Исто и доколку на проектот се работело најчесто на „frontend“ задачи тогаш сум работел „backend“ технологиите како “Java”, node js, Python во моето слободно време за да бидам постојано во тек со технологиите. Најважно е да се има континуитет, континуитетот и дисциплината се пресудни за успехот. Не треба да има пикови во учењето како пример 2-3 недели учиме, работиме по 12/13 часа на ден и после тоа ништо не правиме 2 месеци. Затоа што така се запоставуваат технологиите и се губи навиката за учење. Секако не треба да се прегори со учење. Животот сепак не е само програмирање, има и други моменти како социјални дружби, излегување, спортување, што не треба да се запостави. Меѓутоа со добар распоред може да се иземенаџира сето тоа. Намалувањето на времето за одење по кафани хахахах, за серии (Netflix), социјални медиуми, гледање сториња или рил-ови по неколку часа на ден може да му помогнат на секој инженер или програмер во неговиот личен развој.
“Можете ли да споделите анегдота каде што сте воделе тим низ тежок проект? Каков беше вашиот стил на лидерство и како се справивте со предизвиците?
– Уфф. Тешко прашанје. Имало потешкотии при работата во тим, но среќа повеќе од времето со леснотија сме работеле отколку со потешкотии. Ние не сме голем тим, работиме тројца колеги кои што јас ги водам. Поголем дел од времето од денот поминуваме на работа со тимот затоа гледам да има пријатна атмосфера за работа, да сакаат колегите да доаѓаат и да работат на проектот. Тимот се менуваше бидејќи во ИТ фирмите нормално е да има честа промена на фирмите кај програмерите па така и мојот тим најчесто трпел сериозни промени. Во зависност од ситуација до ситуација нема стриктна дефиниција за како да се справиш во одредена ситуација како по книга, особено затоа што се работи и со луѓе, а тоа се различни карактери па кај секој карактер треба да имаш и различен пристап. Најпрво гледам да се постават принципите на работа во тимот, да има работна етика, професионалност и разбирање. Секако, да има и дружби со тимот надвор од работа со цел да може да се создаде хемија во тимот бидејќи во канцеларија најчесто се премногу „стегнати“ програмерите. Како лидер на тим, една од одговорностите е да имаш увид над работата на тимот. Да бидеш во тек со тасковите да можеш да помогнеш доколку некој од колегите заглави, да можеш да ги избалансираш тасковите меѓу колегите да не бидат едни преоптоварени, а други да одмараат што може да предизвика револт и прегорување на едни колеги, а губење на работните навики кај други. Секогаш гледам да ги движам напред колегите во тимот, да им помагам да се надградуваат технички на различни полиња согласно нивниот капацитет и амбиција која што ја поседуваат. Никогаш не сум го сакал деградирањето или вршење притисок над колегите. Се трудам да биде порелаксирано за да може да го покажат максимумот, да ги мотивирам, а со притисок и деградација тоа тешко да се постигне. Сум се трудел да развијам колку што може повеќе пријателски однос, да се запознаам со колегите подобро и да знам од кој што мозам да оцекувам за да мозам да му дадам соодветни таскови, да му поставам И предизвици за развој со цел да се усоврси техницнки И да прерасне во лидер на тим. Разговарам со колегите од тимот И ресавам различни ситвации, каде сто треба да проценис кога нешто е оправдано а кога не е оправдано, со текот на времето се уцис да повлекувас и црвени линии. Се тоа доаѓа со искуството и работата на различни проекти И различни тимови.
„Секој програмер ја има таа една приказна за решавање на наизглед нерешлив проблем. Која е вашата и што таа ве научи за решавањето на проблеми и иновациите?“
– Решавањето на проблеми доаѓа уште од факултетските денови па може да се каже и порано, од средношколските денови, кога ја засакав математиката и решавањето на задачите во математика всушност претставува решавање на проблем. Секоја задача е проблем кој сто треба да се реши. Па, тоа решавање на проблемите, полека ми стана и предизвик и пасија и се префрли во програмирање. Секој проект е посебна приказна. Треба да се направи анализа за архитектурата, кој технологии ќе се користат, како ќе се подели по фази, меѓутоа, и покрај целото планирање, сепак, се јавуваат проблеми. Тоа најчесто се „баг“-ови во програмирање. Секој баг е ново искуство, анализа на проблемот, поставување на околина да се репродуцира истиот, а фактот ако тоа не е „твој“ пишан код го прави решавањето на баг-от усте потешко. Меѓутоа така се расте и се стекнува искуство. Самиот поим „нерешлив“ проблем, според мене не постои. Има потешки и полесни проблеми за решавање. Но, како најтежок проблем секако е врзан со почетоците во мојата кариера кога сè ми беше сосема ново тогаш. Прва работа ми текнува дека ми беше тоа, и оддеднаш 3-4 нови технологии за кои што знаев само дека постојат, прво читав/работев за “Spring Java”, па побара тим лидерот-от да читам за “Hibernate” за бази на податоци и после 3 недели ми кажа да читам за “Angular ЈС”, кој што тогаш стануваше најпопуларен „framework“ за „frontend“ апликации. Од една страна бев среќен што и таа технологија ќе можам да ја учам, а од друга целата глава ми беше “прашалници”, непознати поими од сите технологии наеднаш. И знам тогаш лидерот кажа да се поделиме, а бевме 2 колеги, да земеме по 2 табови од апликацијата и да сработиме. Се поделивме и мене ми текнува дека ми се падна „Location“ таб-от, кој што барапее да се имплементира “Google Maps” со координати … И тоа беше сосема ново за мене, работам и не излегува никако како што треба, грешки во конзолите, па се губи мапата, па ги нема маркерите па нема опција за зумирање, дури еднаш маркерите за локација наместо во Германија на мапата ми ги даде во Индија хахаха. Е тука веќе 5 дена читање и работење и помислив дека е нерешлив проблем, барем за тогаш … Сега кога ќе се навратам на тоа, на моменти и смеа ме фаќа за сто сум сметал дека е нерешливо. Но, затоа и кажав на почетокот, дека кога си на почеток мислиш дека има нерешливи проблеми, а после 10 години искуство во ИТ сфаќаш дека не постои такво нешто и знаеш како да му пристапиш на секој проблем.
Гледајќи кон хоризонтот, кои нови технологии ве возбудуваат најмногу и зошто? Како предвидувате дека овие технологии ќе влијаат на технолошкиот екосистем на Македонија?
Како сто веќе кажав најмногу од инженерството го сакам тоа што треба да се решаваат проблеми, нешто што не работи да го направив да работи. Тоа ми е предизвикот што ме води напред. Немам некои посебни симпатии да речеш, сакам само еден јазик. Тоа е една од разликите помеѓу инженери и програмери. Инженерот треба да знае дека програмскиот јазик е само алатка за да се заврши одреден проект. Меѓутоа еве “Java” би го одбрал како омилен најмногу дека од него почнав да се развивам во полето на програмирање. Инаку и “node js” и “Python” и “react”, “Angular”, “JavaScript” се јазици кои ги користам. Како следен предизвик го гледам Машинското учење и навлегувањето во полето на вештачка интелигенција (AI). Бидејќи мислам дека веќе влегуваме во ерата на вештачка интелигенција, а полека “AI” ќе почне да навлегува и во нашиот технолошки екосистем.
„Црпејќи од вашите искуства, кој златен совет би им го понудиле на следната генерација програмери во Македонија кои сонуваат за успешна технолошка кариера?“
Ако треба да се одлучам за еден златен совет, тоа дефинитивно би било да не трчаат по пари и голема плата. Платата и парите го следат знаењето и искуството. Како ќе се надградуваат така ќе доаѓаат повеќе пари и поголема плата, а со тоа нормално и поголеми обврски. Да бидат трпеливи и темелни при работата и изучувањето на нови технологии. Наградата секогаш доаѓа како шлаг на тортата. Еве едно мое лично искуство кога почнував да работам пред 10 години. Тогаш ИТ пазарот не беше раздвижен како сега, малку беше потешко за почеток и влегување во ИТ фирма бидејќи беа малку такви фирми а се бараше искуство, ретко кој вработуваше јуниор. После 9 месечната пракса што ја имав во една наша ИТ компанија, завршив курс за “Oracle” за ‘Java’. Откако го положив сертификатот од “Oracle” за Java, почнав да аплицирам за јуниор Java програмер. Имав 3 интервјуа, едната најдобро платена понуда беше од германска компанија која што отвораше канцеларии кај нас тогаш, со што јас би бил тогаш меѓу првите што ќе се вработеа, ми ветуваа бенефиции и други интересни работи (телефон службен, картички за вежбање…) кои може да те примамат, а немаат допир со технологија. Другата понуда беше 150 евра пониска, од наша компанија тогашен старт-ап меѓутоа сопственикот на фирмата ми изгледаше како многу искусен програмер со огромно знаење во ИТ и ми изгледаше како многу подобра прилика за учење и „крадење“ на неговото знаење отколку понудата од германската компанија. Па, решив да ја прифатам понудата за помала плата, но многу повеќе знаење. На долги патеки тоа се покажа како правилен потег, стекнав 2 години искуство на 2 проекти користејќи најновите технологии базирани на “Java” и “JavaScript”. А сопственикот беше мојот ментор со кој што до денеска комуницираме за различни теми од ИТ, тој беше и човекот “кој ме научи како да ловам риба, а не ми ја сервираше рибата во чинија”. После тие 2 години, барав нови предизвици и само се надградував. Меѓутоа, веќе имав насока и го имав „рецептот“ за како да се надградувам. После тоа почнаа да доаѓаат и повисоките плати, а понатаму само небото е лимитот во ИТ. Колку ќе се вложиш, толку ќе добиеш. Така да мојот совет до младите што почнуваат е да гледаат што е добра прилика за нив да научат, особено на почетокот, па и за понатака е исто важно да се учи, не е само да се земе добра плата, а да се тапка во место со личниот развој. ИТ индустријата брзо се движи напред и ќе ги „изеде“ машинеријата.
“Многу млади луѓе завршуваат академии и се обидуваат да влезат на пракса, но тешко им оди со оглед на тоа дека нема огласи за практиканти. Во главно се нудат јуниор позиции со 1-3 години искуство. Зошто компаниите не им даваат шанса на овие млади луѓе и зошто во Македонија нема култура за вработување на практиканти?”
Ова е малку комплексна тема. Сум бил во позиција да барам пракса во време кога ИТ индустријата кај нас не беше развиена до овој степен. Беше навистина тешко да се добие шанса за пракса, а уште помалку за вработување како јуниор програмер. Првично треба да се знае во цел свет има рестрикции во ИТ сферата и затегнувања, како последица од Ковид кризата и војната во Украина, што може да се види од политиката на големите гиганти како “Twitter”,”Meta”, “Google”, “IBM”, коишто значително го намалија својот број на вработени. Таа политика се одрази и на нашиот ИТ Пазар изминатава година. Но, ова не треба да ги разочарува младите инженери и програмери. Ке дојде до стабилизација набрзо која веќе со почетокот на годинава почнува да се чувствува. Секој почеток е тежок, така и во програмирањето почетоците се тешки. Тешко се доаѓа до можност да се стекне искуство практично на реални проекти. Најважна е упорноста, дисциплината и континуираната надградба. Не треба да се чекаат компаниите да излезат со огласи за пракса. Секој програмер или инженер сам може да си постави личен пат на развој и да го следи тој пат и да навлегува сè подлабоко во одредена проблематика односно одреден јазик, а учејќи го јазикот паралелно ги да ги следи огласите и трпеливо да ја чека шансата. Притоа веќе споменав, многу е поважно на почетокот да се има добар ментор отколку да се работи во некоја голема компанија поради добра плата. Притоа чекајќи ја шансата не треба да очајуваат доколку не поминат на првите неколку интервјуа, во просек порано ако добро се сеќавам се правеа околу 20-30 интервјуа за да се добие првата понуда за работа. Затоа, доколку имаат неуспех на првото интервју, не треба да очајуваат. Има една мудрост која вели „Не е важно колку пати ќе паднеш во животот, туку колку пати ќе станеш“. Од друга страна се тука и компаниите, треба да се разбере и нивната ситуација дека за секој еден практикант или јуниор програмер треба да се додели некој ментор кој ќе ги води или надгледува додека работат. Тоа значи дека дел од своето време некој сениор го одделува за да ги менторира нив. Тоа значи дека не е 100% посветен на проектот и своите работни задачи, бидејќи одделува одредено време за менторирање. Тоа значи на крајот тоа може да се одрази и на неговите перформанси кај клиентот што може да донесе до несакан ефект. Исто така, кога се вработува нов кадар треба да се провери и за каква личност станува збор. Зошто го велам ова, бидејќи кога се почнува да се работи со некој клиент, најчесто се добива лаптоп и “accoung” кај клиентот и програмерот е оставен сам да комуницира со клиентот. Ризикот од непрофесионалност е секогаш присутен, па некој непрофесионален однос може да ја разниша довербата која што фирмата ја има стекнато со одреден клиент. А таа доверба одредена фирма ја има градено долги години. Така да предвид треба да се земат и ризиците кои што ги носат фирмите(пред сè газдите) при вработување на нови кандидати. Исто така важна улога играат и самите реклами на ИТ академиите во стилот „Најлесниот пат до платата од соништата“, „Сонувате ли за плата од 1000 евра“ при што многу кандидати од академиите имаат сетирано “мајндсет” дека после академијата каде што за година дена поминуваат голем спектар на технологии, кои што не им се „легнати“ како што треба, мислат дека таа плата треба да им ја дадат веднаш компаниите. Тука се јавува и недоразбирањето. До плата од соништата се стигнува тоа е точно, но патот не е баш така лесен. После курсот (студиите на факултет) прво треба да се испоти столчето, ноќи поминати над биро и тастатура наоѓајќи грешки во кодови и проучување на кодови, зошто и како работат истите, па се почнува како јуниор за некоја реална плата да се осознае културата на работа во ИТ компаниите, па да се почне на проект да се работи. Па плата ќе дојде како заслуга за нивното заложување. Треба малку трпение да имаат на почетокот затоа што некој вложува во нив без да има никаква капитализација на инвестицијата. Во поглед на културата за пракса, мислам дека нашиот ИТ Пазар е отворен И има доволно позиции за практиканти и јуниор програмери. Секогаш може да се подобри тоа, меѓутоа сега сметам дека има доволно можности за новите програмери.
М-р Марин Трпеновски, Дипл.ел.инж