
Aleksander Baranow pracuje w Veeam jako dyrektor R&D i żyje między dwoma krajami. Połowę swojego czasu spędza w Pradze, a drugą połowę — w Petersburgu. W tych miastach znajdują się największe biura rozwoju Veeam.
W 2006 roku była to startup dwóch przedsiębiorców z Rosji, związany z oprogramowaniem do tworzenia kopii zapasowych maszyn wirtualnych (stąd też nazwa — V[ee][a]M, maszyna wirtualna). Dziś to gigantyczna korporacja, która zatrudnia ponad cztery tysiące pracowników na całym świecie.
Aleksander opowiedział nam, jak to jest pracować w takiej firmie i jak trudno jest się do niej dostać. Poniżej znajduje się jego monolog.
Tradycyjnie przedstawiamy ocenę firmy na „Moim kręgu”: Veeam Software otrzymał od swoich pracowników . Cenią ją za dobry pakiet socjalny, komfortową atmosferę w pracy, interesujące zadania oraz za to, że firma sprawia, że świat staje się lepszy.

Jakie produkty rozwija Veeam
Produkty, które zapewniają odporność infrastruktury IT. Na szczęście w miarę upływu czasu sprzęt stał się wystarczająco niezawodny, a chmury zapewniają odporność. Jednak błędy ludzkie nadal pozostają.
Na przykład klasyczny problem niekompatybilności aktualizacji z infrastrukturą organizacji. Administrator uruchomił niezbadany update lub odbyło się to automatycznie, co spowodowało awarię serwerów firmy. Inny przykład: ktoś wprowadził zmiany w wspólnym projekcie lub zestawie dokumentów, uznając to za zasadne. Później ujawniono problem, co wymagało przywrócenia stanu sprzed tygodnia. Czasami takie zmiany nawet nie są związane z świadomymi działaniami człowieka: stosunkowo niedawno popularność zdobyły wirusy-kryptolockery. Użytkownik przynosi do komputera roboczego pamięć USB z wątpliwą zawartością lub wchodzi na stronę z kotkami, a w rezultacie komputery w sieci zostają zainfekowane.
W sytuacji, gdy coś złego się już zdarzyło, dajemy możliwość przywrócenia zmian. Jeśli jednak zmiany są dopiero planowane, pozwalamy na przeprowadzenie kontroli ich wpływu w izolowanej infrastrukturze, odtworzonej na podstawie kopii zapasowej centrum danych.
Często kopie zapasowe pełnią rolę „cichego świadka” podczas audytu w organizacji. Firmy publiczne muszą spełniać wymogi zewnętrznych regulatorów (np. Ustawa Sarbanesa-Oxleya), co nie jest przypadkowe. W 2008 roku stan światowej gospodarki zachwiał się, ponieważ niektórzy uczestnicy rynku finansowego, mówiąc wprost, fałszowali wyniki swojej działalności. To uruchomiło lawinę i gospodarka osłabła. Od tego momentu regulatorzy ściślej kontrolują procesy w firmach publicznych. Możliwość przywrócenia stanu infrastruktury IT, systemu pocztowego, systemu obiegu dokumentów za okresy sprawozdawcze — to jedno z wymagań audytorów.
Microsoft, Amazon, Google i inni dostawcy chmurowi oferują natywne rozwiązania, które zapewniają tworzenie kopii zapasowych zasobów w chmurze. Jednakże ich rozwiązania to „rzeczy w sobie”. Problem w tym, że większość dużych firm posiada hybrydową infrastrukturę IT: część znajduje się w chmurze, a część na ziemi. W chmurze zwykle znajdują się projekty webowe i aplikacje skierowane do klienta. Aplikacje i serwery, które przechowują poufne informacje lub dane osobowe, najczęściej znajdują się na ziemi.
Oprócz tego organizacje korzystają z kilku różnych chmur, aby stworzyć jedną hybrydową, aby zminimalizować ryzyko. Kiedy międzynarodowa firma buduje hybrydową chmurę, potrzebuje jednolitego i wspólnego dla całej infrastruktury systemu odporności na awarie.

