W skrócie
- Zadania: Prowadź techniczne projekty, poprawiając bezpieczeństwo i stabilność aplikacji bankowych.
- Firma: Dynamiczna firma technologiczna z innowacyjnym podejściem do rozwoju oprogramowania.
- Benefity: Atrakcyjne wynagrodzenie, elastyczne godziny pracy oraz możliwości rozwoju zawodowego.
- Pozostałe informacje: Możliwość pracy z najnowszymi narzędziami i technologiami w dynamicznym środowisku.
- Dlaczego ta praca: Zyskaj doświadczenie w nowoczesnych technologiach i wpływaj na kluczowe projekty.
- Kwalifikacje: Doświadczenie w programowaniu, znajomość Java i umiejętności współpracy w zespole.
Przewidywane wynagrodzenie mieści się w przedziale 118800 - 145200 zł za rok.
Opis projektu: Projekt koncentruje się na poprawie bezpieczeństwa, niezawodności wydania, utrzymania i odporności operacyjnej krytycznych aplikacji bankowych. Inżynierowie wdrożeni będą prowadzić ukierunkowane, praktyczne działania z zespołami deweloperskimi, które napotykają wyzwania związane z usuwaniem luk w zabezpieczeniach, automatycznym testowaniem, technologią dziedziczną, stabilnością produkcji lub osiągnięciem bezpiecznego i szybkiego cyklu wydania.
Zakres techniczny obejmuje budowanie skutecznych zestawów testów automatycznych, usuwanie luk w zabezpieczeniach, przeprowadzanie analizy zależności i dostępności, aktualizację środowisk Java i NPM, modernizację aplikacji Spring i technologii dziedzicznych, poprawę procesów CI/CD, konteneryzację aplikacji, automatyzację wdrożeń oraz wprowadzenie standardowych wzorców obserwowalności i odporności.
Inżynier FDE ma prowadzić złożone działania, współpracować bezpośrednio z interesariuszami deweloperskimi i klientami, definiować podejście do usuwania problemów technicznych, osobiście wdrażać kluczowe zmiany oraz umożliwiać zespołom klientów utrzymanie poprawionych praktyk inżynieryjnych.
Obowiązki:
- Prowadzenie ukierunkowanych działań technicznych dotyczących bezpieczeństwa, testowania, wydania, odporności i technologii dziedzicznych z zespołami deweloperskimi.
- Ocena kodu aplikacji, zależności, środowiska uruchomieniowego, pokrycia testami, architektury wdrożenia, procesów CI/CD, obserwowalności i ryzyk operacyjnych.
- Pisanie, debugowanie, przeglądanie i ulepszanie kodu produkcyjnego oraz konfiguracji w trakcie działań.
- Definiowanie i wdrażanie praktycznych planów modernizacji i usuwania problemów z jasnymi priorytetami, zależnościami, ryzykiem i mierzalnymi wynikami.
- Rozwój lub poprawa testów jednostkowych, integracyjnych, komponentowych, umownych i testów dymnych wdrożeniowych przy użyciu praktyk Test-Driven Development.
- Wybór odpowiednich podejść do testowania automatycznego dla aplikacji i kierowanie ich wdrażaniem, w tym wykorzystanie narzędzi AI do pomocy w kodowaniu.
- Przeprowadzanie triage luk w zabezpieczeniach, analizy przyczyn źródłowych i dostępności zależności, priorytetyzacja usuwania problemów, zmiany w kodzie zabezpieczeń i testy regresyjne.
- Udoskonalanie procesów zarządzania zależnościami z ciągłymi aktualizacjami bibliotek przy użyciu Renovate lub równoważnych narzędzi.
- Modernizacja aplikacji dziedzicznych i stosów middleware, w tym tych wdrożonych na WebSphere lub WebLogic.
- Poprawa kontroli źródła, zarządzania gałęziami, pull-requestów i praktyk przeglądu kodu.
- Projektowanie, wdrażanie i optymalizacja procesów CI/CD, aby zapewnić bezpieczne, powtarzalne, zautomatyzowane i łatwe wydania.
- Automatyzacja zmian w bazach danych przy użyciu Liquibase lub równoważnych narzędzi migracyjnych.
- Wdrażanie wzorców zabezpieczeń, zarządzania tajemnicami, uwierzytelniania, autoryzacji i kontroli minimalnych uprawnień.
- Wprowadzenie standardowych wzorców obserwowalności, w tym strukturalnego logowania, metryk aplikacji, śledzenia, pulpitów, alertów i wykonalnych kontroli zdrowia.
- Wzmocnienie obsługi wyjątków, diagnostyki operacyjnej, procedur wycofywania i kontroli walidacji produkcji.
- Projektowanie lub poprawa odpornych architektur wdrożeniowych, w tym wdrożeń hot-hot cross-datacenter, gdzie to konieczne.
- Prowadzenie warsztatów technicznych i skuteczne komunikowanie decyzji technicznych, ryzyk, przeszkód, kompromisów i postępów do inżynierii, bezpieczeństwa, architektury, operacji, zarządzania projektami i interesariuszy.
- Zapewnienie przywództwa technicznego poprzez przeglądy kodu, coaching, standardy wielokrotnego użytku, dokumentację i transfer wiedzy do zespołów deweloperskich.
- Przyjmowanie odpowiedzialności od początkowej oceny przez wdrożenie, wdrożenie produkcyjne, stabilizację i przekazanie.
Umiejętności:
Musisz mieć:
- Rozległe doświadczenie w inżynierii oprogramowania, z naciskiem na rozwijanie i utrzymywanie aplikacji produkcyjnych.
- Ekspertyza w rozwoju Java i JVM jest niezbędna, podczas gdy silne umiejętności TypeScript są cenione w projektach opartych na Node.js.
- Znajomość ekosystemu Spring i modernizacji aplikacji przedsiębiorstw Java jest wymagana.
- Doświadczenie w Test-Driven Development w różnych frameworkach testowych oraz solidne zrozumienie różnych typów testów, takich jak testy jednostkowe, integracyjne i regresyjne.
- Silna wiedza na temat praktyk zabezpieczeń kodu, usuwania luk w zabezpieczeniach i zarządzania ryzykiem zależności.
- Doświadczenie w aktualizacji środowisk, frameworków, bibliotek, platform kontenerowych, takich jak Docker lub OpenShift oraz zarządzaniu środowiskami Linux, najlepiej Red Hat Enterprise Linux.
- Znajomość narzędzi budowlanych, takich jak Maven, Gradle lub npm, zaawansowane przepływy pracy Git oraz kompleksowe techniki debugowania produkcji.
- Umiejętność rozumienia obserwowalności aplikacji, obsługi wyjątków i gotowości produkcyjnej, a także fundamentalnych zasad inżynierii systemów rozproszonych i krytycznych.
Umiejętności miękkie:
- Demonstracja odpowiedzialności za złożoną pracę techniczną na wszystkich etapach, od projektowania po przekazanie produkcji.
- Silna komunikacja z klientem, w tym prowadzenie dyskusji technicznych, konstruktywne kwestionowanie niebezpiecznych praktyk oraz wyjaśnianie kompromisów różnym interesariuszom.
- Umiejętność coachingu inżynierów i wdrażania zrównoważonych standardów inżynieryjnych bez nadmiernej personalizacji.
- Odpowiedzialne i aktywne korzystanie z narzędzi AI do kodowania w celu poprawy wyników inżynieryjnych, testowych i dostarczających.
Miło widziane:
- Doświadczenie w modernizacji lub migracji aplikacji hostowanych na IBM WebSphere lub Oracle WebLogic.
- Doświadczenie z aktualizacjami wersji głównych i migracją z starszych wersji Spring lub Spring Boot.
- Doświadczenie w konfigurowaniu narzędzi do ciągłych aktualizacji zależności, takich jak Renovate lub Dependabot.
- Doświadczenie w analizie dostępności zależności, analizy składu oprogramowania, oceny CVE i usuwania zależności przejściowych.
- Doświadczenie w automatyzacji zmian w bazach danych przy użyciu Liquibase lub Flyway.
- Doświadczenie w używaniu Ansible lub równoważnych narzędzi do zarządzania konfiguracją i automatyzacji wdrożeń.
- Silne doświadczenie w TypeScript, Node.js i ekosystemie npm.
- Doświadczenie z Kubernetes oprócz OpenShift.
- Doświadczenie w projektowaniu architektur wdrożeniowych hot-hot, active-active, multi-region lub cross-datacenter.
- Doświadczenie z testowaniem odporności, odzyskiwaniem po awarii, kontrolowanym failoverem i ćwiczeniami odzyskiwania produkcji.
- Doświadczenie z narzędziami do obserwowalności przedsiębiorstw, takimi jak Splunk, ELK, Grafana, Prometheus, OpenTelemetry, AppDynamics lub Dynatrace.
Senior Forward Deployment Engineer in Katowice – pracodawca: Luxoft
Nasza firma to doskonały pracodawca, który oferuje dynamiczne środowisko pracy w sercu innowacji technologicznych. Wspieramy rozwój zawodowy naszych pracowników poprzez mentoring oraz dostęp do najnowszych technologii, a także promujemy kulturę współpracy i otwartości. Pracując z nami, będziesz miał okazję uczestniczyć w projektach, które mają realny wpływ na branżę, a lokalizacja w centrum miasta zapewnia wygodny dostęp do licznych udogodnień.