About this role
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 systems, including failure modes, consistency, idempotency and backpressure.
• Experience scaling services: horizontal scaling, stateless design, connection pooling, caching, and knowing where the limits of a service are.
• Hands-on load and stress testing with tools such as Gatling, k6 or JMeter, and the ability to turn results into concrete fixes.
• Strong testing habits: unit tests (JUnit, Mockito), integration tests (Testcontainers), REST API tests (REST Assured, Postman or similar), contract tests and automated regression suites in CI.
• Clean code practices: readable and well-structured code, SOLID principles, sensible design patterns, refactoring, and static analysis (for example SonarQube).
• Good knowledge of PostgreSQL or another relational database: schema design, indexing, transactions and query tuning.
• Hands-on AWS experience, including Amazon SQS and CloudWatch, and secure handling of configuration and secrets (for example Parameter Store or Secrets Manager).
• Experience with OpenSearch (or Elasticsearch) for log search, querying and dashboards.
• Comfortable with Maven, Git and GitHub, and CI/CD pipelines (for example GitHub Actions) with quality gates.
• Practical experience using Claude or similar AI coding assistants, and the judgement to review generated code and designs for correctness, security, performance and maintainability.
• Ability to understand complex systems quickly and explain trade-offs clearly in design discussions.
• Infrastructure as code with Terraform, AWS CDK or CloudFormation, and container platforms such as ECS or EKS, including autoscaling setup.
• Very good written and spoken English.
Nice to have
• Python experience, or a real willingness to read and work in Python, since the current booking service is written in it.
• Experience migrating or replacing a legacy system in production (strangler fig pattern, parallel runs, shadow traffic, feature flags).
• Observability beyond logs: OpenTelemetry, distributed tracing (AWS X-Ray or similar), dashboards and SLO-based alerting.
• JVM profiling and tuning (Java Flight Recorder, async-profiler, garbage collection tuning).
• Resilience and chaos testing, such as simulating outages, slow responses and SQS backlogs.
• Security awareness: OAuth2 / OIDC, OWASP API Top 10, secure handling of customer and data, GDPR basics.
• Experience with messaging patterns such as the outbox pattern, sagas and exactly-once-style processing on top of at-least-once delivery.
• Cost awareness on AWS: choosing designs that scale without unnecessary spend.
• Experience building AI-assisted workflows for the team, such as prompts, review checklists or Claude Code setups that others can reuse.
Who you are
• You think in systems: you ask how a change behaves under load, when a carrier is down, or when a message arrives twice.
• You have opinions on design, back them with reasoning, and change your mind when the evidence says so.
• You take ownership from design to production and care about what happens after deploy.
• You treat AI output as a strong first draft, and you can explain why something it produced is wrong.
• You write things down: clear pull requests, design docs and runbooks.
• You enjoy helping others grow through pairing, reviews and knowledge sharing.
What we offer
• The chance to design a core service from scratch and see it replace a business-critical system.
• A modern stack (Java 25, Spring Boot, AWS) and AI tools built into how the team works.
• A team that values design discussion, clear ownership and good engineering practice.
Please ensure you upload your CV in English
At nShift we believe in embracing diversity in all forms and fostering an inclusive environment for everyone which we believe is essential for our continued success. We're an equal-opportunity employer which means that all applicants will receive consideration for employment without regard to ethnicity, religion, sexual orientation, gender identity, family or parental status, national origin, veteran, neurodiversity, or disability status.
