48

Codziennie do Facebooka wprowadzają setki zmian – rozmowa z Polakiem pracującym 3 lata dla FB

Podczas warszawskiej imprezy Facebooka dla programistów miałem okazję porozmawiać chwilę ze Sławkiem Bielem, z którym wspólnie ocenialiśmy finalistów konkursu. Sławek pracuje jako developer Facebooka w Londynie, wcześniej spędził dwa lata w US. Rozmowa miała dość luźny charakter, ponieważ nie był to klasyczny wywiad, a raczej pogaduszki na korytarzu (oczywiście uprzedziłem go, że nagrywam a później […]

Podczas warszawskiej imprezy Facebooka dla programistów miałem okazję porozmawiać chwilę ze Sławkiem Bielem, z którym wspólnie ocenialiśmy finalistów konkursu.

Sławek pracuje jako developer Facebooka w Londynie, wcześniej spędził dwa lata w US. Rozmowa miała dość luźny charakter, ponieważ nie był to klasyczny wywiad, a raczej pogaduszki na korytarzu (oczywiście uprzedziłem go, że nagrywam a później spiszę naszą rozmowę).

Pracujesz już długo dla Facebooka. Jak to się zaczęło?

W momencie, kiedy zaczynałem Facebook był już duży – 300 milionów użytkowników. To oni się do mnie zgłosili poprzez Top Codera, stronę dla programistów. Na pewnej imprezie, w której startowałem Facebook był  jej sponsorem. Szukali ludzi, a ja się tym zainteresowałem. Otrzymałem maila od rekruterki, czy jestem zainteresowany.

Przeczytałeś wiadomość “Z tej strony Facebook czy jesteś zainteresowany”?

Jeszcze wtedy nie miałem konta. Sporo o nim słyszałem, ale nie znałem  dokładnie jak  wygląda od wewnątrz. Sprawdziłem, że to fajna firma. Poza tym nic nie zaszkodziło porozmawiać. Na początku miałem krótkie interview przez telefon.

Przez telefon?

Tak, zwykle jest to rozmowa i testy na miejscu., całość skupia się najczęściej na możliwości kodowania. Trzeba napisać jakiś program, zadanie, czy jakiś kod, który to rozwiązuje.

Podczas rozmowy, tak na żywo ?

Tak, na żywo – jeśli rozmowa jest przez telefon to korzystamy ze specjalnej strony gdzie kandydat rozwiązuje zadania. Na rozmowach na miejscu, zwykle piszemy po prostu na tablicy. Trzeba użyć flamastra i po prostu to napisać.

Po prostu to przeszedłeś i zaprosili Cie do pracy w Stanach?

Tak, pracowałem tam niecałe trzy lata.

Teraz Londyn?
Tak, chcieliśmy otworzyć nowe biuro dla inżynierów w Europie

Czemu nie w Warszawie? (wiem naiwne pytanie)

Wybieraliśmy miejsce gdzie jest duża pula kandydatów, dwa potrzebujemy miejsca, do którego ludzie będą chętnie przyjeżdżać.

Nie próbowałeś lobbować za Warszawą (śmiech)

Ciężko. Kraje anglo-języczne są wyborem znacznie łatwiejszym, jeżeli ma być jedno duże biuro w Europie, dlatego ściągamy ludzi z całego świata, z Azji, Ameryki. Ludzie nie są jednak tak chętni żeby przeprowadzić się do Polski. To chyba był główny powód wybrania Londynu

Teraz zajmujesz się infrastrukturą czyli takimi rzeczami, które dla użytkownika nie są widoczne.

Tak, Potrzebujemy dużej ilości serwerów :)

W Polsce jak i zapewne na świecie jest dużo “cwaniaków”, którzy wykorzystują luki w Facebeooku/ social graph do tego aby nabijać sobie fanów / robić inne “nieładne” rzeczy.  Jak sobie z tym radzicie?

To jest duża grupa, bardzo dużo pracy poświęcamy właśnie na te zadania. Wszystkiego rodzaju spamerzy, próby hackowania systemu, odgadnięcie haseł, to sprawa, którą bardzo poważnie traktujemy. Są dwa duże zespoły, które zajmują się właśnie tymi rzeczami. Mamy też w Londynie osoby, które będą zajmowały się bezpieczeństwem (choć dopiero zaczynamy) i spamerami

Czy będzie można się do nich zgłaszać bezpośrednio, czy przez dotychczasowe punkty inforamcyjne?

Istnieje punkt gdzie zgłasza się takie problemy (formularze), nie możemy odpowiadać bezpośrednio każdemu

No właśnie wiesz jak sobie radzi z takim zgłoszeniami, przecież takich zapytań, zgłoszeń problemów z hasłami itp. przy tej skali musi być tysiące dziennie.

Nie, miliony…

Jezu…

Ok, nie wiem dokładnie. Nasza drużyna od kontaktów z użytkownikami ma kilkaset osób, siedzą cały dzień i czytają i przeglądają zgłoszenia.  Mamy narzędzia, które nam ułatwiają zarządzanie zgłoszeniami. Staramy się robić wszystko tak, żeby ludziom już na poziomie zgłoszenia problemu sugerować dobre odpowiedzi.

Nie tak dawno w sieci krążyły pogłoski o botach na Facebooku. Jest to istotne z punktu widzenia reklamodawców, którzy obawiają się automatycznego nabijania klików i co za tym idzie droższych CTR-ów

To bardziej plotka.  Ci sami ludzie którzy w Facebooku zajmują się spamem, również pilnują fałszywych kont i ich likwidacją. To raczej na bieżąco idzie.

Ale ostatnio była jakaś większa akcja związana z 1% ‘lajków’, które zostały skasowane. To pewnie jakaś gigantyczna liczba.

