W skrócie
- Zadania: Optymalizuj wydajność oprogramowania i współpracuj nad innowacyjnymi projektami.
- Firma: Dynamiczna firma technologiczna z kulturą współpracy.
- Benefity: Atrakcyjne wynagrodzenie, benefity zdrowotne, praca zdalna i rozwój zawodowy.
- Pozostałe informacje: Świetne możliwości rozwoju kariery w dynamicznym środowisku.
- Dlaczego ta praca: Pracuj z nowoczesnymi technologiami i wpływaj na doświadczenia klientów.
- Kwalifikacje: Doświadczenie w programowaniu w C++ i umiejętności współpracy w zespole.
Przewidywane wynagrodzenie mieści się w przedziale 123750 - 151250 zł za rok.
Meet The Team
Zespół Performance Optimization and Innovation (PerfOpt) poprawia doświadczenia klientów Splunk poprzez głęboką pracę nad wydajnością oraz ustala długoterminowe standardy wydajności Splunk poprzez wytyczne i projektowanie. Pracujemy tam, gdzie wydajność jest wygrywana lub przegrywana: ścieżki gorące wyszukiwania i indeksowania, efektywność pamięci podręcznej i bloomfilterów, przepustowość transferu S3, zarządzanie obciążeniem I/O oraz równoległość w ścieżce pobierania danych. To rdzeń C++ przesuwający dane w skali petabajtów przez dużą rozproszoną architekturę, a wyniki wpływają na to, co odczuwają klienci - opóźnienie wyszukiwania, przepustowość wprowadzania i koszty infrastruktury. Jesteśmy również centrum ciężkości wydajności organizacji: benchmarking, wzorce projektowe i standardy inżynieryjne, które przyjmują inne zespoły, pochodzą stąd.
Twoje Wpływy
- Starszy inżynier wydajności doradza zespołom w zakresie mapy drogowej i architektury, rozwiązuje problemy z wydajnością klientów oraz ustala kierunek techniczny w zespołach partnerskich.
- Prowadzenie prac nad wydajnością od hipotezy przez instrumentację i projektowanie do mierzonego wpływu na klientów, koordynując działania między zespołami w razie potrzeby.
- Projektowanie komponentów w skali petabajtów dla pamięci, współbieżności, I/O i opóźnienia ogonowego, prowadząc architekturę w kierunku skalowalności i niezawodności.
- Używanie profilowania, wykresów płomieni, analizy kontencji blokad, benchmarków i bramek regresji CI do identyfikacji i zapobiegania problemom z wydajnością.
- Instrumentowanie produkcji telemetryką, eBPF i ciągłym profilowaniem w celu pomiaru wydajności w rzeczywistych obciążeniach roboczych.
- Porównywanie opcji wydajności, kwantyfikacja kosztów i ryzyk oraz przedstawianie rekomendacji opartych na dowodach partnerom.
- Wykorzystanie wielokrotnego użytku AI do skrócenia analizy wydajności z dni do godzin.
- Inżynierowie ustalają cele, weryfikują wyniki za pomocą profili i benchmarków oraz dostosowują, gdy dowody są niewystarczające.
- Planowanie prac nad wydajnością, szacowanie wysiłku i prowadzenie postmortem w celu identyfikacji przyczyn źródłowych i zapobiegania regresjom.
- Mentorowanie rówieśników i mniej doświadczonych inżynierów w zespole.
Minimalne Kwalifikacje
- Zaawansowana znajomość C++ w produkcji, w tym zarządzanie pamięcią, alokatory, semantyka przenoszenia, struktury świadome pamięci podręcznej i kompromisy wydajnościowe.
- Głęboka inżynieria wydajności - doświadczenie produkcyjne w kilku z poniższych: profilowanie CPU/pamięci i analiza wykresów płomieni (perf, eBPF, VTune), w tym profilowanie off-CPU i ciągłe profilowanie.
- Rozwiązywanie kontencji blokad - gorące mutexy, fałszywe dzielenie, atomiki i porządek pamięci, techniki bezblokadowe i kiedy ich nie używać.
- Optymalizacja opóźnień w architekturach rozproszonych - opóźnienie ogonowe, kolejkowanie, amplifikacja fan-out, ciśnienie zwrotne, analiza krytycznej ścieżki.
- Benchmarking - mikro i obciążeniowe benchmarki, solidny projekt testów i analiza statystyczna, walidacja podsystemów detekcji regresji CI.
- Modelowanie wydajności - modele analityczne lub pojemnościowe, które pomagają przewidywać limity skalowania i walidować zmierzone wyniki.
- Architektura i projektowanie systemów - projektowanie i poprawa istniejących rozwiązań pod kątem wydajności, skalowalności i operacyjności oraz wyjaśnianie tych projektów krytycznej publiczności.
- Docker i Kubernetes - charakteryzacja wydajności w środowiskach kontenerowych.
- Silny Python do narzędzi, zestawów benchmarkowych, potoków telemetrycznych i analizy danych wydajnościowych.
- Wnętrza wydajności Linuxa - harmonogram, podsystem pamięci, pamięć podręczna stron, systemy plików, I/O blokowe, stos sieciowy.
- Git i CI (np. GitLab CI) do automatyzacji budowy, testów, benchmarków i wydań.
Przywództwo
- Udokumentowane osiągnięcia w informowaniu decyzji technicznych - kwantyfikacja kompromisów, wczesne ujawnianie ryzyka.
- Destylowanie skomplikowanych problemów w porównywalne punkty danych bez utraty niuansu lub ukrywania niepewności.
- Jasna, zwięzła, wysokosygnałowa komunikacja wśród różnych odbiorców - na poziomie mechanizmu z inżynierami, na poziomie kompromisu z mentorami i rozwijanie inżynierów - coaching młodszych inżynierów w kierunku odpowiedzialności oraz wpływanie na rówieśników poprzez przywództwo techniczne, a nie autorytet.
Doświadczenie
- Licencjat plus 8 lat pokrewnego doświadczenia, magister plus 6 lat lub doktorat plus 3 lata.
Preferowane Kwalifikacje
- Doświadczenie z silnikami wyszukiwania lub przechowywania oraz platformami danych w dużej skali.
- Wnętrza Splunk.
- Praca na poziomie sprzętu - SIMD, NUMA, zachowanie pamięci podręcznej/TLB, PGO/LTO, optymalizacja kompilatora.
- Go, Rust lub inny język systemowy obok C++.
- AWS, Azure lub GCP - charakterystyka przechowywania, sieci i wydajności instancji.
- Terraform, Puppet lub Ansible do reprodukowalnych środowisk testowych wydajności.
Co Oferujemy
Problemy z wydajnością w skali, jakiej bardzo niewiele firm ma - petabajty danych, prawdziwi klienci i wymierny wpływ z każdej milisekundy, którą usuniesz! Ciągły strumień nowych rzeczy do nauki. Zawsze rozszerzamy się na nowe obszary, wprowadzając projekty open source i oddając je z powrotem oraz eksplorując nowe technologie.
Splunk Staff Software Engineer in Kraków – pracodawca: Cisco
Cisco Kraków to doskonały pracodawca, który oferuje dynamiczne środowisko pracy w sercu innowacji technologicznych. Dzięki elastycznemu modelowi pracy hybrydowej oraz możliwości współpracy z utalentowanymi zespołami w obszarze inżynierii oprogramowania, UX i produktu, pracownicy mają szansę na rozwój zawodowy i osobisty. Dodatkowo, firma promuje kulturę współpracy i otwartości, co sprawia, że każdy członek zespołu czuje się doceniony i ma realny wpływ na rozwój produktów.