This is not a “business as usual” engineering role. We’re delivering functionality that changes the core of the business, while replacing a legacy monolith with a modern modular monolith — or individual services where it makes sense. While doing this, we strive to apply best-of-breed technologies and leading-edge methodologies.
We’re looking for someone who’s curious and eager to grow. Someone who wants to challenge the status quo, deepen their skills in modern software engineering, and thrive in an environment where experimentation, collaboration, and continuous improvement is a part of daily life.
What You'll Do:
- Contribute to solving large, complex problems by building simple, elegant solutions.
- Collaborate closely with teammates and stakeholders across product, sales, and operations.
- Be an active part of our architectural journey: from legacy monolith to modular monolith and event-driven systems.
- Apply and grow your knowledge of domain-driven design, hexagonal architecture, test-driven development, and clean code.
- Use object-oriented and functional programming concepts appropriately.
- Learn from senior colleagues, while steadily increasing your scope of ownership.
- Continuously improve how we work, experimenting with new ideas and raising the bar with the team.
What You Bring:
- Solid foundations in computer science and software engineering (algorithms, data structures, system design, agile approaches).
- 4 + years' experience in software development
- Interest in, or hands-on experience with, domain-driven design (strategic & tactical).
- Familiarity with hexagonal / ports-and-adapters architecture.
- Experience with object-oriented and functional programming concepts.
- Passion for writing clean, simple, and readable code.
- Understanding of test-driven development and eagerness to grow in this area.
- Exposure to or interest in event-driven architectures.
- A collaborative mindset: you’re a team player who values collective ownership and close cooperation across disciplines.
- Strong analytical and communication skills, with the ability to learn and explain complex ideas.
- Above all: curiosity, drive, and a desire to continuously improve — both yourself and the way the team builds software.
Our stack:
- Backend: Java / Spring
- Persistence: MySQL
- Frontend: Vue.js (though deep frontend expertise is not required)
- Architecture: Modular Monolith (evolving from legacy monolith), Hexagonal Architecture, Domain-Driven Design, Event-Driven Systems
Our methodologies:
We strive for continuous improvement and use proven engineering practices:
- Domain-Driven Design (strategic & tactical)
- Trunk-Based Development & Continuous Integration
- Continuous Delivery and frequent production deployments
- Agile development
- Test-Driven Development – when and where it makes sense
- Clean code and knowledge sharing
Apply on company website Cape Town Hybrid Full-time