The Tech Interview Behind the Scenes: Дарина Георгиева
От Радослава Димитрова, Директор — Публикувано
The Tech Interview Behind the Scenes е поредица на HRLabs series.
Нека погледнем зад кулисите на техническия интервю процес от гледната точка на интервюиращите.
Целта ни е да предоставим на кандидатите ценни съвети и препоръки директно от професионалистите, които провеждат интервюта за различни технически роли.
"Добрите софтуерни инженери знаят кога трябва да проучат нещо допълнително и кога е по-разумно да вземат обосновано решение и да продължат напред." споделя Дарина Георгиева, съосновател на TopCoding.
Разкажи повече за твоя кариерен път.
Професионалният ми път в технологичния сектор всъщност започна със забрана.
Когато бях в гимназията, майка ми ми забрани да ставам софтуерен инженер. Както вероятно се досещате, нещата не се развиха по нейния план.
След гимназията заминах за Великобритания, където записах “Компютърни науки”. Завърших на почетно място в курса и бях призната за един от тримата най-добри студенти по “Компютърни науки” във Великобритания.
Оттогава съм прекарала повече от 10 години в технологичната индустрия, работейки в различни области: Backend, Frontend, DevOps, Data Engineering, Machine Learning и почти всичко между тях. Професионалният ми път премина от стартиращи компании в ранен етап на развитие и малки и средни предприятия до някои от най-големите организации в света. Работила съм в различни сфери: от роботика и FinTech до финанси и Big Tech.
През годините имах възможността да работя за компании като Jane Street, Barclays и Amazon.
Започнах кариерата си като софтуерен инженер, но постепенно насочих вниманието си към техническото лидерство, софтуерната архитектура, менторството и подпомагането на други инженери да разгърнат потенциала си. Едно убеждение ме съпътства през цялото това време: високото техническо ниво е задължително. То е основата на добрата работа, но за изграждането на изключителна кариера са необходими и умения за поемане на отговорност, добра преценка, ефективна комуникация и способност да постигаш резултати отвъд собствените си задачи.
Днес, като съосновател на TopCoding, имам възможността да обединя всички тези знания и опит. След като бях част от индустрията и от двете страни, като софтуерен инженер и като технически ръководител, разбрах колко голяма част от професионалното развитие зависи от неща, които невинаги се преподават в университета или се усвояват на работното място.
Точно това изграждаме в TopCoding - помагаме на софтуерните инженери да постигнат високо техническо ниво и да го превърнат в основа за изключителна кариера.
В ролята си на кандидат, имал/а ли си странни интервюта? А такива, които са те впечатлили?
Едно от най-странните технически интервюта, на които съм се явявала, беше с Palantir.
Получих алгоритмична задача, чието оптимално решение включваше Union-Find. Обясних подхода си, но се появи неочакван проблем - интервюиращият не беше запознат с Union-Find. Той очакваше решение, базирано на DFS, и непрекъснато ме насочваше в тази посока. В крайна сметка реализирах решението с DFS. Получих предложение за работа, но преживяването остана в съзнанието ми. Това затвърди един важен урок: когато оценявате кандидати чрез техническа задача, трябва да я разбирате в дълбочина, а не просто да познавате решението, посочено в предварителните указания за интервюиращия.
Силните кандидати могат да подхождат към проблемите по различен начин и понякога решенията им са по-добри от очакваните. Добрият интервюиращ трябва да може да разпознае това.
Имах късмета да се явя на интервюта в много отлични компании и да се запозная с разнообразни подходи към подбора на служители. Най-силно впечатление ми направиха не интервюиращите, които следваха безупречно предварително написан сценарий, а онези, които умееха да създадат спокойна обстановка, в която кандидатът да покаже най-доброто от себе си. Те се включваха активно в решаването на задачата, оспорваха идеи, задаваха задълбочени допълнителни въпроси и превръщаха интервюто в техническа дискусия, а не в разпит. И до днес това са интервютата, на които се възхищавам най-много.
Какви умения и качества търсиш най-вече в един кандидат? Как кандидатът може да изпъкне в рамките на интервюто?
Техническите умения са задължителни. За позицията програмист кандидатът трябва да покрива необходимото техническо ниво.
Освен това обръщам особено внимание на три качества - поемане на отговорност, инициативност и готовност за действие, както и силна ориентация към клиента. Поемането на отговорност означава да отговаряш за резултатите, а не просто да изпълняваш възложените задачи. На добрите програмисти не им е необходимо постоянно някой да им казва какво да правят. Те сами откриват проблемите, споделят ги с останалите и помагат за намирането на решения.
Инициативността и готовността за действие са важни, защото работата като програмист често е свързана с неясноти. Рядко разполагаш с цялата необходима информация. Добрите софтуерни инженери знаят кога трябва да проучат нещо допълнително и кога е по-разумно да вземат обосновано решение и да продължат напред.
Силната ориентация към клиента е също толкова важна. Програмистите, които искрено се интересуват от хората, използващи продукта, обикновено вземат по-добри решения. Те обръщат внимание на неудобствата при използването му, мислят отвъд конкретната задача и често предлагат идеи, които подобряват целия продукт.
Кандидатите се открояват, когато са искрени, действително се интересуват от работата си, проявяват любопитство и приемат добре обратната връзка.
Какви въпроси обикновено задаваш в техническите интервюта? Има ли конкретни задачи или проблеми, които често използваш за оценка на кандидатите?
Харесвам технически задачи, които имат повече от едно правилно решение.
Те водят до много по-добри интервюта, защото предизвикват естествено обсъждане на предимствата и недостатъците на различните подходи. Вместо просто да попиташ „Можеш ли да решиш тази задача?“, можеш да разбереш защо кандидатът е избрал конкретен подход, какви алтернативи е обмислил и как би работило решението му при различни ограничения. Това дава на кандидата повече възможности да демонстрира широчината и дълбочината на своите познания.
Харесвам и практически задачи, вдъхновени от реални производствени системи. Те обикновено разкриват много повече за начина, по който човек мисли като програмист, отколкото изкуствено създадените въпроси.
Друго нещо, в което силно вярвам, е използването на една и съща основна задача при оценяването на няколко кандидати за една и съща позиция. Така сравнението между тях става значително по-смислено. Удивително е да видиш как петима различни софтуерни инженери могат да подходят към една и съща задача по пет напълно различни начина. Въпросите, предположенията, преценките за предимствата и недостатъците на различните подходи, решенията при реализацията и начинът на общуване често разкриват много повече, отколкото това дали кандидатът просто е стигнал до правилния отговор.
Колко e важно кандидатът да има добри комуникационни умения? Как те оказват влияние върху цялостното интервю?
Добрите комуникационни умения са абсолютно задължителни. Колкото по-висока позиция заемаш, толкова повече влиянието ти зависи от способността ти да общуваш ефективно.
Работа не се свежда само до писането на добър код. Трябва да можеш да обясняваш идеи, да защитаваш техническите си решения, да поставяш под въпрос определени предположения, да съобщаваш за рискове, да работиш съвместно с други екипи и понякога да обясняваш сложни концепции на хора без технически познания. Може да имаш отлична идея, но ако не можеш да я обясниш достатъчно ясно, така че другите да я разберат и да предприемат действия, въздействието ѝ остава ограничено.
Същото важи и по време на интервю. Интервюиращият не може да оцени мислите, които остават само в главата ти. Затова комуникацията не е просто допълнителен критерий, който се оценява наред с техническите умения. Тя е начинът, по който тези умения стават видими.
Каква роля играе културната съвместимост при вземането на решение за наемане? Как оценяваш дали кандидатът ще се впише добре в екипа?
Съвместимостта с екипа е много важна, въпреки че предпочитам да я разглеждам именно като съвместимост между хората, а не просто като съответствие с фирмената култура.
Софтуерното инженерство изисква тясно сътрудничество. Дори отличен програмист може да се отрази негативно на екипа, ако не умее да работи с останалите, да общува с уважение, да дава и приема обратна връзка или да поема отговорност.
Грешното решение при наемане може да засегне много повече от продуктивността на един човек. То може да повлияе на отношенията в екипа, изпълнението на проектите, мотивацията и дори задържането на служителите. Многократно съм виждала това да се случва в реални екипи. Разбира се, трудно е да оцениш тези качества в рамките на сравнително кратък процес на интервюиране. Това, което можеш да направиш, е да определиш кои поведения са най-важни за конкретния екип и организация и целенасочено да търсиш признаци за тях.
Обикновено обръщам внимание на умението за сътрудничество, уважението към идеите на другите, готовността за приемане на обратна връзка, желанието за поемане на отговорност, любопитството и искрения интерес към продукта или сферата, в която работи компанията.
Различните екипи ценят различни качества, затова целта не трябва да бъде да наемаме хора, които мислят или се държат по един и същи начин. Целта е да избираме хора, които могат да работят ефективно заедно.
Какви са най-честите грешки, които кандидатите допускат по време на интервю? На какво би посъветвал/а кандидатите да наблегнат при подготовката за интервю?
Най-честата грешка, която забелязвам, е недостатъчната комуникация.
Кандидатите често обмислят много повече неща, отколкото интервюиращият може да разбере. Те може да разглеждат гранични случаи, да сравняват различни алгоритми, да мислят за мащабируемостта или да поставят под въпрос дадено предположение. Но ако не споделят разсъжденията си, интервюиращият няма как да оцени тези усилия.
Умението да разсъждаваш на глас наистина е умение, което трябва да се развива.
В началото може да се чувстваш неловко. Когато упражняваш това вкъщи, хората, с които живееш, дори може да започнат да се чудят защо се разхождаш и обясняваш разни неща на себе си (говоря от личен опит!). Но това е едно от уменията, които могат да подобрят представянето ти на интервю в най-голяма степен.
Обяснявай предположенията си. Споделяй алтернативите, които обмисляш. Обсъждай предимствата и недостатъците на различните подходи. Казвай, когато не си сигурен в нещо. Дай възможност на интервюиращия да разбере как разсъждаваш.
Разбира се, важно е и какво точно казваш. Затова се подготвяй добре, изгради стабилни технически основи, упражнявай се да обясняваш разсъжденията си и след това бъди себе си, вместо да се опитваш да играеш ролята на някаква изкуствена версия на „перфектния кандидат“.
Какви съвети би дал/а на кандидати, които искат да подобрят техническите си умения? Има ли ресурси, които би препоръчвал/а?
Няма кратък път към подобряването на техническите умения и за съжаление отговорът не е особено вълнуващ.
Създай си план за развитие, отдели време и работи последователно.
След това повтори същото утре.
И на следващия ден.
Ако продължаваш достатъчно дълго, ще постигнеш изненадващо много. Важно е обаче внимателно да избираш какво ще учиш през това време. Времето вероятно е най-ценният ресурс, с който разполагаме, а да прекараш повече от шест месеца в усъвършенстване на умение, което не те приближава до целта ти, може да ти струва много повече от цената на който и да е курс или книга.
Започни с целта си. Разбери какви умения са необходими за постигането ѝ. Определи в кои области имаш пропуски. Изгради структуриран план за учене, насочен към тях.
След това бъди дисциплиниран. Не разчитай прекалено много на мотивацията, защото тя се променя всеки ден. Изградените навици, системният подход и постоянството са много по-надеждни. Продължавай да учиш, да създаваш и да се поставяш в ситуации, в които трябва да решаваш проблеми, малко надхвърлящи настоящите ти възможности.
Сподели повече за най-добрите (или най-лошите) интервюта, които си провеждал/а?
Провеждала съм някои изключителни интервюта, както и някои много трудни.
Най-добрите интервюта обикновено се получават, когато кандидатът е добре подготвен, има силни технически умения и общува естествено. Разговорът потръгва. Задаваш въпрос, кандидатът го разглежда в дълбочина, ти поставяш под въпрос дадено предположение, той се адаптира и в крайна сметка интервюто престава да се усеща като формална процедура и започва да прилича на двама програмисти, които решават проблем заедно. В края и двете страни обикновено имат сравнително добра представа как е преминало интервюто.
Най-трудните интервюта всъщност не са непременно тези със слаби кандидати.
За мен най-трудни са случаите, в които ясно виждаш, че някой има огромен потенциал, но просто не се е подготвил. Опитваш се да му помогнеш да продължи напред, даваш подсказки, леко променяш въпроса или създаваш възможности да демонстрира знанията си. Но понякога не успяваш да събереш достатъчно доказателства в рамките на интервюто, за да обосновеш преминаването му към следващия етап.
Тези интервюта са трудни, защото виждаш на какво би могъл да бъде способен човекът, но същевременно трябва да оцениш това, което действително е демонстрирал в конкретния ден.
Какво би искал/а кандидатите да знаят за процеса на интервю в твоята компания? Какво може да бъде полезно за тях при подготовката?
Явете се навреме! Бъдете подготвени да попаднете в ситуация, в която ще трябва да покажете бързо мислене, правилно отношение и професионално поведение.
Сподели забавна история от опита ти на интервюиращ 😊
Един кандидат се включи в интервю с една от онези забавни шапки за пиене, оборудвани със сламки, които стигат до устата. Само това беше достатъчно, за да го запомня. Но вместо малките кенчета, които обикновено бихте очаквали, от двете страни на шапката бяха прикрепени огромни бутилки фанта. Той обясни съвсем сериозно, че „мисли по-добре, когато пие фанта“. В рамките на едночасовото интервю някак успя да изпие около 5,5 литра от напитката и да отиде до тоалетната само веднъж.
Най-смешното? Очевидно фантата му помогна. Той се представи изключително добре на интервюто и го премина с лекота.
И до днес не препоръчвам изпиването на 5,5 литра фанта като стратегия за подготовка за интервю, но мога да потвърдя, че поне при един кандидат имаше положителен ефект.