To jest ciągła walka. Oni coś wymyślą nowego, ktoś u nas musi się zorientować co się dzieje, załatać dziurę i wyrzucić dane które dzięki niej powstały. To jest ciągła walka w której z jeden strony mamy tych którzy za wszelką cenę próbując coś “zbroić”  i z drugiej strony zespół który stara się do tego nie dopuścić.

A jak to wygląda od Twojej strony? Czy zajmujesz się tylko optymalizacją, czy też na przykład rozwiązywaniem niespodziewanych problemów? Co się stanie, gdy strona w jednym kraju przestanie działać czy ty też interweniujesz ?

Bardzo różnie. Zwykle danym problemem zajmuje się osoba, która się na tym zna. Komunikujemy się wewnętrznie, za pomocą kanału IRC dzięki temu szybko można uzyskać pomoc od innej grupy w rozwiązaniu danego problemu

IRC-a macie? Żartujesz?  (śmiech)

No tak (śmiech)
Tak, sprawdza się świetnie w komunikacji przy większej ilości osób :)

Myślałem, że używacie Facebookowego messengera? No tak, ale jak strona nie działa

No właśnie..infrastruktura do przeciwdziałania wypadkom musi być oddzielona od tej głównej.

Powiedz, co jest największym wyzwaniem jeśli chodzi o optymalizację Facebooka? Ilość tekstów (statusów), zdjęć? A może nagłe piki w ruchu ?

Najważniejsze w naszej pracy jest to abyśmy mogli nadążyć za wzrostem liczby użytkowników i ich aktywnością i aby na to wszystko starczyło nam infrastruktury. Staramy się aby w godzinach szczytu była odpowiednia liczba maszyn aby to wszystko utrzymać.

Dużo jest tez takiego planowania i myślenia o tym? Jaki będzie nasz użytkownik za pół roku i jakie w związku z tym będą nasze potrzeby jeśli chodzi na przykład o liczbę maszyn?

Jedną taką rzeczą, która na Facebooku nie jest tak do końca widoczna, jest video. YouTube przeżywa rozkwit, czy są jakieś plany by uderzyć w ten segment? Co jeśli materiałów video pojawi się na Facebooku bardzo dużo – dla laika video wydaje się być największym wyzwaniem jeśli chodzi o utrzymanie infrastruktury?

Poradzimy sobie :)
Używamy tej samej infrastruktury do video, co do zdjęć. Mamy już dużą wprawę, żeby to wszystko się mieściło :)  Nie martwimy się tym, żeby ludzie zaczęli nas więcej używać.  To nie jest problem…

To co jest w takim razie największym wzywaniem? Zakładam, że wydajnych maszyn macie pod dostatkiem, a jak jest potrzeba to jednym “suwakiem” dorzucacie ile potrzeba

Problem jest taki, żeby nie rosło to szybciej niż użytkowanie. Żeby kod, który wprowadzamy nie wprowadzał regresji do kodu. Bez kontroli za chwilę mielibyśmy chaos, trzeba więc na to patrzeć cały czas i pilnować codziennie co się dzieje i co się zmienia. Ważne jest też aby rozumieć co się zmieniło i czy nie można danej zmiany zrobić inaczej.

My releasujemy kod praktycznie codziennie, codziennie jest kilkaset zmian wprowadzanych przez programistów Facebooka.

Codziennie?

Tak i każda taka zmiana potencjalnie może zmienić wskaźniki wydajności. Dlatego też ciągle obserwujemy i wychwytujemy jakie zachodzą zmiany. Staramy się wychwycić jak najwięcej tych błędnych zanim trafią do produkcji, a jeśli już tak się stanie to musimy szybko reagować.

Czy w takim razie taki proces developmentu jest zbliżony do tego, co się dzieje w innych firmach, korporacjach, czy to jest o wiele bardziej specyficzne? Rzadko kto robi releasy do produkcji klika razy dziennie. Wyobrażam sobie, że gdyby zastosować klasyczne zarządzanie kodem to pewnie paczki do produkcji szły by raz na miesiąc i wszystkie zmiany czekałby do momentu relesu paczki do produkcji.

Dla nas proces jest taki, żeby było jak najmniej procesów:)

Naprawdę jest tak, że nie ma za dużo formalności związanych z wprowadzaniem nowego kodu do systemu? Nie ma akcpetacji podpisów  i wielopoziomowych zatwierdzeń?

Nie potrzebujemy akceptacji, podpisów, czy formalności. Nie ma wstępnych prezentacji, meetingów, a ludzie nie spotykają się aby przedyskuować zmiany w danym kodzie. Chodzi o czywiście o te zmiany, które nie mają bezpośredniego wpływu na użytkownika.

Po prostu piszą kod, a nasze automatyczne testy je wyłapują, sprawdzają błędy i poprawność. Każdą zmianę, którą chce się wprowadzić musi być sprawdzona przez innego programistę, te poważniejsze, które wpływają na więcej użytkowników wymagają więcej planowania itp.

Ostatnie pytanie (zaraz mieliśmy oceniać projekty), czy w Facebooku można jeszcze znaleźć kod Zuckerberga?

Tak, oczywiście – nadal są fragmenty kodu oryginalnego Facebooka. Technologia się nie zmieniała cały czas są to te same narzędzia co kiedyś tak więc cały czas jest sporo w kodzie z początkowej wersji serwisu.

Jak się pracuje z Markiem Zuckerbergiem?

To nadal normalny facet, siedzi razem ze wszystkimi na sali, nie ma własnego gabinetu i nie izoluje się od reszty. Ma wprawdzie dużo spotkań, ale bardzo często widać go w biurze pracującego na swoim komputerze.

Dzięki za rozmowę (musieliśmy uciekać na salę bo za chwile miały się odbyć prezentacje)