Jak trudno jest rozwijać takie produkty
Ciągle pojawiają się nowe technologie, które wymagają nauki, adaptacji i doświadczenia. Kiedy tylko się pojawiliśmy i byliśmy startupem, niewiele osób traktowało wirtualizację poważnie. Istniały aplikacje do tworzenia kopii zapasowych fizycznych centrów danych. Na wirtualizowane centra danych patrzono jak na zabawki.
Zaczęliśmy wspierać backup z uwzględnieniem wirtualizacji od samego początku, kiedy to technologia była używana tylko przez entuzjastów. A potem nastąpił jej eksplozjowy wzrost i uznanie jako standardu. Teraz widzimy inne obszary, które czeka taki sam jakościowy skok, i staramy się być na fali. Umiejętność dostosowywania się do zmieniających się warunków jest wbudowana w DNA firmy.
Firma przeszła już przez etap startupu. Teraz wielu dużym klientom zależy na stabilności i niezawodności, a proces podejmowania decyzji o ciągłości działania może przeciągać się przez wiele lat. Trwa adaptacja, testowanie produktów i spełnianie licznych wymagań. Powstaje ciekawa sytuacja — z jednej strony trzeba zapewnić niezawodność i pewność w produktach, a z drugiej — pozostać nowoczesnym.
Jednak nowości zawsze wiążą się z pewnym poziomem nieznajomości technologii, rynku lub obu tych rzeczy.
Na przykład, po kilku latach działalności zrozumieliśmy, że musimy wykorzystać wbudowane możliwości systemów przechowywania danych, aby przyspieszyć proces tworzenia kopii zapasowych. Tak powstał cały dział zajmujący się integracją z producentami sprzętu. Obecnie partnerami Veeam w tym programie są wszyscy czołowi gracze na tym rynku — HP, NetApp, Dell EMC, Fujitsu i inni.
Wydawało nam się także, że wirtualizacja wyprze klasyczne serwery. Tymczasem życie pokazało, że pozostaje ostatnie 10% fizycznych serwerów, które nie mogą być wirtualizowane albo ich wirtualizacja po prostu nie ma sensu. I te również należy zabezpieczać. Tak powstał Veeam Agent for Windows/Linux.
Kiedyś uznaliśmy, że Unix zasługuje na swoje miejsce w muzeum i zrezygnowaliśmy z jego wsparcia. Jednak gdy zaczęliśmy współpracować z klientami z długą historią, zrozumieliśmy, że Unix jest nadal żywy. I mimo tego napisaliśmy dla niego rozwiązanie.
Podobna historia dotyczyła taśmowych nośników danych. Pomyśleliśmy: „kto ich potrzebuje w nowoczesnym świecie?” Wtedy pracowaliśmy nad takimi funkcjami jak granularne przywracanie danych czy przyrostowa kopia zapasowa z syntetyczną pełną kopią — a tego na taśmie po prostu nie można było zrobić, potrzebny był dysk. Potem okazało się, że taśmowe nośniki działają jako jedno z rozwiązań do zapewnienia niezmiennych kopii zapasowych, które są potrzebne do długoterminowego przechowywania — by po 5 latach móc podejść, wziąć taśmę z półki i przeprowadzić audyt. A klienci — zaczynaliśmy od małych — a tam nikt nie używa taśm. A potem urosły nam do klientów, którzy mówili, że bez taśm produktu nie kupią.

Jakie technologie są wykorzystywane w Veeam
Do zadań związanych z logiką biznesową używamy .NET. Od tego zaczynaliśmy i nadal optymalizujemy. Obecnie w niektórych rozwiązaniach korzystamy z .NET Core. Gdy startup dopiero powstawał, w zespole było kilku zwolenników tego stosu. Dobrze nadaje się do pisania logiki biznesowej, szybkości rozwoju i wygody narzędzi. Wówczas nie było to najpopularniejsze rozwiązanie, ale teraz widać, że ci zwolennicy mieli rację.
Jednocześnie piszemy pod Unix, Linux, pracujemy z hardwarem, co wymaga użycia innych rozwiązań. Części systemowe związane z informacjami o danych, które przechowujemy w kopii zapasowej, algorytmy wyszukiwania danych, algorytmy związane z pracą sprzętu — wszystko to jest napisane w C++.

