Location: Hybrid - Cape Town / Johannesburg
Employment Type: Full-Time
Department: Software Engineering
As an Intermediate Software Engineer, you'll help design and build scalable, maintainable software for our clients, working hands-on across application code, REST APIs, databases, and the cloud infrastructure that runs them. You'll contribute across the delivery lifecycle, from gathering requirements to shipping and operating production systems, delivering quality work under the guidance of senior engineers while steadily taking on more ownership.
This is a hands-on build role for someone with a few years of delivery experience who is ready to deepen their craft, sharpen their cloud skills, and grow toward technical and architectural ownership. You'll learn fast, ship often, use modern AI tooling to work effectively, and be supported by a strong team of mentors.
What You'll Do
You'll spend most of your time building, and some of your time learning patterns from more senior engineers and applying them well.
- Design, develop, and maintain scalable software solutions, writing clean, maintainable, well-tested code that adheres to industry best practices and our coding standards.
- Build and consume REST APIs using ASP.NET Core / Web API, integrating with relational databases (SQL Server, MySQL) via ORM frameworks such as Entity Framework.
- Work in a statically typed language (C# preferred) for application code, and a scripting language (Python preferred) for automation and tooling.
- Deploy and run your software on the cloud (AWS or Azure), building scalable, distributed systems within established platform patterns.
- Use Infrastructure as Code (Terraform, AWS CloudFormation / CDK, or Azure Bicep) to provision and manage the resources your applications depend on.
- Build and maintain CI/CD pipelines (GitHub Actions, Jenkins, AWS CodePipeline, or Azure DevOps) to support agile delivery for clients.
- Containerise services with Docker and contribute to microservices-based solutions, with exposure to orchestration (Kubernetes).
- Use AI-assisted development tooling (coding assistants, LLM-based workflows) to accelerate delivery and raise quality, and help build software that integrates AI capabilities where it adds value.
- Collaborate with clients and cross-functional teams (product, project management, and other engineers) to understand requirements and prioritise delivery.
- Write and maintain clear documentation, including design notes, test plans, and developer documentation.