About Us
nShift is the leading global provider of cloud delivery management solutions (SaaS), we enable the frictionless shipment and return of almost one billion shipments across 190 countries each year. We are headquartered in London and Oslo and have over 460 employees across offices in Sweden, Finland, Norway, Denmark, the United Kingdom, Poland, the Netherlands, Belgium, and Romania.
Our software is used by many of the world leading e-commerce, retail, manufacturing, and 3PL shippers due to us having over 1000 carriers integrated into our platform, nearly 3 times more than our competitors!
If you buy goods online, there is a strong chance that nShift has powered that delivery, so come and join us as we shape the future of shipping, one frictionless journey at a time.
About the role
We are building a new service from the ground up to replace our current Python-based one. It handles the full shipment lifecycle with each carrier: booking shipments, updating, voiding or deleting them. It has to be fast, resilient and correct under real load.
We are looking for a Software Engineer with at least 5 years of experience who wants to shape this service from day one. You will help decide how it is designed, not just implement tickets: architecture, carrier integration patterns, failure handling and the migration path away from the legacy service.
Our stack is modern Java 25 on Spring Boot with virtual threads, running on AWS. We also use AI coding tools, Claude in particular, as part of everyday engineering, and we expect you to use them well and evaluate their output.
What you'll do
• Take an active part in design discussions and architecture decisions for the new booking service.
• Design and build backend services in Java 25 and Spring Boot / Spring MVC running on virtual threads.
• Build carrier integrations with Spring RestClient, with per-carrier resilience (timeouts, retries, circuit breakers, bulkheads, rate limits) using Resilience4j.
• Validate requests and carrier payloads against JSON Schema (networknt) and keep contracts versioned and well documented.
• Design asynchronous, event-driven flows with Amazon SQS, including idempotency, retries and dead-letter handling.
• Model and evolve the data layer in PostgreSQL (or a similar relational database), including migrations and performance tuning.
• Design services that scale horizontally and stay stable under peak load, such as seasonal shipping peaks.
• Plan and run load and stress tests, find bottlenecks and fix them before they reach production.
• Build and maintain an automated test suite: unit, integration, REST API and regression tests that run in CI.
• Make the service observable: structured logging to CloudWatch and OpenSearch, metrics, alarms and traces that make production issues easy to find.
• Plan and carry out the migration from the legacy Python booking service, including running both side by side, comparing results and cutting over safely.
• Use Claude and other AI tools to speed up design, coding, testing and documentation, and review their output as any code review.
• Own features end to end: CI/CD pipelines in GitHub, deployments to AWS and production support.
• Write clean, readable code, review code carefully, share knowledge and help raise the engineering bar of the team.
What you bring
• 5+ years of professional backend development, with a strong Java background and hands-on experience with recent Java versions (Java 21+; Java 25 LTS is what we run).
• Solid experience with Spring Boot and Spring MVC, and a good understanding of virtual threads and concurrency on the JVM.
• Experience calling external HTTP APIs with Spring RestClient (or WebClient / RestTemplate) and making those calls resilient with Resilience4j or similar.
• Experience with JSON Schema validation (networknt or similar) and API contract design (REST, OpenAPI), including versioning and backward compatibility.
• Proven experience designing and running microservices and distributed…