The Tech Interview Behind the Scenes: Живко Петров
The Tech Interview Behind the Scenes е поредица на HRlabs.
Нека погледнем зад кулисите на техническия интервю процес от гледната точка на интервюиращите.
Целта ни е да предоставим на кандидатите ценни съвети и препоръки директно от професионалистите, които провеждат интервюта за различни технически роли.
„Да се дълбае в територия на липсващи знания е непродуктивно и дискомфортно и за двете страни.“ споделя Живко Петров, Staff C++ Software Engineer в LucidLink.
Разкажи повече за твоя кариерен път.
По образование съм строителен инженер, но с течение на обстоятелствата през последните 10 години се занимавам с преподаване и програмиране на C++.
Професионалния ми опит и интереси са в областта на системното програмиране, роботиката, разработката на игри, алгоритми и оптимизация на код.
Немалка част от времето си посвещавам върху развитието на българския технологичен талант, ръководейки множество курсове по софтуерно програмиране и участвайки в технически лекции и конференции.
В ролята си на кандидат, имал ли си странни интервюта? А такива, които са те впечатлили?
Преди години, компания за която кандидатствах имаше спешна нужда от разрешаване на специфична колекция от проблеми. По време на интервю представих конкретно решение и стъпки за разрешаване на казусите. Интервюиращият (Hiring Manager) беше изключително въодушевен, че е намерил правилния човек за ролята. Това, което той пропусна беше, че в процеса на дискусия забелязах серия от червени флагове, които ме отказа да работя за въпросната компания. Последва изключително високо предложение за трудово възнаграждение от страна работодателя.
За жалост на Hiring Manager-a (и за портфейла ми) отказах позицията. Колкото и да е важно възнаграждението за работата ни, то не трябва да е самоцел. Човек трябва да следва интуицията и принципите си и да не забравя, че интервюто е двустранен процес.
Интервю, което ме е впечатлило:
За една от компаниите, в която съм работил, процеса по подбор включваше няколко различни технически интервюта. В едно от тях бях поставен в реална “pair-programming” ситуация, при която ми представиха полу-работещ проект на компютър под предтекста, че колегата, който е работил по него е излязъл в неочакван отпуск. До мен седеше единият интервюиращ заемащ ролята на съотборник Junior Software Engineer, с когото можех да разговарям. До каква степен можех да разчитам на него технически беше друг въпрос. Срещу мен седеше вторият интервюиращ заемащ ролята на Product Owner, на когото също можех да задавам въпроси при нужда.
От мен се изискваше да се справя с малкото налична информация, която разполагам, да се справя със сетъпа - неизвестен код, неизвестна среда за разработка и да завърша имплементацията на проекта. Разпитвайки Product Owner-a за информация, прилагайки pairprogramming заедно с моя Junior съотборник и разсъждавайки на глас. Въпреки, че беше класифицирано като техническо, това интервю определо обхващаше широк спектър от умения, по които кандидатът бива оценен.
Определено това беше най-интересното и ползотворно събеседване, на което съм присъствал като кандидат!
Какви умения и качества търсиш най-вече в един кандидат? Как кандидатът може да изпъкне в рамките на интервюто?
Проактивност и страст към материята. Смело заставам зад твърдението, че всички кандидати, които съм интервюирал и са демонстрирали тези качества са получили много повече от “да” от моя страна в рецензията си.
Изключително запленяващо и продуктивно е, когато кандидатът говори със страст за материята, която е тема на дискусия.
Вместо списък с въпроси и отговори, да получиш пламенна дискусия - безценно.
Какви въпроси обикновено задаваш в техническите интервюта? Има ли конкретни задачи или проблеми, които често използваш за оценка на кандидатите?
Във всяко едно интервю задавам няколко базови въпроси относно операционни системи, програмния език към дадената позиция, както и върху структури от данни.
На база качеството на полученият отговор подменям стила, дълбочината и посоката на последващите си въпроси.
Целта ми не е да намеря какво не знае кандидатът. Да се дълбае в територия на липсващи знания е непродуктивно и дискомфортно и за двете страни.
Всеки човек си има граница на знанията. Фокусирайки се върху познатото, моята цел е да намеря тази граница.
Колко e важно кандидатът да има добри комуникационни умения? Как те оказват влияние върху цялостното интервю?
Комуникационните умения са определящи за едно интервю.
В професионалния ми опит съм попадал на силни техничари, които са били отхвърлени на ниво HR интервю и/или cultural fit.
Реалността е, че дори и човек да притежава необходимите “твърди” умения, ежедневно му се налага да комуникира и колаборира с професионалисти, които притежават различна специализация, ниво и познания от неговите/нейните.
Каква роля играе културната съвместимост при вземането на решение за наемане? Как оценяваш дали кандидатът ще се впише добре в екипа?
Обикновено се опитвам да вмъкна някоя шегичка, за да разтопя леда. Много често кандидатите са стресирани по време на интервю и е зареждащо да видиш как сериозната им физиономия се изменя в усмивка.
За мен е важно как човек би реагирал на въпроси и послания излизащи извън рамката на изпитващ и отговарящ.
В края на деня сме всички сме хора с различни интереси, хобита и занимания. Не всичко се свежда до работа.
Какви са най-честите грешки, които кандидатите допускат по време на интервю? На какво би посъветвал кандидатите да наблегнат при подготовката за интервю?
Най-сериозният ми съвет би бил кандидатите да се запознаят с фирмата предварително и да си подготвят въпроси.
Забележете, тук не визирам задаването на въпроси като самоцел, само защото очаквате, че така ще изпъкнете.
Попитайте това, което наистина Ви вълнува! С риск да се повторя - интервюто е двустранен процес.
Ще споделя един от въпросите, които аз обичам да задавам.
“Вие не ме познавате. Представете си, че аз съм всичко, което търсите за тази позиция. Наемате ме и се справям блестящо. Къде ме виждате след 2 години?”
След първоначалното учудване на интервюиращия (защото обикновено той/тя е свикнал да задава такъв въпрос) Вие, надявам се, ще получите информация за структурата на фирмата, процеса по повишаване, както и какви са възможностите Ви за развитие. Ако не получите отговор - вече сте направили чудесен преход към такъв тип въпроси.
Какви съвети би дал на кандидати, които искат да подобрят техническите си умения? Има ли ресурси, които би препоръчвал?
Ако сте начинаещ/junior - codingame.com е Вашето място. Изключително полезен сайт подобен на hackerrank, който използва геймификация, анимация и състезателен елемент за да Ви запознае с основите на програмирането, структури от данни и алгоритми.
Това беше моята “рецепта за успех” в началните дни. Не твърдя, че тя ще е подходяща за всички.
Ако сте по-напреднал в професионалното си развитие винаги съветвам да се разработи собствен open-source проект.
По време на бъдещи интервюта може да се позовете към него и така да държите разговора в свои води. Като пример за проект винаги посочвам разработката на малка игра. Защо точно гейминг сферата? Защото е интересно и защото в областта на игрите могат да се открият всички големи концепции в програмирането.
Сподели повече за най-добрите (или най-лошите) интервюта, които си провеждал?
Като най-лош опит ще посоча случай, в който специалист с над 20 години опит в програмирането отказа да решава задача, поставена му като част от интервюто. Човекът беше шокиран, че поставяме под съмнение опита му и настоя да разгледа задачата на спокойствие за една седмица вкъщи.
Като положително впечатление отново ще споделя случай, който изискваше кандидатът да пише код на живо. Колегата беше постигнал задоволително решение и търсеше начин да го подобри. Попита ме дали може да ползва интернет, след което провери няколко факти свързани със синтаксис и специфика на многонишков синхронизационен примитив.
Успешно приложи подобренията и резултатът беше впечатляващ.
Как оценяваш кандидата по време на интервюто – базирано само на теоретичните му познания или за теб е определящ подходът му към решаване на казуса/задачата? Какви други фактори вземаш предвид при вземане на решение?
Теоретичните познания си имат своята стойност, но те са по-маловажни в моята преценка. Причината е, че много често интервюиращите четат 1-2 дни теория преди интервю и говорят по памет, без да са си изцапали ръцете в реалност.
За мен по-важна е практиката.
Взимам за пример алгоритмична задача, която се очаква кандидатът да разпише на бяла дъска / IDE. Никой не очаква от Вас да изстреляте O(N x logN) решение, което сте заучили от LeetCode. Даже си признавам, дали ще достигнете до крайното решение няма толкова голяма тежест (за мен).
Вместо това се гледа как събирате допълнителна информация, как разсъждавате, как пишете код и дали мислите за тестване и бъдеща поддръжка.
Сподели забавна история от опита ти на интервюиращ :)
В разгара на Ковид, интервютата които ръководих, бяха дистанционни.
На едно от тях кандидатът се появи на камерата облечен с халат.
През голяма част от времето си повтарях, че не разбирам нищо от мода и това трябва да е пончо.
Каквато и да беше дрехата - добави усмивката ми към процеса.