26 април, 2024

От Първо Лице: Росен Иванов, Senior Software Engineer в REWE digital

Завърших в ПМГ “Васил Друмев” Велико Търново с профил “Математика”. Там се запознах с основите на програмирането, а след това продължих образованието си в ТУ София, специалност КСТ. Още във втори курс започнах работа в софтуерна фирма, така успях да компенсирам огромната разлика между това, което ти преподават в университета и реалната практика. Колебаех се в каква насока да продължа академичното си развитие, исках да получа знания и да подобря организацията на работата ми, затова завърших Индустриален мениджмънт, отново в ТУ София.

Програмирал съм на най-различни езици, като започнах с Pascal, Delphi, PL/SQL, след това продължих с JVM езици, Javascript. Не споделям разбирането, че езикът е от най-голямо значение за развитието на човек, а по-скоро проблемите и предизвикателствата, с които му се налага да се справи в работата. Обичам елегантните и разбираеми решения и тъй като вариантите за всеки един проблем са много, не бих казал, че имам любима технология.

Стартът, Java и … достатъчни ли са познанията по 1 програмен език

Моят опит като програмист е доста ясен, канализиран и последователен. Започнах да се занимавам с програмиране в гимназията, а още в университета, във втори курс – с Delphi. След известно време осъзнах, че мога да решавам по-сложни проблеми с по-модерни езици за програмиране. Изборът изобщо не беше труден – исках нещо мултиплатформено, с което да се работи лесно. Така се преквалифицирах в Java.

Имах късмета да стана бързо част от интересни компании и проекти, благодарение на които натрупах ценен опит, понякога по трудния начин. Определено мога да кажа, че си заслужаваше поради факта, че всички трудности, с които се сблъсках, изградиха характера ми. Моят опит, обаче, не се ограничава само до Java. В тази връзка не съветвам никого да разчита единствено на един език, защото в днешно време има толкова много заслужаващи внимание езици за програмиране, които да бъдат разучени: Go, JVM езици – Kotlin, Scala, Groovy, Javascript / Typescript, всеки от които разрешава различни задачи по елегантен и оптимален начин.

Как се протичат стандартните Dev интервюта в България?

Като разработчик, който провежда технически интервюта, видях различни подходи за провеждане на такъв тип срещи. По-долу бих искал да споделя с вас начина, по който се извършват стандартните Dev интервюта в България и се надявам това да ви даде по-ясна представа за процеса на технически подбор, като вземем под внимание опита на всеки отделен кандидат, през моята гледна точка.

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

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

Какво е важно да попита интервюиращият?

Това, което препоръчвам, е интервюиращият да попита кандидата дали той/тя би искал/а да продължи да извършва същия повтарящ се цикъл от ежедневни задачи, или би искал/а да направи някои промени в начина си на справяне с ежедневната работа. Този въпрос е много важен, за да разберем начина на мислене на кандидата. Забелязвам, че този въпрос твърде често се пренебрегва от страна на интервюиращите.

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

Има компании, които не само тестват техническите умения на кандидата, но и неговата/нейната издръжливост, като правят интервютата тежки и излишно дълги. Едно интервю, което продължава половин работен ден, и през което кандидатът преминава през различни интервюиращи, многобройни задачи и кратки почивки, се оказва прекалено изтощително и доста неефективно според мен. Да, в крайна сметка компанията ще разбере по-добре дали кандидатът може бързо да се концентрира и да „оцелее“ в процеса, но на каква цена?! Има много по-ефективни начини за оптимизиране на процеса на техническото интервю, които ще споделя с вас по-нататък.

За какво да следят кандидатите?

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

“ЗА” индивидуалния подход

