Shop2Shop
Senior Scala Developer
Skills
7 days ago
Share this opportunity
Share this opportunity to other talents of your network:
✓ Offer them a visibility boost with clients.
✓ Help your contacts find their next job.
Important information
Contract type:
Permanent
Location:
Stellenbosch, South Africa
Work mode:
Hybrid
Published on:
17 October 2026
What they need
About Shop2Shop
The ability to make a payment quickly and at a low cost is an underestimated bedrock of our economy in South Africa. Payments are the financial lifeline of every business and individual. We are on a mission to help entrepreneurs participate and prosper in the digital economy by solving their payment challenges. When you join Shop2Shop, you join a team of people driven by a shared purpose for why we do what we do every day. The experience of collaboration across teams will be unrivalled. The feeling of belonging to a talented team of people will make this your last career stop. You will find a stimulating and challenging smorgasbord of problems to solve with the aim of supporting entrepreneurs in South Africa.
Purpose of role:
Scala is at the heart of Shop2Shop’s backend architecture. As a Senior Scala Developer you will design and build the services that move money for thousands of informal-market merchants every day, working in a functional codebase where the type system enforces business rules at compile time and ZIO handles concurrency and resource safety.
This is a senior individual contributor role in a cross-functional engineering squad. You will own features end to end, from design through production monitoring and incident resolution, contribute to technical strategy, mentor other engineers, and help set the standards the rest of the backend follows.
We care more about functional programming depth and distributed systems judgement than years of Scala on a CV. If you have built production systems in Java or Kotlin using Cats, Vavr or Arrow, or in a functional language such as Haskell, F#, Clojure or OCaml, and you want to work in Scala full time, we would like to hear from you.
This role reports to the Chief Information Officer. A Software Development Manager is currently being scoped, and the reporting line will move to that role once it is filled.
You’ll thrive in this role if…
- You write production-quality Scala that is readable, testable, and built to last
- You consider distributed system behaviour, failure modes, and trade-offs before implementing a solution
- You take end-to-end accountability for features, from design through production monitoring and incident resolution
- You explain technical decisions clearly in design documents, code reviews, and cross-functional discussions
- You stay current with the Scala ecosystem and apply new knowledge with pragmatic judgement
- You advocate for testing, observability, and secure coding as essential engineering standards
- You value functional programming discipline, psychological safety, and engineering craftsmanship, treating code quality as a shared responsibility
What You’ll Do (and what success looks like)
Backend engineering and system design
- 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
Success = Services that absorb growth in transaction volume without drama, and production issues that get resolved rather than recurring.
Functional programming and the Scala ecosystem
- 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
Success = Code that is safe by construction, where whole classes of bug are impossible rather than merely tested for.
Data, messaging, and integrations
- 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
Success = Integrations that degrade gracefully when a third party has a bad day.
AI-assisted development
- 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. You own what you merge
- Share learnings and effective AI-assisted patterns with the broader engineering team
Success = Faster delivery with no drop in the quality of what reaches production.
Quality, security, and compliance
- 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
- Participate in security reviews, threat modelling sessions, and vulnerability remediation for backend services
Success = Compliance obligations met in the code, rather than retrofitted the week before an audit.
CI/CD, DevOps, and delivery
- 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
Success = You can ship your own work to production safely, without waiting on someone else to do it for you.
Mentorship and engineering culture
- 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
Success = The team’s Scala capability does not depend on any one person, including you.
What you’ll need to succeed
- Strong backend engineering judgement and the functional programming discipline to write Scala that is readable, testable, and built to last
- The 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
- The ability to work independently and contribute as a senior member of a cross-functional engineering squad
- A practical approach to AI-assisted development, with critical review of generated code
- The ability to mentor developers and communicate technical decisions clear
Skills & Knowledge
- 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
Experience & Qualifications
We have separated what you need on day one from what you can pick up here. If you meet the essentials, apply even if the rest is unfamiliar.
Essential
- 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
What you can learn here, if you have not already
- Advanced Scala idiom and our codebase conventions
- ZIO for asynchronous, concurrent, and resource-safe service development
- Our payments domain and the regulatory obligations that come with it
Advantageous
- 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
Growth Mindset
At Shop2Shop, we believe growth is part of the job, not just for the company but for every individual. In this role, you are expected to:
- 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
This role is for someone who wants to go deep on their craft and lift the standard of everyone around them.
Other Requirements
- Hybrid working model with regular in-office presence in Stellenbosch based on team rhythms, collaboration needs, and business requirements
- Ability to be available for key planning sessions, stakeholder workshops, and in-person team collaboration when required
- Reliable connectivity and a suitable remote working setup for work-from-home days
Other offers great for you!
These companies are also looking for great profiles
Raedy
Tech Lead LLM Web
Freelance
Paris, France
Hybrid
Skills
13 hours ago
Quick apply
EBM Consulting
Mission AI Developer Productivity Engineer
0-550
Freelance
Paris, France
Hybrid
Skills
13 hours ago
Quick apply
skiils
Senior MLOps Engineer
530
Freelance
Paris, France
Hybrid
Skills
12 hours ago
Quick apply
No company information available.