Roles & Responsibilities :
- Actively get involved in technical discussions with other engineering team members on design and technical implementation details
- Influence product requirements & operational plans while working with software development manager to estimate and plan projects in the agile development framework
- Instil best practices for development and champion their adoption, mentor junior engineers in software design, coding practices, and TDD strategies
- API Definitions and end-to-end service design and implementations
- Design applications in a true service-oriented architecture
- Develop object-oriented models and design data structure for new software projects taking systems aspects into account
- Participate and contribute to discussions and decisions for creating and improving architecture across applications
- Make correct design choices in the context of a problem for data store, caching, search, scaling etc.
- Write good quality, modular, reusable, performant, well documented, unit-tested code, identify the areas and approach to refactor and simplify the modules; refactor code to improve code quality and bring modularity and simplicity.
- Create common libraries and Utilities to be used by multiple engineering teams
Requisites / Prerequisites :
BE or higher in Computer Science or related technical discipline (or equivalent)Minimum 5 years of experience in product based companyStrong expertise in at least one programming language and tech stack for web development to write maintainable, scalable, unit-tested codeStrong object-oriented design skills, knowledge of design patterns, data structures, and algorithmsStrong expertise of working with relational and nosql databasesExperience in building large complex business applications with only high-level tech guidanceExperience leading multi-engineer projects and mentoring junior engineersExperience with full lifecycle development on a Linux / Ubuntu platformPrior experience in working with Agile software methodologies (XP, Scrum)Knowledge of Test Driven Development