Lead Software Engineer
Lead Software Engineer
About the Role
We are seeking a Lead Software Engineer to drive the design, development, and evolution of large-scale cloud-native platforms. This role is hands-on and requires strong technical leadership, architectural decision-making, and deep expertise in distributed systems.
The successful candidate will work closely with engineering, product, and architecture teams to design scalable, resilient solutions while mentoring engineers and establishing engineering best practices across the organisation.
Responsibilities
Design and deliver scalable, distributed backend systems using .NET and Azure.
Lead architecture discussions and drive technical decisions across multiple services and teams.
Design and implement microservice-based solutions with a focus on reliability, scalability, and maintainability.
Mentor engineers through code reviews, design reviews, and technical coaching.
Drive engineering standards, software quality, and operational excellence.
Collaborate with product and engineering stakeholders to translate business requirements into technical solutions.
Identify and resolve performance, scalability, reliability, and security challenges across the platform.
Contribute to incident investigations, postmortems, and continuous improvement initiatives.
Required Qualifications
8+ years of software engineering experience building enterprise applications.
Strong experience with C#, .NET, ASP.NET Core, and REST API development.
Proven experience designing and operating distributed systems in production environments.
Strong experience building and supporting microservice architectures.
Experience with event-driven systems using Azure Service Bus, Kafka, RabbitMQ, or similar messaging technologies.
-
Strong understanding of distributed systems concepts including:
Eventual consistency
Idempotency
Retry strategies
Failure recovery patterns
Service-to-service communication
Experience designing authentication and authorization solutions using OAuth2, OpenID Connect, and JWT.
Experience with Azure cloud services and cloud-native application development.
Experience leading technical design discussions and influencing architecture decisions.
Strong debugging, troubleshooting, and production support experience.
Preferred Qualifications
Experience with CQRS, Domain Driven Design (DDD), and event-driven architecture patterns.
Experience implementing Saga or compensation-based workflows in distributed systems.
Experience designing caching strategies using Redis or distributed caching solutions.
Experience with Cosmos DB or other NoSQL databases.
Experience building highly scalable, high-throughput systems.
Experience with observability, telemetry, monitoring, and distributed tracing.
Experience leading platform modernization or large-scale architectural transformations.
Experience using AI-assisted development tools such as GitHub Copilot, Claude, Cursor, or similar tools.
What Success Looks Like
Able to design and explain complex distributed system architectures.
Comfortable discussing architectural trade-offs and failure scenarios.
Demonstrates strong system design and problem-solving skills.
Can mentor senior engineers and raise technical standards across the team.
Balances hands-on delivery with technical leadership and long-term architectural thinking.