W skrócie
- Zadania: Twórz nowoczesne oprogramowanie do automatyzacji procesów inżynieryjnych w technologii GPU/AI.
- Firma: Imagination - innowacyjna firma technologiczna z kulturą współpracy.
- Benefity: Atrakcyjne wynagrodzenie, benefity zdrowotne, praca zdalna i rozwój zawodowy.
- Pozostałe informacje: Dynamiczne środowisko z doskonałymi możliwościami rozwoju kariery.
- Dlaczego ta praca: Pracuj nad przełomowymi projektami i wpływaj na przyszłość technologii.
- Kwalifikacje: Doświadczenie w programowaniu oraz umiejętności współpracy w zespole.
Przewidywane wynagrodzenie mieści się w przedziale 135000 - 165000 zł za rok.
Budujemy platformę inżynieryjną dla krzemu, która przekształca zatwierdzenie kodu sprzętowego GPU/AI w zautomatyzowany proces roboczy, który udowadnia, że jest gotowy do wydania dla klientów, w tym warstwę ML/AI, która uczy się przewidywać, jak osiągnąć ten cel przy jak najmniejszej liczbie obciążeń. To duży projekt transformacyjny z wsparciem kierownictwa, zaczynający się od czystego projektu.
Projektowanie IP półprzewodników wiąże się z wieloma przepływami narzędzi: analizatory statyczne, dowody twierdzeń, farmy symulacyjne uruchamiające dziesiątki tysięcy losowych testów każdej nocy, narzędzia projektowania fizycznego, które szacują przyszłe potrzeby dotyczące szybkości i mocy krzemu. Te narzędzia działają na różnych platformach obliczeniowych - grid, emulator, FPGA, płyty krzemowe. W wielu firmach, w tym w naszej, taki stos jest utrzymywany przez dziesięciolecia skryptów, wiedzy plemiennej i ręcznych kroków. Aby to zastąpić, budujemy nowoczesną platformę orkiestracyjną, która koordynuje długoterminowe, zasobożerne zadania obliczeniowe.
Naszym celem jest rozbicie monolitycznych, trudnych do debugowania potoków na małe, kompozytowe, niezależnie testowalne bloki budowlane - z wyraźną obserwowalnością i inteligentnym zarządzaniem błędami. Nie musisz znać nic o sprzęcie półprzewodnikowym; narzędzia są czarnymi skrzynkami z określonymi wejściami, wyjściami i kodami wyjścia, a my mamy inżynierów dostępnych do wyjaśnienia tej dziedziny. Potrzebujemy dobrego inżynierii oprogramowania, ponieważ pod domeną kryje się duży problem systemów rozproszonych - z orkiestracją na dużą skalę, harmonogramowaniem wokół ograniczonych zasobów, pamięcią podręczną adresowaną treścią, inżynierią danych i problemami poprawności.
Będziesz odpowiedzialny za projektowanie warstwy aplikacji: logikę orkiestracji, abstrakcje zadań/przepływów, modele danych oraz interfejsy, które te komponenty eksponują. Będziesz ściśle współpracować z głównym inżynierem platformy/infrastruktury, który odpowiada za wdrożenie, bezpieczeństwo i kwestie sieciowe - uwalniając Cię do skupienia się na pisaniu czystego, dobrze przetestowanego, łatwego w utrzymaniu kodu orkiestracyjnego.
Twoje zasady inżynieryjne i jakość Twojego rzemiosła mają dla nas większe znaczenie niż wcześniejsze doświadczenie w naszej dziedzinie i stosie, a szczegóły omówimy podczas rozmowy kwalifikacyjnej.
Będziesz:
- Projektować i wdrażać logikę orkiestracji przy użyciu nowoczesnego silnika przepływu pracy (np. przepływy, podprzepływy i zadania w systemie podobnym do Prefect), rozkładając monolityczne potoki na małe, wielokrotnego użytku, niezależnie testowalne jednostki.
- Zastosować solidne zasady projektowania oprogramowania (SOLID, separacja obaw, kompozycja zamiast dziedziczenia), aby utrzymać kod orkiestracyjny w stanie łatwym do utrzymania w miarę wzrostu złożoności.
- Definiować jasne, mocno typowane kontrakty danych między etapami potoku (np. używając Pydantic lub podobnych), preferując lekkie odniesienia/wskaźniki zamiast przekazywania dużych ładunków przez warstwę orkiestracyjną.
- Projektować logikę ponownego uruchamiania, punktów kontrolnych i wznowienia, aby długoterminowe zadania mogły odzyskać sprawność po awarii bez powtarzania zakończonej pracy.
- Implementować wzorce z człowiekiem w pętli: wstrzymywanie potoków na przegląd/akceptację oraz czyste wznawianie lub przekierowywanie wykonania na podstawie ludzkiego wkładu.
- Pisać dokładne testy automatyczne (jednostkowe, integracyjne) dla logiki orkiestracyjnej, w tym pokrycie ścieżek błędów i przypadków brzegowych - traktować testowalność jako pierwszorzędny warunek projektowy, a nie jako myśl drugorzędną.
- Budować obserwowalność w warstwie aplikacji: strukturalne logowanie, ekstrakcję metryk i jasne raportowanie statusu/błędów skierowane do użytkowników końcowych.
- Współpracować z liderem platformy/infrastruktury, aby czysto korzystać z infrastruktury (sekrety, konfiguracja środowiska, cele wykonania) za pomocą dobrze zdefiniowanych interfejsów, bez twardego kodowania założeń infrastrukturalnych w kodzie aplikacji.
- Uczestniczyć w przeglądzie kodu, promując czytelność, kompozycyjność i pragmatyczną prostotę ponad przedwczesną abstrakcję.
- Przyczyniać się do dokumentacji technicznej i materiałów wprowadzających, gdy baza kodu i wzorce dojrzewają.
O Tobie
Zaangażowany w sukces swoich klientów, interesariuszy i kolegów, jesteś doskonałym komunikatorem, słuchaczem i współpracownikiem, który buduje zaufane partnerstwa, dostarczając to, co obiecałeś, kiedy obiecałeś. Jesteś ciekawy, zorientowany na rozwiązania i światowej klasy rozwiązywacz problemów, który nieustannie poszukuje możliwości innowacji i osiągania najlepszych możliwych wyników na najwyższym wyobrażalnym poziomie.
Będziesz mieć:
- Doświadczenie w profesjonalnym rozwoju oprogramowania, z silną znajomością Pythona (preferowane) lub równoważnego nowoczesnego języka opartego na typach.
- Udokumentowane zrozumienie zasad SOLID, projektowania OOP i architektury opartej na kompozycji - zdolność do wyjaśnienia kompromisów, a nie tylko recytowania akronimów.
- Udowodnioną zdolność do pisania testowalnego kodu: wstrzykiwanie zależności, mockowanie/stubowanie systemów zewnętrznych, wyraźna separacja między I/O a logiką biznesową.
- Doświadczenie w budowaniu kompozytowego oprogramowania: małe, dobrze określone moduły/funkcje/klasy, które łączą się przewidywalnie, a nie duże monolityczne skrypty.
- Komfort w programowaniu asynchronicznym (np. Python asyncio) w celu koordynowania wykonania procesów zewnętrznych i pracy związanej z I/O.
- Doświadczenie w projektowaniu modeli/schematów danych (np. Pydantic, dataclasses lub równoważne) i używaniu sprawdzania typów w celu zapobiegania błędom integracyjnym.
- Solidne zrozumienie obsługi błędów i projektowania trybów awaryjnych: ponowienia, idempotencja, łagodne pogorszenie.
- Znajomość przepływów pracy z kontrolą wersji (Git), pipeline'ów CI i frameworków testowania automatycznego (pytest lub równoważne).
- Komfort w pracy w środowiskach Linux i bezpiecznym wywoływaniu zewnętrznych narzędzi CLI/podprocesów.
Możesz również mieć doświadczenie w następujących dziedzinach:
- Bezpośrednie doświadczenie z frameworkiem orkiestracji przepływu pracy (Prefect, Airflow, Dagster lub podobne).
- Doświadczenie z konteneryzacją (Docker lub narzędzia HPC, takie jak Apptainer/Singularity).
- Ekspozycja na systemy, które koordynują z zewnętrznymi harmonogramami/kolejkami (harmonogramy zadań HPC, systemy wsadowe, kolejki wiadomości).
- Doświadczenie w budowaniu wewnętrznych narzędzi deweloperskich lub systemów typu platforma jako produkt (tj. budowanie rzeczy, na których inni inżynierowie budują).
- Podstawowa znajomość usług chmurowych (preferowane Azure) i koncepcji infrastruktury (nie będziesz ich posiadać, ale płynność konwersacyjna pomaga w współpracy).
Kim jesteśmy
Imagination to firma z siedzibą w Wielkiej Brytanii, która tworzy IP krzemowe i oprogramowanie zaprojektowane, aby dać swoim klientom przewagę na konkurencyjnych globalnych rynkach technologicznych. Jej technologie GPU i AI umożliwiają wyjątkową moc, wydajność i powierzchnię (PPA), szybki czas wprowadzenia na rynek i niższy całkowity koszt posiadania. Produkty oparte na IP Imagination są używane przez miliardy ludzi na całym świecie w ich smartfonach, samochodach, domach i miejscach pracy. Potrzebujemy Twoich umiejętności, aby pomóc nam nadal dostarczać technologię, która zaimponuje branży i naszym klientom, zapewniając, że ludzie wszędzie mogą cieszyć się mądrzejszą i szybszą technologią niż kiedykolwiek wcześniej. Dołącz do nas, jeśli chcesz czegoś więcej.
Przynieś swój talent, ciekawość i doświadczenie, a pomożemy Ci zrobić resztę. Będziesz częścią jednej z najbardziej ekscytujących firm na świecie, która jest jednym z liderów w rozwiązaniach IP półprzewodnikowych. Jako część naszego zespołu możesz pomóc nam w transformacji, innowacji i inspirowaniu życia milionów dzięki naszej technologii.
Dodatkowe informacje
Jeśli napotkasz bariery dostępności w procesie aplikacyjnym lub jeśli masz potrzeby dostępu i potrzebujesz wsparcia lub dostosowań, aby uczestniczyć równo w procesie rekrutacji, prosimy o kontakt pod adresem recruitment@imgtec.com.
Senior/Staff Software Engineer in Wrocław – pracodawca: Imagination Technologies Limited
Imagination to doskonały pracodawca, oferujący wyjątkowe możliwości rozwoju zawodowego w dynamicznym środowisku technologicznym. Nasza kultura pracy opiera się na innowacyjności, współpracy i wsparciu, co pozwala pracownikom na rozwijanie swoich umiejętności oraz realizację ambitnych projektów w obszarze inżynierii półprzewodników. Dodatkowo, lokalizacja w Wielkiej Brytanii zapewnia dostęp do globalnych rynków technologicznych oraz możliwość pracy nad produktami, które mają wpływ na życie miliardów ludzi na całym świecie.
Dane kontaktowe:
Zespół rekrutacyjny Imagination Technologies Limited