досвід

«Половина інтерв'ю від Facebook були про те, що я вчив у Проджі»: історія випускника Algorithms

У квітні 2020 року Олександр Савсуненко закінчив курс Algorithms у Projector. Паралельно він подавався на вакансію інженера-розробника програмного забезпечення (Machine Learning Software Engineer) у сфері машинного навчання у Facebook — і вже сьогодні мешкає з сім'єю в Лондоні. Підготуватися до дня інтерв'ю, який містив аж 5 співбесід, Саші допомогли знання з курсу. Як усе відбувалось, випускник розповів для Projector Mag.
Саша Савсуненко усміхається

Про програмування до та після курсу

За освітою я не програміст. Вивчав органічну хімію, закінчив подвійну аспірантуру між Україною та Францією, маю дипломи кандидата наук і PhD в Університеті Поля Сабатьє в Тулузі. Через низку причин на цьому моя наукова кар'єра припинилася. Я пробував різні сфери діяльності й повернувся до програмування. До того все закінчилось на етапі шкільних олімпіад.

Кілька років я жив в Америці, де мав доволі успішний стартап. Для нього сам писав код, розробив процесингову систему та працював з програмістами на аутсорсі. Коли справу довелося закрити, повернувся в Україну й відкрив тут новий стартап. Там уже більше працював над ідейними й організаційними питаннями замість технічних. Після того була робота, пов'язана з машинним навчанням для фоторедакторів у Skylum. Зрештою зупинився в компанії Ring.

Ring запрошує на роботу висококласних людей. Коли я туди потрапив, відчув брак дуже фундаментальних знань, глибокого розуміння професії й алгоритмів. У команді зі мною працювали люди, котрі легко оцінювали складність будь-яких алгоритмів у голові та прикидали структури даних. Заповнити пробіли в знаннях я вирішив на курсі Вані, який також працює в компанії.

На той час я був залучений до проєкту, пов'язаного безпосередньо із C++, із низькорівневою імплементацією алгоритмів. Курс допоміг швидше розібратись із вихідним кодом і зрозуміти структури даних, які оптимізації там використовуються і про що люди кажуть довкола. Ці речі має знати кожен програміст.

Усім програмістам без спецосвіти, котрі ніколи не читали Кормана і навіть не знають, хто це, — я рекомендував би цей курс. Звичайно, паралельно закінчив ще кілька інших програм онлайн. Це дало зрозуміти: програмування — не перетягування кнопочок з правого вікна в ліве чи зміна кольорів, а набагато цікавіші речі. Такі знання сильно змінюють парадигму мислення. Зараз мені часто легше написати алгоритм самому, ніж знайти і вставити його з бібліотеки. Я знаю, що мій варіант точно працюватиме так, як мені потрібно.
портрет Саші Савсуненка

Про пропозицію роботи в Facebook

У моїй команді в Ring працювала дівчина, яка згодом перейшла на фріланс. Колись вона проходила співбесіду в Facebook, але її не взяли; тим не менш, раз на півроку компанія пропонує таким людям і хорошим фахівцям повторити спробу. Коли вона отримала повторну пропозицію, була зайнята і порадила спробуватися замість неї. Через два тижні на моє резюме відповіли.

Уже тоді я був тімлідом, активно набирав людей у команду і вирішив, що досвід співбесіди в масштабній корпорації буде корисним. До того не хотів змінювати роботу, навіть не думав, що за технічними знаннями вже готовий претендувати на позицію. Через місяць мені запропонували приєднатись до дня інтерв'ю — повноцінної співбесіди з 5 частин.

Специфіка дня інтерв'ю

Зазвичай для такої зустрічі претендентів запрошують до офісу. Оскільки зараз карантин, усе відбувається онлайн. Розмови йдуть одна за одною з перервою 5-7 хвилин. Кожна триває від 45 хвилин до години залежно від формату й уже опісля рішення виносять колегіально. Увесь час ведуть письмові записи того, як ти вирішував задачі та спілкувався. Далі друга колегія, так званий hiring комітет, котра не бачила тебе, читає анонімні записи і приймає рішення — щоб зробити відбір максимально прозорим і незалежним від будь-яких критеріїв: статі, віку, кольору шкіри тощо.

Половина всіх інтерв'ю були присвячені тому, чому вчив Продж: вирішення на швидкість задач, пов'язаних із алгоритмами. У мене були 2 інтерв'ю з кодингу, одне з behavior та social skills, одне з машинного навчання й останнє з архітектури побудови систем (дизайн-інтерв'ю). Через тиждень зателефонував рекрутер і сказав, що мені хочуть зробити пропозицію.

