About the role
Requirements:
- 5+ years of experience building and maintaining scalable, high-performance backend systems in a modern software engineering environment.
- Strong problem-solving skills with the ability to break down ambiguous business problems into scalable technical solutions.
- Solid understanding of Data Structures, Algorithms, Object-Oriented Design, and Software Design Principles (SOLID, Design Patterns).
- Demonstrated expertise in Low-Level Design (LLD), including API design, component design, domain modelling, extensibility, maintainability, and clean coding practices.
- Strong understanding of High-Level Design (HLD) and system architecture concepts, including scalability, reliability, availability, fault tolerance, and performance optimisation.
- Experience designing and building distributed systems and microservices architectures, with a good understanding of service decomposition, inter-service communication, and resiliency patterns.
- Deep understanding of database concepts, including relational databases, data modelling, indexing, query optimisation, transactions, normalization/denormalization, and performance tuning.
- Working knowledge of NoSQL databases, caching strategies, and data storage trade-offs.
- Experience with cloud-native application development on AWS, Azure, or GCP, including compute, storage, networking, security, observability, and deployment best practices.
- Good understanding of event-driven architectures, messaging systems, and asynchronous processing using technologies such as Kafka, RabbitMQ, SQS, or equivalent platforms.
- Experience building secure, resilient, and highly available backend services with strong emphasis on observability, monitoring, and operational excellence.
- Strong understanding of RESTful APIs, authentication, authorisation, and backend security best practices.
- Familiarity with CI/CD pipelines, automated testing, code quality practices, and modern software delivery methodologies.
- Ability to evaluate architectural trade-offs and make data-driven technical decisions balancing performance, scalability, maintainability, and business needs.
- Strong collaboration and communication skills, with the ability to work effectively across Engineering, Product, Design, and other cross-functional teams.
- Bachelor's degree in Computer Science, Engineering, or a related discipline, or equivalent practical experience.