This senior individual contributor role in a cross-functional engineering squad involves designing and building services that move money for thousands of informal-market merchants daily. The role focuses on a functional codebase where the type system enforces business rules at compile time and ZIO handles concurrency and resource safety. You will own features end to end, contribute to technical strategy, mentor other engineers, and help set backend standards.
Responsibilities
Design, develop, and maintain scalable, high-throughput backend services and APIs with Scala as the primary language
Build and evolve microservices in our AWS cloud-native, Kubernetes-native service environment
Contribute actively to architecture and technical design discussions, including system design, API contracts, and data model decisions
Optimise application performance, scalability, and reliability across high-volume transaction processing workloads
Troubleshoot and resolve production issues in mission-critical financial systems with urgency, rigour, and clear communication
Apply functional programming principles including referential transparency, effect systems, type safety, and composability
Build with ZIO for asynchronous, concurrent, and resource-safe service development
Design robust domain models that use Scala’s type system to enforce business invariants at compile time
Contribute to shared libraries, internal frameworks, and reusable components that raise engineering quality across all teams
Design and implement data access layers against AWS RDS PostgreSQL, covering query optimisation, schema design, connection pooling, and migrations
Build reliable event-driven integrations using Kafka for high-throughput streaming and RabbitMQ for queue-based workflows
Develop and consume RESTful APIs and internal service interfaces, applying contract-first design and versioning discipline
Integrate with third-party payment gateways, core banking systems, and financial data providers using resilience patterns such as retry, circuit breaker, and bulkhead
Integrate AI development tooling such as AWS Bedrock, GitHub Copilot, or Claude into your daily workflow to improve productivity and code quality
Apply critical evaluation to AI-generated code, reviewing for correctness, security, performance, and alignment with our architectural standards
Share learnings and effective AI-assisted patterns with the broader engineering team
Write clean, well-tested, peer-reviewable code, using unit, integration, and property-based tests as the risk level warrants
Implement secure coding practices aligned to PCI DSS, including input validation, secrets management, encryption, and audit logging
Ensure services meet POPIA, NCA, and FSCA requirements at the application layer through data minimisation, access controls, and audit trail design
Millions of jobs, with real people getting hired every day
200,000+
New jobs added daily
7,000,000+
Verified job listings
1,000,000+
Tailored applications submitted
Participate in security reviews, threat modelling sessions, and vulnerability remediation for backend services
Contribute to and maintain CI/CD pipelines covering build, test, scan, and deploy stages for Scala services
Work within a GitOps delivery model targeting AWS EKS, with a working understanding of Kubernetes deployment manifests, resource configuration, and health probes
Collaborate with DevOps on container image design, Helm chart configuration, and service mesh integration
Champion automated testing, code quality gates, and observability instrumentation as first-class delivery requirements
Mentor mid-level and junior developers through code review, pairing sessions, and knowledge-sharing forums
Contribute to engineering guild sessions, architecture decision records, and internal tech talks
Help grow Scala capability across the team, including engineers converting from other JVM languages
Stay current with the Scala ecosystem, JVM performance tooling, and emerging distributed systems patterns, bringing relevant insights back to the team
Embrace continuous learning and stay curious about your craft
Seek feedback and reflect on both successes and setbacks
Set personal development goals and take ownership of your growth
Support others in their growth journeys through knowledge sharing and collaboration
Stay open to change and adapt quickly in a fast-paced environment
Requirements
Strong backend engineering judgement and the functional programming discipline to write Scala that is readable, testable, and built to last
Ability to build and operate resilient microservices in a cloud-native environment
Strong system design skills, with the judgement to weigh performance, reliability, security, and scalability trade-offs
Ability to work independently and contribute as a senior member of a cross-functional engineering squad
Practical approach to AI-assisted development, with critical review of generated code
Ability to mentor developers and communicate technical decisions clearly
Languages: advanced Scala with production experience, or equivalent depth in another JVM or functional language. Java or Kotlin advantageous; Python for scripting or tooling
Scala ecosystem: ZIO, Cats Effect, or Akka; Tapir or http4s for API definition; Circe or uPickle for JSON; Doobie or Slick for database access; ScalaTest or MUnit for testing
Databases: AWS RDS PostgreSQL, including advanced SQL, schema design, indexing, and migrations using Flyway or Liquibase; Redis for caching
Messaging: Apache Kafka, including producer and consumer design, topic partitioning, and consumer group management; RabbitMQ for queue-based workflows
Cloud and infrastructure: AWS including EC2, ECS or EKS, Lambda, S3, RDS, and Secrets Manager; APISIX Gateway; Docker; Kubernetes
CI/CD and tooling: GitHub Actions or GitLab CI; Git and advanced branching strategies; SBT build tooling; code quality tools such as Scalafmt, Scalafix, and WartRemover
Observability: structured logging and metrics instrumentation using Prometheus and Grafana
Security: secrets management using AWS Secrets Manager; OWASP secure coding principles; JWT and API authentication
5+ years of professional software development experience with a strong backend engineering background
Production experience in Scala, or equivalent functional programming depth in another language with a track record of picking up new ones quickly
Demonstrable experience building and operating microservices in a cloud-native environment, AWS preferred
Strong SQL and relational database design, including schema design, indexing, and migrations
Proven ability to work independently and contribute as a senior member of a cross-functional engineering squad
Bachelor’s degree in Computer Science, Software Engineering, or a related technical field. Equivalent professional experience will be considered
Nice to have:
3+ years of hands-on production Scala development
Experience in fintech, banking, payments, lending, or another regulated high-transaction environment
Experience with financial payment workflows, agent-banking integrations, or Southern African fintech platforms
Familiarity with event sourcing, CQRS, or Domain-Driven Design in a Scala context
Exposure to real-time data streaming with tools such as Kafka Streams
Experience with property-based testing (ScalaCheck) and contract testing (Pact)
AWS Developer or Solutions Architect certification
Important Details
Work model: Hybrid working model with regular in-office presence in Stellenbosch based on team rhythms, collaboration needs, and business requirements
Availability: Ability to be available for key planning sessions, stakeholder workshops, and in-person team collaboration when required
Remote setup: Reliable connectivity and a suitable remote working setup for work-from-home days
About the Company
Shop2Shop is on a mission to help entrepreneurs participate and prosper in the digital economy by solving their payment challenges. They aim to provide quick and low-cost payment solutions, which are an underestimated bedrock of the South African economy. The company is driven by a shared purpose and fosters a collaborative environment for its talented team.