About the Position
The client is building the bank of the future with cutting-edge technologies. Backend Java/Kotlin engineers work in small, agile, cross-functional teams that tackle real-world problems and interact closely with stakeholders and key business users. They design, develop, and maintain high-quality backend services using Kotlin.
The working schedule is aligned with the UK time zone (9am to 5:30pm UK time) and involves participating in on call shifts if required.
About the Project
The client is building the bank of the future with cutting-edge technologies. Backend Java/Kotlin engineers work in small, agile, cross-functional teams that tackle real-world problems and interact closely with stakeholders and key business users. They design, develop, and maintain high-quality backend services using Kotlin.
Responsibilities
- Design, develop, and maintain high-quality backend services using Kotlin under established patterns.
- Work closely with cross-functional teams; own architectural decision-making and complex feature delivery using coroutines and existing frameworks.
- Define testing strategy for features or services, improve test design across the squad, identify gaps in coverage or reliability, and ensure new work meets agreed quality standards (JUnit, Kotest).
- Conduct thorough and high-quality code reviews, improving team-wide code standards.
- Participate in the full software development lifecycle, from concept and design to testing and deployment; ensure production readiness and stability, owning monitoring and incident response.
- Engage in continuous improvement practices and agile methodologies; shape technical direction, raise standards, and influence architectural choices.
- Mentor and support other engineers; lead technical discussions.
- Embrace effective agentic coding practices and actively leverage AI tools such as Claude Code and Copilot.
Requirements
- 2+ years in writing production Kotlin code and implementing features using coroutines.
- Experience working on commercial, established products used by real customers, and operating software in production.
- Strong knowledge of testing strategies with tools like JUnit or Kotest; able to define and improve squad-wide test coverage.
- Backgrounds where quality, testing, and maintainability were prioritised alongside delivery, even under time or commercial pressure.
- Experience making architectural trade-offs (e.g. consistency vs availability, sync vs async) and being accountable for the long-term maintainability of those decisions.
- Deep understanding of relational database schema design, indexing, performance optimization, and migration integrity.
- Advanced Git skills including branching strategy enforcement and complex merge resolution.
- Proficient in Docker and Kubernetes deployment patterns, troubleshooting, and platform-level reliability improvements.
- Strong command of English in both oral and written communication; ability to lead technical discussions.
- Proactive risk management and structured problem-solving mindset.
- Effective team player with the ability to work independently; supports and mentors others.
- Ownership of complex or ambiguous initiatives end-to-end.
Nice to Have
- Strong experience with Kafka and event-driven architectures; comfortable with advanced patterns (dead letter queues, schema evolution, exactly once semantics).
- AWS Experience.
- Understanding event-driven patterns and async messaging (pub/sub, message queues); experience consuming or producing messages in at least one messaging platform.
- Openness to define and optimize test and deployment pipelines.
- Time spent working across multiple teams, products, or problem spaces, helping to build adaptability
- Evidence of evolving practices, responsibilities, or environments over time rather than working in one project
- Experience in organisations where engineers were embedded in teams, accountable for outcomes, and closely aligned with product and delivery goals