Key Responsibilities
● Architect, design, develop, and maintain robust and scalable backend systems, ensuring high availability and performance.
● Work extensively with event-driven and message-driven architectures to build resilient and decoupled system communication.
● Design, implement, and manage efficient data pipelines using technologies such as Kafka, Redis, and potentially other relevant data streaming and storage solutions.
● Apply and advocate for the use of design patterns to ensure maintainable, scalable, and well-structured code. Mentor junior team members on design principles.
● Build and maintain robust CI/CD pipelines to automate software delivery and ensure efficient deployments.
● Collaborate effectively with cross-functional teams including Product Management, Data Science, and other Engineering teams to deliver secure and scalable solutions that meet business requirements.
● Proactively identify and implement optimizations for system performance, reliability, and scalability.
● Actively participate in system design discussions, providing valuable insights and expertise, particularly in the context of high-throughput and low-latency systems.
● Troubleshoot and resolve production issues efficiently, contributing to root cause analysis and implementing preventative measures.
● Contribute to the ongoing improvement of our platform architecture, development processes, and engineering best practices.
What We're Looking For (Core Skills)
These are the main skills we are actively prioritizing:
✅ Event-Driven Architecture: Deep understanding and practical experience designing and implementing systems based on event-driven principles.
✅ Message-Driven Systems: Proven experience with message brokers such as Kafka, RabbitMQ, or similar technologies for building reliable and scalable communication. Familiarity with MQTT is a plus.
✅ Data Pipeline Engineering: Strong experience in designing and building data pipelines using technologies like Kafka, Redis, and both SQL and NoSQL databases.
✅ System Design Thinking: Excellent ability to design scalable and distributed systems, considering factors like fault tolerance, consistency, and performance.
✅ Coding & Problem Solving: Strong coding and problem-solving skills, with a solid understanding of data structures and algorithms.
✅ Design Patterns: Practical experience applying various design patterns in real-world projects to solve complex problems and improve code quality.