Українці в екосистемі Facebook
Привіт! Ми, команда DEV Challenge, мандруємо по всьому світу і спілкуємося з українцями, які працюють в топових продуктових компаніях. Щоб показати вам, як все влаштовано зсередини. Якщо вам сподобається стаття — ми оформимо це у спецпроект для DOU.
Facebook — компанія з мільярдним капіталом і роботодавець мрії. Магніт для найтехнологічніших умів планети, що притягнув до себе вже більше
Остап Коркуна колишній олімпіадник (золота медаль на чемпіонаті світу з програмування), а зараз громадський активіст. Вже 7 років працює в Кремнієвій долині на посаді Software Engineer в команді Monitoring (моніторинг інфраструктури Facebook). | Сашко Котлярський легенда і сайтбілдер лондонського офісу Facebook, зараз на посаді Software Engineer працює над технологією React Native в Каліфорнїі. Суддя DEV Challenge 2017. |
Facebook — це один великий продукт. Мікс розробки цілої екосистеми команд у величезній компанії. Всі працівники діляться на 2 ролі: інженери і менеджери. В компанії є глобальні цілі: важливі користувачі, важливо робити світ більш відкритим і об’єднаним, важливо приносити цінність. Це глобальні цілі. З них кристалізуються метрики, наприклад: скільки грошей користувачі витрачають на рекламу, яке залучення у постів, охоплення, скільки часу проводять користувачі на сайті, скільки у месенджері. Так формується те, чим займаються конкретні команди. Немає рознарядок.
Сашко: Команди постійно спілкуються між собою. Завжди є зворотній зв’язок. Проводяться внутрішні зустрічі, де команди розказують про свій досвід, презентують нові продукти. Так команди адаптують і коригують своє розуміння, куди і як рухатися далі.
Зверху вниз задаються тільки вектори руху, а знизу вгору йдуть рішення. Вплив продукту на інфраструктуру визначає форму навантаження. Це конкретні технічні задачі.
Остап: Є три важливі фактори, які роблять для мене роботу цікавою: складність, свобода і відповідальність. Всі ці три фактори сповна присутні в роботі інженера Facebook.
Під складністю мається на увазі складність задач. Прості задачі швидко набридають. А найбільше захоплюють ті задачі, до яких спершу навіть не знаєш як підійти. Знаходити рішення таких проблем приносить найбільше задоволення. Саме складні задачі дозволяють виходити з зони комфорту і розвиватися.
Свобода також важлива в багатьох аспектах. В робочій філософії Facebook свобода дозволяє інженерам бути максимально ефективними. Починаючи від достатньо вільного графіку роботи і закінчуючи вибором технологій, проекту і команди. Все це дозволяє інженерам працювати над тим і так, як вони хочуть. Завжди вважав програмування творчою професією, а свобода в творчості важлива :)
Ну і відповідальність — це той аспект, який спонукає інженера робити кращий, якісніший продукт. Facebook довіряє своїм інженерам приймати технологічні рішення і нести за них відповідальність. Таким чином компанія створює екосистему, в якій кожен інженер має важелі і інструменти, щоб бути ефективним.
Три принципи внутрішньої системи:
#Абсолютна довіра до співробітників. В перший день дають ноутбук і телефон з доступом до всього коду Facebook, і ти можеш одразу його міняти.
#Команди автономні. Інженери напряму відповідають за якість свого продукту. Тому немає чітких груп тестувальників. Команди самі пишуть код, самі тестують, самі деплоять, самі забезпечують підтримку, самі його фіксять.
#Гнучкість. Можливість обирати і міняти команди. Менеджери навіть дуже рекомендують інженеру раз на 2 роки брати hackamonth — спробувати місяць попрацювати в новій команді. Так інженер може випробувати себе в розробці нового продукту, отримати нові навички і не засиджуватися на місці.
Сашко: Після певного часу роботи в одній команді інженер «вростає» у предметну сферу, і поміняти команду — це майже як відпустка. Це один із важливих факторів, чому люди залишаються в Facebook надовго. Наприклад, я змінював команду тричі за 4,5 роки. Після буткемпу і переїзду в Лондон обрав Tools Frontend, де ми працювали над різними внутрішніми інструментами для Facebook. Коли через рік перебрався до Каліфорнії, взяв hackamonth в команді React Native, тому що дуже подобалась ідея ReactJS і був досвід розробки під iOS. Сподобалось, лишився в команді на 3 роки. Після цього зрозумів, що вже багато часу провів в одній сфері, і хотілось спробувати щось нове. Записався на ще один hackamonth в Oculus, сподобалось, лишився там тепер як користувач React Native. :)
Післяробочі посиденьки в Worms в лондонськму офісі
В якійсь мірі Facebook — це багато маленьких команд-стартапів всередині великої компанії. Команди самі за свої продукти відповідають. Як одна екосистема, де багато маленьких гравців. Тому не можна політично нав’язати якусь внутрішню розробку. Якщо продукт команди недостатньо якісний, то його просто не будуть використовувати всередині компанії. Інші команди знайдуть щось інше або напишуть своє. Такі склалися ринкові умови.
Остап: У нас не слідкують, скільки часу ти провів за робочою машиною чи скільки рядків коду написав. Сьогодні, наприклад, мій hard-дедлайн, щоб потрапити в офіс — це зустріч о 14:00 по обіді в офісі. Далі по 17:00 в мене ще зустрічі. А так-то я працюю там, де мені зручно, і коли я найбільш продуктивний. Наприклад, я працюю в душі, коли думаю над проектом. Часто до обіду я можу вирішувати свої важливі неробочі задачі, а потім до пізнього вечора працювати. На щастя, дружина не дозволяє мені працювати цілу ніч. На вихідних працюю рідко, бо маю достатньо інших соціальних та громадських задач.
Робочий гамак Сашка в лондонському офісі
Bootcamp. Період адаптації
Дуже важливо зрозуміти, що Facebook наймає конкретну людину, а не команду. Тому люди не приписані до команди, коли приходять у Facebook, за рідкісним винятком спеціалістів з великим досвідом у певній вузькій галузі. Більшість приходять як generalist-и (програмісти широкого профілю, так би мовити). І перші 6 тижнів новий інженер проводить в буткемпі — своєрідному тренувальному таборі, де йому випадковим чином накидують завдань з різних команд. Новий інженер ходить на лекції, де розказують, як все працює, і виконує реальні задачі. Далі спілкується з менеджерами команд, щоб краще познайомитися і зрозуміти, чи підходить він команді і навпаки.Так відбувається процес знайомства з командами. Тотальний взаємовибір. Після 6 тижнів інженер обирає, з якою командою йому залишатися. Люди знаходять один одного.
Остап: Коли вчишся, ти робиш багато помилок. Якщо помилки не толерують — то навчання не може бути ефективним. Learning environment передбачає високий рівень толерантності до помилок. Ніхто від тебе не очікує, що ти будеш все знати, але очікують, що ти будеш швидко вчитися.
Не існує ідеальних систем і, можливо, буткемп не підійде для всіх компаній. Але, враховуючи особливості роботи в Facebook, він прекрасно до них готує. Оскільки ми рідко наймаємо у конкретні команди і інженер має право сам обирати команду, буткемп дозволяє познайомитися з різними командами і попрацювати з ними, перед тим як робити вибір. Буткемп вчить спілкуватися, а в Facebook робота у великій мірі побудована на постійній комунікації. Також буткемпери інтенсивно вчать всі внутрішні технології. Багато чого, як і в подальшій роботі, доводиться вивчати з нуля і швидко.
Наприклад, моєю першою задачею в буткемпі було виправити дрібний баг на сайті. До цього я PHP практично не бачив і ніколи не використовував. Виправити баг це не завадило. Все майже як на С++, тільки до всіх змінних потрібно дописувати «$» ;)
Ще одна задача полягала в рефакторингу великої бібліотеки на менші. Розбиратися повністю, як працює бібліотека, було б дуже довго. Замість того я трохи підправив одну з внутрішніх утиліт для знаходження зв’язків в коді і змусив її вивести мені граф зв’язків, який я потім просто розбив на компоненти. Таким чином успішно виконав завдання, не витрачаючи надто багато часу. Цікаве в цій історії те, що утиліта, яку я створив і, за порадою ментора, зробив доступною для інших інженерів, стала більш корисною, ніж сама бібліотека, над якою я працював спочатку.
Атмосфера лондонського офісу, двері з космічного корабля фільму «Прометей»
Буткемп дуже важливий, бо дає цілісне розуміння, як виживати в цій екосистемі. І тоді стажери та новачки самі стають частиною усіх процесів. Окрім цього, інженери постійно проводять спеціалізовані курси peer-to-peer. Це один із найважливіших способів передачі знань у Facebook. Кожен викладає по своїй частині. Формат —
Зарплатня у Facebook
Facebook платить не найбільшу з/п в Долині. Але якщо взяти все в сумі: акції, зарплата, соцпакет, бонуси і відпустки, оплати медичних витрат, безкоштовна пральня в офісі, безплатна їжа, то виходить дуже круто. Цілком конкурентоспроможна компенсація. Приблизно така ж, як і в інших гігантів галузі — Google, Amazon, Apple.
Відпустка 21 день на рік, декретна відпустка 87 днів (для тата й мами), додаткова місячна відпустка після 5 років роботи, медична страховка для працівника і сім’ї, 401(k), $700 на різні оздоровчо-спортивні витрати на рік, 2 спортзали в офісі, 10 ресторанів з безкоштовною їжею, перукарня, стоматолог і медпункт.
Типовий робочий стіл інженера у Facebook
Як потрапити на роботу у Facebook
Звичайно, можна знайти вакансію та податися у офіційному розділі. Щоправда, коли Сашко відправив так резюме, йому відповіли відмовою. В результаті він потрапив у Facebook через хакатон в Україні. То був перший міжнародний хакатон, бо зазвичай Facebook проводить заходи лише в американських університетах. Сашко, як і Остап, брав участь в олімпіадах з програмування, але далі обласних змагань не доходив. Після семінару від Facebook був дуже вражений тим, як там запускають продукти, як тестують код.
Сашко: В той час я взагалі не думав про Facebook, як технологічну компанію. Не знав, що у них проводяться стажування і можна туди податися — відправити резюме. Я просто відправив їм резюме, але, можливо, вибрав не ту вакансію. На той запит вони написали, що у мене недостатньо досвіду. Після цього вже на хакатоні ми з другом створили програмку, яка дозволяє peer-to-peer чат між двома користувачами. В результаті ми нічого не виграли. Нас ніхто не обрав. Але я відкрив велику таємницю: перемога на хакатоні майже нічого не вирішує. Якщо ти його виграв — дуже класно, але найцікавіше — спілкуватися з людьми, які туди прийшли. Рекрутери роблять акцент на учасників, а не на трьох переможців. Їх цікавлять всі.
Через деякий час рекрутери Facebook cамі написали листа. Коли Сашко вже підписав офер, візи в Америку закінчилися. І тоді саме відкрили інженерний офіс в Лондоні. Було дуже мало проектів — лише п’ять. Так усе почалося.
Сашко: В лондонському офісі займався фронтендом, деякими інструментами, що пов’язані з конфігурацією. А зараз, до речі, десь 300 інженерів в Лондоні. Пізніше переїхав, бо оригінальний офер був в Америку, і я вирішив спробувати Штати. З соціального аспекту Лондон набагато цікавіший. Жодних вихідних не було, щоб не мав чим зайнятися. Культура більш близька, менший офіс, в основному європейці. Наша культура трохи більше з нею збігається, ніж з американською. А в США доводиться підлаштовуватися. А з робочого аспекту — в центральному більше проектів і можна швидше рости.
Сашко кодить і поки не підозрює, що на цьому хакатоні отримає офер від Facebook, 2012, Київ
Остап вже більше 7 років працює у Facebook, але взагалі він не шукав, як потрапити туди або кудись в Долину. В Україні мав супергнучкий робочий день, добру з/п. У Facebook його привела складність і цікавість задач.
Остап: Facebook наймає спеціалістів з різним рівнем досвіду. Загалом, скільки б досвіду у вас не було, важливо показати, що ви використовуєте свій час з користю, розвиваєтеся. Тому студент ви чи вже усталений професіонал, важливо, щоб ваше резюме показувало, що ви знаходили для себе складні задачі і вирішували їх. Знання конкретних технологій чи мов — це лише інструмент. В Facebook, швидше за все, потрібно буде вчитися чомусь новому. Але важливо показати, що ви можете користуватися цими інструментами, щоб вирішувати реальні задачі.
Молодим і активним раджу займатися тим, що їм подобається, і займатися цим серйозно. Якщо це програмування, то вкладаючи достатньо часу і енергії, шукаючи складні задачі і вирішуючи їх, ви обов’язково досягнете успіху, і компанії світового рівня (як Facebook) конкуруватимуть за вас. Чим конкретно займатися? Оберіть те, що вам подобається: олімпіади, хакатони, власні проекти — варіантів багато, потрібні лише комп’ютер, інтернет і бажання. Якщо ж нічого з цього вас не захоплює, можливо, програмування не для вас? :)
Остап мігрує по столах, придивляючись до потенційних кандидатів на роботу
Сашко: Треба розуміти, що Facebook наймає інженерів різних рівнів — від випускників до ветеранів нашої індустрії. Вимоги до кожної категорії теж різні. На мови програмування не звертають уваги, але потрібно вміти розв’язувати технічні задачки (важливо на всіх рівнях).
Студентам раджу брати участь у змаганнях з програмування і хакатонах, знайомитися з іншими розробниками, працювати над своїми проектами, шукати стажування за кордоном, вчити англійську мову.
Магістрам і аспірантам — займайтесь machine learning та computer vision, це наразі дуже актуальні теми.
Більш досвідченим в індустрії — участь в конференціях, бажано в ролі доповідача, працювати над open source проектами, завжди розширювати свої горизонти. Багато колег приєдналися саме так — через активну участь в спільнотах розробників.
P. S. Хочеш прочитати про певну компанію зсередини чи розказати нам про себе — пиши в коментарях чи на hello@devchallenge.it