Overview
Design, develop and improve software that provides business, platform and technology capabilities for customers and colleagues, with a focus on real-time stateful stream processing using Apache Flink.
What you'll do
- Develop and deliver high-quality software solutions using industry-aligned programming languages, frameworks and tools.
- Ensure code is scalable, maintainable and optimized for performance.
- Collaborate cross-functionally with product managers, designers and other engineers to define software requirements, devise solution strategies, and ensure seamless integration and alignment with business objectives.
- Collaborate with peers, participate in code reviews, and promote a culture of code quality and knowledge sharing.
- Stay informed of industry technology trends and innovations and actively contribute to the organization's technology communities.
- Adhere to secure coding practices to mitigate vulnerabilities, protect sensitive data, and ensure secure software solutions.
- Implement effective unit testing practices to ensure proper code design, readability and reliability.
- Design, develop and operate real-time, stateful event processing pipelines using Apache Flink, delivering high-throughput stream processing with strong guarantees around reliability, scalability and operational resilience.
- Develop and integrate streaming and microservices-based applications using Java and Spring Boot, ensuring clean API contracts, strong domain modelling and adherence to engineering best practices.
- Engineer end-to-end streaming pipelines by integrating Kafka, Redis and MongoDB, enabling low-latency data access, caching and durable state persistence across distributed systems.
- Implement stateful stream processing using keyed and operator state, ensuring correct handling of large-scale state, efficient serialization and optimal memory management.
- Configure and manage checkpointing and savepoints in Apache Flink to achieve exactly-once processing guarantees, supporting reliable recovery and zero-data-loss deployments.
- Develop Flink jobs with strong understanding of event-time semantics, including watermarks, late event handling and windowing strategies (tumbling, sliding, session windows).
- Optimize Flink pipelines for high throughput and low latency, tuning parallelism, task slots, state backends (e.g., RocksDB) and back-pressure handling.
- Integrate Apache Flink with Kafka as source and sink, ensuring efficient offset management, schema evolution compatibility and reliable end-to-end processing semantics.
- Apply best practices for fault tolerance and resiliency, handling task failures, job restarts and state recovery in distributed Flink clusters.
- Support observability of Flink jobs, enabling visibility into job health, throughput, lag, checkpoint performance and failure patterns through logs, metrics and dashboards.
- Deliver software using Agile methodologies, actively participating in sprint planning, reviews, retrospectives and continuous improvement.
- Champion engineering discipline, automation and data-driven decision making across delivery cycles.
- Drive a test-first, quality-driven engineering culture, embedding test coverage and automation into CI/CD pipelines.
- Operate as a hands-on Individual Contributor, owning the end-to-end development and operational quality of Apache Flink pipelines with minimal supervision.
- Apply strong analytical and troubleshooting skills to diagnose and resolve complex issues in distributed, event-driven systems.
- Collaborate closely with cross-functional teams (engineering, DevOps, security, architecture) to deliver integrated, enterprise-ready solutions.
What you'll need
- Experience designing, developing and operating real-time, stateful event processing pipelines using Apache Flink.
- Experience developing and integrating streaming and microservices-based applications using Java and Spring Boot.
- Experience integrating Kafka, Redis and MongoDB in streaming pipelines.
- Experience implementing stateful stream processing using keyed and operator state.
- Experience configuring and managing checkpointing and savepoints in Apache Flink to achieve exactly-once processing guarantees.
- Experience developing Flink jobs with understanding of event-time semantics, watermarks, late event handling and windowing strategies.
- Experience optimizing Flink pipelines for high throughput and low latency, including tuning parallelism, task slots, state backends (e.g., RocksDB) and back-pressure handling.
- Experience integrating Apache Flink with Kafka as source and sink, including offset management and schema evolution compatibility.
- Experience applying fault tolerance and resiliency practices in distributed Flink clusters.
- Experience supporting observability of Flink jobs through logs, metrics and dashboards.
- Experience delivering software using Agile methodologies.
- Strong familiarity with modern developer tooling including GitLab, DevSecOps pipelines and secure CI/CD practices.
- Hands-on experience with Docker Desktop, IntelliJ IDEA or equivalent enterprise IDEs, and secure source control, branching strategies and automated quality gates.
- Hands-on experience with contract testing (PACT), unit testing (JUnit) and integration testing, performance and load testing (JMeter), and mutation testing.
- Working knowledge of AWS services relevant to event-driven and streaming workloads.
- Experience deploying and operating workloads on Kubernetes (K8s), including container orchestration and scaling concepts.
- Strong awareness and practical adoption of AI-assisted engineering practices with AI coding assistants (e.g., Claude Code, GitLab Duo, Copilot or equivalent).
- Mandatory: Experience working within Agile/Scrum delivery models using Jira for backlog management, delivery tracking and sprint execution.
- Mandatory: Excellent verbal and written communication, producing clear architecture designs, decision records and technical documentation.
- Mandatory: Strong ownership, self-drive and innovation mindset, staying current with cloud-native technologies and modern engineering best practices.
Nice to have
- 7 to 12 years of hands-on software engineering experience, with sustained delivery at scale across complex, distributed systems.
- Bachelor's degree in Computer Science, Information Technology, or related field.
Details
Read the full description and apply on the company’s own careers page.