Senior Software Engineer (Full Stack)
Location: Hyderabad, India
Work Mode: Office
Reporting to: Engineering Manager
About Us: Foundation AI automatically ingests incoming documents, emails, and attachments from across your firm. It profiles matches, classifies, and saves each to your DMS, and then automates document-dependent workflows according to your rules.
Job Overview
At Foundation AI, we are looking for a Senior Software Engineer to design, develop, and optimize high-quality software solutions. This role requires strong technical expertise, problem-solving skills, and leadership in driving best practices across the development lifecycle. You will work closely with cross-functional teams to build scalable and innovative applications. Should be an excellent problem solver and proficient coder, strong in data structures and algorithms. Adaptability and willingness to learn new tools/languages. They should possess good communication skills as well as a positive attitude and a drive to learn.
Key Responsibilities
- Software Development
- System Architecture
- Code Reviews & Best Practices
- Technical Leadership
- Agile Development
- CI/CD & DevOps
- Performance Optimization
- Stakeholder Collaboration
- Security & Compliance
- Documentation
Responsibilities will be tailored based on the candidate's experience and expertise, aligning with Senior Software Engineer I, II, or III levels.
Skills and Tools
- Design, develop, test, and deploy high-quality software applications in at least one primary programming language (as per our tech stack) and familiarity with multiple relevant languages.
- Follows and applies best coding practices, design patterns, and clean code principles.
- Leads technical decision-making related to programming languages, frameworks, and libraries.
- Writes efficient, maintainable, and scalable code and maintains complex business logic while ensuring scalability and security with clear documentation.
- Conducts peer code reviews, ensuring adherence to team standards and identifying areas for improvement.
- Debugs and optimizes performance bottlenecks, improving application efficiency.
- Mentors junior and mid-level engineers in language proficiency and advanced coding techniques.
- Owns technical understanding of requirements for complex features or subsystems.
- Collaborates with product managers and stakeholders to refine high-level requirements into actionable development work.
- Identifies edge cases, dependencies, and risks during requirement analysis.
- Evaluates feasibility and suggests alternatives when requirements are unrealistic.
- Proactively highlights potential trade-offs between scope, performance, and scalability.
- Mentor's peers on effective requirement analysis and systematic breakdown into deliverables.
- Drives requirement definition for critical, cross-team projects involving multiple domains.
- Leads end-to-end delivery of moderately complex features, ensuring SDLC adherence.
- Owns and drives SDLC improvements within the team, focusing on delivery speed and quality.
- Influences cross-team SDLC consistency and best practices.
- Mentor's junior engineers and teams on SDLC practices, development processes, and delivering high-quality software efficiently.
- Ensures quality through unit, integration, functional testing, regular code reviews, ensuring adherence to best practices.
- Participates actively in sprint planning, task breakdown, and estimates.
- Develops complex solutions, leads implementation of features.
- Designs modular solutions and scalable systems, ensures architectural integrity and mentors on best practices.
- Develops optimized solutions, troubleshoots effectively.
- Optimizes system performance, mentors on technical design.
- Applies fundamental concepts, writes efficient and readable code.
- Implements end-to-end unit testing, improves test reliability.
- Establishes testing best practices, mentors on test-driven development.
- Develops comprehensive test cases, ensures code coverage.
- Ensures test coverage across modules, introduces advanced testing practices.
- Establishes automated testing frameworks, drives test culture.
- Provides accurate estimates for tasks and features.
- Contributes to sprint planning, reviews and improves estimation processes.
- Estimates task complexity independently.
- Leads estimation efforts for projects.
- Validates estimates across teams, improves estimation techniques.
- Designs solutions for non-trivial problems.
- Should be able to identify the problems and risks early, proposes mitigation strategies.
- Tackles complex technical challenges, suggests alternative approaches.
- Diagnoses complex problems across systems and designs solutions for those problems.
- Should be able to attempt to solve the problem and document the same.
- Develops solutions to systemic performance issues.
- Challenges assumptions, considers scalability and performance.
- Evaluates task requirements and potential issues.
- Evaluates solutions based on cost, complexity, and impact.
- Anticipates edge cases and suggests improvements.
- Leads evaluation of new technologies, balances innovation with stability.
- Guides team in selecting optimal technical approaches.
- Communicates design choices, task status and challenges to peers.
- Presents technical solutions to stakeholders, writes detailed documentation.
- Documents solutions and participates in design reviews.
- Leads technical discussions, influences architectural decisions.
- Influences peers through clear explanations and technical reasoning.
- Provides technical direction within a project.
- Mentor's junior engineers and supports team collaboration.
- Influences team-level decision-making and drives process improvements.
- Completes assigned complex tasks independently, delivers quality output and on time.
- Takes ownership of key components or features, ensuring delivery from design to deployment.
- Drives end-to-end technical delivery of critical features or modules, ensuring performance, scalability, and quality.
Technical Skills
Core Web Technologies (HTML5, CSS3, JavaScript ES6+) | Must Have |
Frontend Framework (React/Angular/Vue) | Must Have |
Web Development Tools (Git, Webpack, Babel, ESLint, Prettier) | Good to Have |
RESTful API Integration & State Management (Fetch/Axios, Redux, Context API) | Must Have |
Frontend Security (XSS Prevention, CORS, CSP) | Good to Have |
Observability (ELK logging, tools like Datadog, Splunk, New Relic) | Must Have |
Performance Optimization (Lighthouse, Web Vitals) | Good to Have |
CI/CD Knowledge (GitHub Actions, Docker) | Must Have |
Python, Flask and Fast API | Must Have |
Messaging System – Rabbit MQ | Must Have |
Async Task Executor – Celery | Must Have |
OOP | Good to Have |
Logging: ELK log | Good to Have |
Relational database knowledge – Postgres SQL | Must Have |
Experience with debugging complex applications | Must Have |
Experience with creating/consuming RESTful web services | Must Have |
Proficient in versioning systems like Git, or SVN | Good to Have |
Docker and Kubernetes knowledge | Good to Have |
Knowledge about unit testing, code coverage, code quality | Must Have |
External Scheduler - Airflow | Good to Have |
Low level design documentation | Good to Have |
High Level design documentation | Good to Have |
Working in Agile/Scrum | Must Have |
Education & Experience:
- A B-Tech degree in Computer Science or equivalent experience relevant to the functional area.
- 4+ years of experience as a Software Engineer, with at least 2 years