Do dziś wracam myślami do dnia, w którym Airbnb mnie odrzuciło. Chyba częściej, niż powinienem.
Było późne popołudnie. Wyszedłem z ostatniej rundy, wsiadłem do samochodu i przez dwadzieścia minut siedziałem, patrząc w kierownicę. Kiedy rekruter wyjaśnił mi decyzję, okazało się, że nie zawaliłem programowania ani projektowania systemów. Poległem na pytaniu o belonging, o to, jak sprawić, żeby ktoś poczuł się mile widziany w zespole.
Miałem wtedy za sobą serię rozmów w Google i byłem przekonany, że całe przygotowanie sprowadza się do kodowania. Spisałem i przećwiczyłem dwanaście historii w formacie STAR. Każda dotyczyła dostarczania funkcji, radzenia sobie z różnicą zdań albo spraw technicznych. Bank historii uważałem za zamknięty: zrobiłem go jako pierwszy, nie martwiłem się nim i ani razu do niego nie wróciłem.
Dokładnie tyle samo uwagi poświęciłem rundzie kulturowej. Próbne sesje z kodowania planowałem bez przerwy. Przed pracą rozwiązywałem grafy, a w porze lunchu oglądałem materiały o projektowaniu systemów.
Przez tę harówkę patrzyłem na rundy techniczne jak przez tunel. Była koleżanka z zespołu nawet się ze mnie nabijała. Pół roku wcześniej powtarzała mi, że w końcowej ocenie Airbnb kultura waży tyle samo co kodowanie. Roześmiałem się, i to głośno. Nie kłóciła się, po prostu zmieniła temat. Byłem pewien, że robię wszystko jak należy.
Ready to ace your next interview?
InterviewMan gives you real-time AI answers during live interviews — undetectable on Zoom, Meet, and Teams.
Try InterviewMan FreeTyle że niezależnie od liczby przerobionych zadań przeoczyłem całą jedną rundę. Kluczową. Nie byłem dość „paranoiczny”, by przygotować się na rozmowę o kulturze czekającą na końcu procesu.
W tamtym pokoju dostałem trzy pytania. Wszystkie trzy dotyczyły tego, jak sprawić, żeby ludzie czuli, że są częścią grupy. Ani jedna z moich dwunastu historii nie mówiła o włączaniu innych. Zdołałem wyciągnąć jedynie opowieść o wdrażaniu nowego inżyniera w poprzedniej firmie. Już w trakcie słyszałem, jak beznadziejnie to brzmi. „Be a Host” i „Belonging” to ich prawdziwe podstawowe wartości, a nie hasła na plakacie. Nie miałem niczego, co zahaczałoby choćby o jedną z nich.
Przeciętni programiści, którzy świetnie wypadają w części kulturowej, dostają oferty. Mocni programiści, którzy ją zawalą, odpadają. Taką matematykę przedstawiła mi koleżanka. Uznałem, że trochę dramatyzuje na temat dawnego pracodawcy. Tymczasem opisywała faktyczny sposób punktowania.
Sam lejek wyglądał u mnie tak. Zanim porozmawiałem z jakimkolwiek człowiekiem, czekał test HackerRank: dwa zadania o średnim poziomie trudności i czterdzieści pięć minut.
Trafiła mi się manipulacja tablicą oraz drzewo binarne. Ktoś z obserwowanego przeze mnie Discorda dla uczestników bootcampu dostał graf zamiast drzewa, więc pytania dobierają z większej puli.
Oczekiwali też prawdziwego, działającego kodu, nie pseudokodu. To mnie zaskoczyło, bo przyszedłem po rozmowach w Google, gdzie wszystko zostawało na tablicy.
Następna była trzydziestominutowa rozmowa z rekruterem. W praktyce sprawdzali, czy jestem normalnym człowiekiem i naprawdę chcę tej pracy.
Rozmowa telefoniczna trwała czterdzieści pięć minut. Dostałem spójne składowe rozwiązywane przez DFS, uporałem się z nimi w około dwadzieścia minut, a przez resztę czasu osoba prowadząca pomagała mi szukać przypadków brzegowych. W pewnym momencie powiedziała wprost: „warto sprawdzić puste dane wejściowe”.
Mało nie spadłem z krzesła. W Google nikt niczego nie podpowiada. A przynajmniej mnie nigdy tam niczego nie podpowiedziano.
W Airbnb naprowadzali mnie przez cały proces. Rysowali ze mną na tablicy. Podczas projektowania systemu osoba prowadząca stała obok i szkicowała razem ze mną. Całość miała atmosferę wspólnego programowania. Kodowanie wyglądało zupełnie inaczej niż w Google, głównie dlatego, że prowadzący faktycznie ze mną rozmawiali.
W dniu ostatniego etapu miałem dwie rundy kodowania i projektowanie systemu. Pierwsze zadanie dotyczyło sum ścieżek w drzewie binarnym z ograniczeniem głębokości. Dało się je zrobić, a ja pamiętam, że właśnie wtedy czułem się naprawdę dobrze.
Drugie polegało na scalaniu przedziałów dla nakładających się okien rezerwacji. Ubrano je w historię o rezerwacjach gości, które wchodzą ze sobą w konflikt, jakby ktoś wyjął problem prosto z ich kodu produkcyjnego. Poziom był od średniego do trudnego. Z czasem zrobiło się ciasno, ale skończyłem, choć przez ostatnie dziesięć z tych czterdziestu pięciu minut lał się ze mnie pot.
Później koleżanka wyjaśniła mi, że zawsze tak robią. Każde zadanie dostaje airbnbowską otoczkę: rezerwacje, oferty, okna dostępności. Pod spodem są te same drzewa, tablice, grafy i przedziały, które ćwiczyło się od tygodni. Nic egzotycznego, przynajmniej w żadnej z moich rund.
W projektowaniu systemów polecenie brzmiało: „zbuduj system rezerwacji i ofert”. Osoba prowadząca bez przerwy dorzucała kolejne scenariusze. Pierwszy: co się stanie, jeśli dwoje gości zarezerwuje tę samą ofertę dokładnie w tej samej sekundzie? Potem zapytała o gospodarza, który przestaje odpowiadać w trakcie rezerwacji. Dalej pojawiły się warianty cenowe, czyli cena zmienna zależnie od tygodnia oraz pory roku. Gdzieś po drodze straciłem rachubę. Pytania po prostu się nie kończyły.
Przerobiłem wcześniej standardowy materiał z YouTube o projektowaniu systemu hotelowego. Wystarczył może na czterdzieści procent tego, co dostałem. Reszta była ściśle związana z domeną Airbnb, więc siedziałem i wymyślałem odpowiedzi na poczekaniu.
Ready to ace your next interview?
InterviewMan gives you real-time AI answers during live interviews — undetectable on Zoom, Meet, and Teams.
Try InterviewMan FreeOgólne przygotowanie w rodzaju „zaprojektuj Twittera” rozpada się w tym pokoju. Mogę nawet wskazać dokładnie gdzie: współbieżność prowadząca do podwójnych rezerwacji i sposób jej obsługi, maszyny stanów gospodarza i gościa, dynamiczne ceny, działanie rankingu wyszukiwania, kalendarze dostępności w dużej skali. W oglądanych przeze mnie filmach na YouTube nikt nie poruszał żadnego z tych tematów.
Za drugim razem podszedłem do tej rundy inaczej. Najpierw powtarzałem cel własnymi słowami, potem zadawałem pytania ograniczające zakres. Sam proponowałem rozsądne liczby, zaczynałem od bardzo ogólnego obrazu, a następnie schodziłem głębiej tam, gdzie prowadząca wykazywała największe zainteresowanie. W obu podejściach najmocniej naciskała na podwójne rezerwacje. Za drugim razem projektowanie systemów stało się moją ulubioną częścią całego dnia. To dość absurdalne, bo właśnie tę rundę za pierwszym razem kompletnie położyłem. Naprawdę kompletnie.
Nawet lunch jest „niepunktowany” tylko w cudzysłowie. W wątku na r/cscareerquestions ktoś opisał, że osoba towarzysząca mu podczas lunchu wspomniała o czymś na jego temat w trakcie końcowej narady. Warto więc zachowywać się normalnie przez cały dzień.
Kilka miesięcy później wróciłem na drugą próbę. Tym razem przez cały proces korzystałem z InterviewMan. Różnica między tymi dwiema próbami przekonała mnie, żeby zająć się tym problemem na pełen etat.
Zaczęła się runda kulturowa, a narzędzie zdążyło już przywołać historię o belonging z naszej wcześniejszej rozmowy. Sam nie zorientowałem się jeszcze, do czego zmierza prowadząca. Całe moje odrzucenie wynikało przecież z belonging. Przy kodowaniu podejście z DFS pojawiło się po kilku sekundach od pokazania zadania. W projektowaniu systemów InterviewMan od razu wskazał współbieżność grożącą podwójną rezerwacją, dokładnie ten aspekt, na który poprzednio najmocniej naciskała prowadząca.
Sprawdziliśmy widoczność w Docku, na liście procesów i w Monitorze aktywności, zarówno w HackerRank, jak i Zoom. Nic się nie pojawiło. Przy rozliczeniu rocznym kosztuje to dwanaście dolarów miesięcznie, korzysta z niego pięćdziesiąt siedem tysięcy osób, ma ponad dwadzieścia funkcji stealth i nie nakłada limitów sesji. Interview Coder chce dwieście dziewięćdziesiąt dziewięć dolarów miesięcznie i obsługuje wyłącznie kodowanie. Tutaj kodowanie to dwie z pięciu rund, i akurat te dwie mają w Airbnb najmniejsze znaczenie.
Moja dawna koleżanka z zespołu miała rację dosłownie we wszystkim. O wyniku w tej firmie decydują historie związane z kulturą. Prawdziwe, z nazwiskami i wydarzeniami, które rzeczywiście miały miejsce.
Pamiętam, jak powiedziałem jej o odrzuceniu. Milczała przez jakieś pięć sekund. Odebrałem to jako „przecież dosłownie cię ostrzegałam”, zresztą miała pełne prawo powiedzieć to na głos.
Potem właściwie przestałem opowiadać tę historię. Nie chciałem przechodzić przez nią kolejny raz i specjalnie mi na tym nie zależało. Byłem po prostu wściekły na siebie: zjawiłem się z dwunastoma dopracowanymi historiami, ale bez ani jednej o belonging, choć wcześniej dostałem jasną informację, która runda ma znaczenie. Nauczyłem się tego w kosztowny sposób.
Ready to Ace Your Next Interview?
Join 57,000+ professionals using InterviewMan to get real-time AI assistance during their interviews.