Звичайно, найскладнішим було розв'язування задач, тому що все інше — питання розмови. Ти можеш поділитися баченням, пропонувати варіанти рішень дизайн-системи, можеш сперечатись, доводити, аргументувати. Але щоб дійти до цього, необхідно пройти перший етап – технічний прескринінг, а потім два технічні інтерв'ю, під час яких маєш швидко написати робочий код. Тобто просто вміти вирішувати дві «жовті» задачі за 45 хвилин із робочим кодом без помилок. Ця навичка — те, на що потрібно витратити 85% часу. І це те, що розповідає Продж і Ваня, за що йому безмежно вдячний.

Саша Савсуненко на фоні графіті

Про підготовку до співбесід

Підготовці до технічного прескринінгу я присвячував час щодня протягом місяця: у будні 4-5 годин (до і після роботи) й у вихідні по 8. Весь цей час я розв'язував задачі різної складності, бо в принципі були відомі цифри: щоб пройти таке інтерв'ю, потрібно вирішити близько 100-120 задач з програмування на LeetCode.

Підготовка до поведінкового інтерв'ю зайняла в мене буквально годину. Я виписав на аркуші відповіді на стандартні запитання, щоб мати їх перед очима під час розмови.

Наприклад:

  • які мої найбільші факапи і як я їх виправив;
  • якими технічними проривами пишаюсь;
  • як звільняв і наймав команду;
  • як менторю людей.
Головна порада до цього етапу — не намагатись прикрасити реальність. З тобою спілкується дуже досвідчена людина, тож будь-яка брехня буде помітною.

До інтерв'ю з машинного навчання підготовка була достатньо зрозумілою. Facebook заздалегідь надсилає перелік людей, тому я вивчив людину, яка мала мене інтерв'ювати: прочитав його наукові публікації, знайшов і переглянув записи виступів на конференціях і знав приблизно, чим він займається. Так я міг передбачити, з якої сфери чекати на запитання. Він справді почав запитувати про те, в чому спеціалізується. Оскільки я підготувався, міг бути на одній хвилі, бо в алгоритмах будування пошукової видачі взагалі не розбирався (я займався computer vision — комп'ютерним зором).

Дизайн-інтерв'ю — напевно найскладніше, бо є вирішальним, щоб отримати вищий рівень пропозицій і оцінку компанії. Його мало хто проходить, бо підготуватись майже неможливо, особливо без практичного досвіду побудови систем. Тут мені пощастило, тому що як-не-як я зіштовхувався з розгортанням систем. Я не є фахівцем, але щонайменше знав, які є складові і як ними оперувати. Так я зміг побудувати необхідну систему.

портрет Саші в повний зріст

Про підтвердження оферу

Коли мені повідомили про згоду, я подзвонив дружині і сказав, що ми переїжджаємо. Ще кілька місяців закривав справи в Ring і передавав обов'язки. Але в перший же день, звичайно, напився :)

У цілому переїзд в Facebook — величезний плюс компанії. Тебе ніби загортають у теплу ковдру і намагаються мінімізувати проблеми, наскільки це можливо: допомагають з документами, організовують трансфер речей, знаходять тимчасове житло після прибуття і буквально оплачують до нього таксі, допомагають з податковими консультантами, юридичним супроводом, пошуком школи для дитини і надають свого ріелтора. Переїжджати за кордон з сім'єю — дуже складно, і проблем не уникнути навіть за такої підтримки. Я вдячний, що найскладнішим у нашому випадку було тільки очікування відповідей на запити в різні структури.

Сам переїзд зайняв кілька місяців. Робота з документами в умовах карантину особливо затягувала процес, бо я отримував дозвіл на роботу в Лондоні. Період від червня до жовтня був напруженим, багато невизначеностей і пауз було до останнього. Наприклад, моєму синові дали візу за кілька днів до вильоту — до того ми навіть не розуміли, в якому складі поїдемо. Юристи допомогли пришвидшити процес і переїхати усій сім'ї.
Саша грає зі світлом

Поради з досвіду Саші

1
Не бійтеся співбесід. Самі інтерв'ю виявились легші, ніж те, до чого я готувався. Ніяких запитань космічної складності ставити не будуть. На подібних посадах цікавляться простими фундаментальними речами, які треба швидко і якісно вирішувати.
2
Багато працюйте над собою — щоб не боятися співбесід, зокрема. Треба вирішувати задачі і наосліп писати 10 стандартних алгоритмів із різних напрямків без помилок, навіть якщо розбудять посеред ночі. Це точно пропустить через перші ворота технічних інтерв'ю. Все інше залежить від досвіду.
3
Звертайтеся за порадою, якщо ваші знайомі вже пройшли цей шлях. Мій друг переїхав у Facebook за два місяці до мене. Він не програміст, але ми регулярно зідзвонювались і він ділився своєю історією та порадами.
4
Не хвилюйтесь через переїзд. Ви однозначно потрапили у хороше місце — це треба собі повторювати. Вас не кинуть і не образять, а зроблять все, щоб благополучно і комфортно облаштувалися.
Створити власну історію та покращити навички ви можете на курсі Algorithms.

Текст: Тоня Чундак
Фото: Наталія Азаркіна
Досвід
Сподобалась стаття?