Wymagania:
- Głęboka wiedza z zakresu Java (Java Core, multithreading);
- Silna znajomość Spring stack: (Spring Framework, Spring Boot, Spring Cloud). Będzie dodatkowym plusem: frameworki do tworzenia usług sieciowych RESTFul (np. Jersey, Dropwizard);
- Doświadczenie z systemami wiadomości (np. Kafka, RabbitMQ) i bazami danych NoSQL (np. Redis, Couchbase);
- Mistrzostwo w dziedzinie projektowania obiektowego, wzorców projektowych i najlepszych praktyk projektowania oprogramowania;
- Chęć pisania testów jednostkowych i funkcjonalnych (JUnit, AssertJ, Mockito), a także testów integracyjnych przy użyciu biblioteki Testcontainers Java;
- Znajomość narzędzi do zarządzania wydajnością aplikacji (AppDynamics, New Relic);
- Doświadczenie w projektowaniu, tworzeniu, dostarczaniu i obsłudze technicznie złożonych produktów oprogramowania;
- Umiejętność zrozumienia istniejącego kodu, nauki na jego podstawie oraz dokumentowania i tłumaczenia, gdy jest to potrzebne.
Główne zadania codzienne:
- Tworzenie nowych usług REST (jako modułów dodatkowych i oddzielnych mikroserwisów), które będą działać w naszym silnie obciążonym środowisku w celu realizacji istotnych zadań biznesowych;
- Refaktoryzacja istniejącego kodu w celu zwiększenia skalowalności i łatwości utrzymania;
- Wprowadzanie nowych podejść do istniejących rozwiązań poprzez stosowanie nowoczesnych najlepszych praktyk i nowych frameworków;
- Utrzymywanie aktualnej dokumentacji w spójnym stanie;
- Pisanie testów integracyjnych, funkcjonalnych i jednostkowych dla nowych usług;
- Naprawianie, jeśli jest to konieczne, defektów w istniejącym kodzie