About the Role
We are looking for a Full-Stack Software Engineer with strong programming skills and a solid understanding of software architecture and system design. The ideal candidate should be able to build and maintain scalable applications, contribute to architectural decisions, and understand not only how to implement solutions but also why specific technical approaches are chosen.
Responsibilities
- Design, develop, and maintain full-stack web applications using Python and React.
- Build backend services and RESTful APIs using Python frameworks.
- Develop responsive, maintainable, and reusable frontend components using React and modern JavaScript/TypeScript.
- Understand and contribute to system architecture, software design, and technical decision-making.
- Apply software engineering principles, design patterns, and best practices to real-world problems.
- Work with relational databases, data models, caching, and external service integrations.
- Understand system performance, scalability, reliability, security, and maintainability.
- Identify technical challenges and propose effective solutions with appropriate trade-offs.
- Collaborate with team members to implement features, debug issues, review code, and improve existing systems.
- Write clean, testable, and maintainable code and contribute to automated testing and CI/CD workflows.
Required Qualifications
- Strong proficiency in Python and experience building backend applications.
- Experience with React and modern JavaScript or TypeScript.
- Understanding of REST APIs, HTTP, authentication, authorization, and API design.
- Experience with relational databases such as PostgreSQL or MySQL.
- Solid understanding of software architecture, system design, and common design patterns.
- Understanding of data structures, algorithms, object-oriented programming, and SOLID principles.
- Familiarity with Git, Docker, automated testing, and basic deployment workflows.
- Ability to analyze complex problems and explain the reasoning behind technical decisions.
Architecture & System Design Knowledge
Candidates should have a practical understanding of:
- Monolithic and microservices architectures and when to use each.
- Modular design, separation of concerns, and service boundaries.
- Database design, indexing, transactions, and data consistency.
- Caching strategies and performance optimization.
- Authentication, authorization, and application security.
- Scalability, fault tolerance, and reliability.
- Synchronous and asynchronous communication.
- Basic distributed systems concepts and their practical trade-offs.
Preferred Qualifications
- Experience with FastAPI, Django, or Flask.
- Experience with TypeScript, state management, and frontend architecture.
- Familiarity with Redis, message queues, and background processing.
- Experience with cloud platforms, CI/CD pipelines, monitoring, and observability.
- Experience designing systems from requirements and explaining architectural trade-offs.
What We Value
We value engineers who combine strong implementation skills with sound technical judgment. Candidates should be able to execute development tasks independently while understanding the broader system, questioning assumptions when necessary, and making informed engineering decisions.