2 months ago
Remote, EMEASenior
Responsibilities
- Design, build, and maintain Java/Spring Boot backend services and APIs.
- Own a backend domain end-to-end and influence its architectural evolution.
- Design REST APIs with appropriate versioning, error handling, idempotency, and pagination.
- Drive architecture discussions, propose designs, write Architectural Decision Records, and defend technical choices.
- Write unit and integration tests using appropriate testing levels and review pull requests for correctness, design, maintainability, performance, and coverage.
- Maintain API specifications, service READMEs, and system runbooks using OpenAPI/Swagger documentation.
- Contribute to shared libraries and platform standards with cross-squad value.
- Use AI/LLM tooling for code generation, test writing, debugging, and documentation.
- Uphold peer review, branching, CI, secrets-management, and OWASP-related engineering standards.
Requirements
- At least 5 years of professional backend software engineering experience, including at least 3 years of production Java experience involving design decisions.
- Strong Java and Spring Boot knowledge, including dependency injection, Spring Security, Spring Data, transaction management, and Spring Test.
- Experience designing and operating REST APIs and relational databases, including schemas, indexing, and query optimization.
- Production experience with distributed systems concepts including eventual consistency, idempotency, retries, circuit breakers, and failure-mode design.
- Experience writing unit tests with JUnit and Mockito and integration tests using a real database.
- Strongly preferred experience with event-driven architecture and Kafka, including consumer groups, offset management, and delivery semantics.
- Experience with microservices architecture, service discovery, API gateways, inter-service communication, and distributed tracing.
- Familiarity with AWS environments without requiring infrastructure ownership.
- Kotlin experience or willingness to learn an additional JVM language.
- Fintech, payments, or financial-services experience, including reconciliation, payment-flow idempotency, and audit logging, is preferred.
- Ability to work autonomously, communicate design decisions, produce maintainable code, and contribute constructively to technical reviews.