Jak pracownicy są rozproszeni po świecie
Obecnie w firmie pracuje około czterech tysięcy osób. Około tysiąca z nich znajduje się w Rosji. W firmie są dwie duże grupy. Pierwsza zajmuje się rozwojem i wsparciem technicznym produktów. Druga sprawia, że produkty są widoczne dla świata zewnętrznego: w jej zakresie kompetencji znajdują się sprzedaż i marketing. Stosunek między grupami wynosi około trzydzieści do siedemdziesięciu.
Mamy około trzydziestu biur na całym świecie. Sprzedaż jest rozszerzona, ale rozwój również nie ustępuje. Nad niektórymi produktami prace trwają jednocześnie w kilku biurach — część w Petersburgu, część w Pradze. Niektóre są rozwijane tylko w jednym, na przykład produkt zapewniający fizyczny backup Linux jest opracowywany w Pradze. Jest też produkt, nad którym pracuje się tylko w Kanadzie.
Robimy rozproszony rozwój, aby spełnić wymagania klientów. Duzi klienci czują się bezpieczniej, gdy rozwój odbywa się w tym samym regionie, w którym działa produkt.
Mamy już bardzo duże biuro w Czechach, a na przyszły rok planujemy otworzyć kolejne w Pradze, przeznaczone dla 500 deweloperów i testerów. Ci, którzy przeprowadzili się do stolicy Czech w 'pierwszej fali', chętnie dzielą się na Habrze doświadczeniem i wskazówkami z wszystkimi, którzy interesują się możliwością pracy w Europie. W Rosji biuro znajduje się w Sankt Petersburgu, część projektów wewnętrznych prowadzi się w Izmire, a wsparcie częściowo funkcjonuje w Moskwie. Ogólnie wsparciem zajmuje się kilka setek osób na całym świecie. Są tam specjaliści o różnych poziomach przygotowania technicznego i specjalizacji. Najwyższy poziom to osoby, które potrafią zrozumieć produkt na poziomie kodu źródłowego, i pracują w tym samym biurze co dział deweloperski.

Jak są zorganizowane procesy
Około raz w roku wydajemy dużą wersję z nową funkcjonalnością, a co dwa-trzy miesiące — aktualizacje z poprawkami błędów i udoskonaleniami, które odpowiadają na pilne wymagania rynku lub zmiany platform. Wymaganiom przypisuje się priorytety — od drobnych do krytycznych, bez których wydanie jest niemożliwe. Te ostatnie nazywają się 'epikami'.
Mamy klasyczny trójkąt — jakość, ilość zasobów, terminy (w powszechnym języku: 'szybko, dobrze, tanio, wybierz dwa'). Nie możemy robić źle, jakość zawsze musi być wysoka. Zasoby są również ograniczone, chociaż staramy się nieustannie rozwijać. Mamy znacznie większą elastyczność w zarządzaniu czasem, ale jest to często również ustalone. Dlatego jedyne, co możemy zmieniać, to ilość funkcjonalności w wydaniu.
Epików staramy się nie mieć więcej niż 30-40% prognozowanego czasu cyklu wydania. Pozostałą część możemy odciąć, przesunąć, rozwijać, modyfikować. To jest nasze pole manewru.
Dla każdego wymagania w wydaniu tworzy się tymczasowy zespół. Może liczyć od trzech do pięćdziesięciu osób, w zależności od złożoności. Stosujemy elastyczną metodologię rozwoju, raz w tygodniu organizujemy analizy i dyskusje nad zrealizowaną i nadchodzącą pracą w każdej funkcjonalności.
Połowa czasu cyklu wydania jest poświęcona na rozwój, a połowa na dopracowanie produktu. Mamy jednak powiedzenie — „dług technologiczny upadłego projektu jest równy zeru”. Dlatego ważniejsze jest stworzenie produktu, który działa i cieszy się popytem, niż wieczne dopracowywanie kodu. Jeśli produkt jest popularny, wtedy warto rozwijać go dalej i dostosowywać do przyszłych zmian.