В REWE digital се фокусираме върху опита на кандидата, като взимаме под внимание типа длъжност, за който кандидатства. Конкретните технически въпроси не са от първостепенна важност. Вместо това, ние центрираме интервюто около темите и технологиите, с които кандидатът е запознат, използвайки времето, за да проведем ефективна дискусия. Всеки кандидат е уникален и на база неговия/нейния опит, подхождаме индивидуално, за да достигнем до различни видове дълбочина на техническите разговори. Ако задачата е да се реши проблем, ние се фокусираме върху разбирането на кода или какви са идеите зад кода, който трябва да бъде написан. За нас е важно да разберем как кандидатът подхожда към решаването на конкретната задача и какви методи използва, за да се справи с проблема. В крайна сметка, интервюто винаги е двустранен процес и двете страни трябва да усетят връзката помежду си.

До каква позиция може да достигне Java програмист?

Структурата в REWE digital е плоска. Тук няма ръководители на екипи. Всички даваме всичко от себе си, за да помогнем на другите членове на екипа ни да се справят със задачите си. Важното не е длъжността или титлата, а дали сте екипен играч или не.

Имаме вътрешна програма за растеж, наречена “Path of Excellence” (Пътят към съвършенството), към която всеки програмист може да се присъедини и да придобие задълбочени познания за разработването на софтуер в една конкретна технология (пр. Java), за да стане champion (шампион) или дори master (водещ експерт) в нея.

За мен е ценно да се развивам като професионалист, да научавам и тествам нови технологии, каквито използваме в технологичния пакет (tech stack) на компанията.

За бъдещето на Java, Java разработчиците и здравословната конкуренция

Доста съм изумен от факта, че нашият технически директор в Кьолн – Робърт Цорес е един от основателите на езика за програмиране Java, който има дълга история на развитие.

Въпреки че Java е стар език за програмиране, той все още е жив и динамичен. В момента има нова версия на всеки 6 месеца, което го прави доста гъвкав за иновации и промени. Последните нововъведения като Records, Sealed types, Pattern matching придвижват Java напред в посока data-oriented model. По този начин езикът наваксва с функционалности, които предлагат други Jvm езици. Има интересни проекти, които са в развитие, например Looming – реактивно програмиране с модел, който не се базира на нишки – един основен проблем в Java, който различни езици и frameworks решават.

Разработчиците на Java имат чудесна възможност да се занимават със система, която непрекъснато се подобрява. Нека не забравяме, че Java не е просто език – виртуалната машина играе ключова роля за успеха. Примери за това са оптимизация на паметта, която се използва от String, времето за компилиране и стартиране, дължащи се на Garbage collector G1 – постоянно подобряване между версиите, добавяне на нов ZGC с “паузи” от една или две милисекунди. Всичко това може да се комбинира и с други езици, работещи с JVM: Kotlin, Scala, Groovy и други, така че разработчикът е свободен да комбинира в един проект езиците и библиотеките, за да изгради решение напълно съобразено със своите нужди, ресурси и опит.

Java еволюира постоянно, взема неща от по-новите езици и засега ги имплементира успешно – примери за това са Scala и Kotlin. Причината за това е здравословната конкуренция, която е налице в момента.

 

“Няма хора на пазара” – Проблемът и … решението

Често съм чувал фразата „няма хора на пазара“. Според мен въпросът се свежда до инвестиране в хора и развитие на техния набор от умения. Наясно съм, че има много добре подготвени служители (готови кадри), но е трудно за всяка компания да спечели доверието им, когато ги потърси с готова оферта за работа. Затова приветствам всички компании, които инвестират в развитието на своя персонал, дори от нулата. Вършите много добра работа и ви моля да продължите да го правите. Смятам също, че е много важно служителите да поддържат личната си мотивация на високо ниво. Това е моментът, в който компанията може даде тласък и да ги помогне. В REWE digital имаме страхотни примери на наши колеги, завършили софтуерни академии, които се присъединиха към нас с базови познания за технологичния стак, но с висока мотивация. С малко помощ и подкрепа от наша страна, те показаха, че всичко е възможно с правилното мислене и отношение.

 

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