Jak Veeam zatrudnia pracowników w dziale rozwoju
Proces rekrutacji jest wieloetapowy. Pierwszy poziom to rozmowa kandydata z rekruterem na temat jego oczekiwań. Na tym etapie staramy się zrozumieć, czy pasujemy do kandydata. Dla nas ważne jest, abyśmy byli interesującą firmą, ponieważ wprowadzenie kogoś do projektu to kosztowna inwestycja.
Jeśli kandydat wykazuje zainteresowanie, na drugim poziomie proponujemy zadanie testowe, aby ocenić, jak odpowiednie jest jego doświadczenie oraz co może zaprezentować jako specjalista. Na przykład prosimy o stworzenie kompresora plików. To standardowe zadanie, które pokazuje, jak kandydat podchodzi do kodu, jakie ma kultury i styl, jakie rozwiązania wykorzystuje.
Z zadań testowych zazwyczaj widać wszystko. Osoba, która dopiero co zapoznała się z gramatyką i pisze list po raz pierwszy, znacząco różni się od osoby, która pisze listy regularnie.
Następnie przeprowadzamy rozmowę kwalifikacyjną. Zwykle uczestniczy w niej trzech team leaderów, aby wszystko było maksymalnie obiektywne. Pomaga to również w pozyskiwaniu technicznie kompatybilnych ludzi, którzy mają podobne metody i podejścia do rozwoju, nawet jeśli ostatecznie będą pracować w różnych zespołach.
W ciągu tygodnia przeprowadzamy kilka rozmów kwalifikacyjnych na otwarte stanowisko i podejmujemy decyzję, z kim będziemy kontynuować współpracę.
Często młodzi ludzie przychodzą do nas i mówią, że szukają pracy, ponieważ w obecnej nie mają możliwości rozwoju — na awans można liczyć tylko wraz z odejściem szefa na emeryturę. U nas dynamika jest nieco inna. Dwanaście lat temu Veeam był startupem z dziesięcioma pracownikami. Teraz to firma zatrudniająca kilka tysięcy osób.
Ludzie trafiają tutaj jak do rwącej rzeki. Nowe kierunki ciągle się pojawiają, team leaderami stają się wczorajsi zwykli deweloperzy. Ludzie rozwijają się technicznie, rozwijają się administracyjnie. Jeśli pracujesz nad rozwojem niewielkiej funkcji, ale chcesz ją rozwinąć, to połowa sukcesu już została osiągnięta. Wsparcie będzie na każdym poziomie, od team leadera po właścicieli firmy. Nie umiesz czegoś zrobić administracyjnie — są kursy, wewnętrzni trenerzy, doświadczeni koledzy. Brakuje Ci doświadczenia w programowaniu — jest projekt Veeam Academy. Tak więc jesteśmy otwarci dla wszystkich, zarówno dla profesjonalistów, jak i dla nowicjuszy.
Projekt Veeam Academy — wieczorny, bezpłatny, offline'owy intensyw kurs C# dla początkujących programistów z perspektywą zatrudnienia w Veeam Software dla najlepszych uczniów. Celem projektu jest zmniejszenie różnicy między poziomem wiedzy i umiejętności praktycznych przeciętnego absolwenta uczelni a poziomem wiedzy, który jest potrzebny, aby zainteresować dobrego pracodawcę. Przez trzy miesiące uczestnicy uczą się zasad OOP w praktyce, zagłębiają się w szczegóły C# i poznają wewnętrzną strukturę .Net. Oprócz wykładów, testów, laboratoriów i projektu indywidualnego, uczestnicy rozwijają swój wspólny projekt zgodnie z zasadami panującymi w prawdziwych firmach. Temat projektu nie jest znany z góry — ustalają go wszyscy wspólnie w pierwszych dniach po rozpoczęciu kursu. W ostatniej edycji tematem był Wirtualny Bank.
Aktualnie trwa nabór na .
Źródło: habr.com
