Software Engineer II
Job description
About the role
EarnIn is currently seeking a Software Engineer II to become part of their growing engineering organization located in Bengaluru, India. This position centers on the design, development, and ongoing maintenance of software systems that power the company's primary products and digital platforms. The successful candidate will work closely with other engineers, product managers, and stakeholders to build reliable, user-focused applications. This role requires taking full ownership of assigned features and responsibilities from the initial design phase all the way through deployment and post-launch support. The engineer will contribute meaningfully to the technical direction of the team while continuously improving the quality and reliability of the systems they work on.
Key facts
What you'll do
- Design and implement scalable, well-structured software components that form the backbone of the company's platform and services.
- Write clean, readable, and maintainable code that adheres to the team's established engineering standards and coding conventions.
- Participate actively in code review sessions to ensure code quality, share technical knowledge, and help teammates grow their skills.
- Collaborate closely with product managers and designers to understand user needs and translate those requirements into effective technical solutions.
- Identify, debug, and resolve software defects and performance issues in production environments to maintain high system reliability and uptime.
- Contribute to important architectural decisions that shape the overall structure and direction of the company's products and services.
- Write comprehensive unit tests and integration tests to verify code correctness, prevent regressions, and support long-term maintainability.
- Create and maintain clear technical documentation, including API references, system design documents, and operational runbooks for future teams.
- Take part in agile development ceremonies such as sprint planning, daily standups, and retrospectives to keep the team aligned.
- Mentor and guide junior engineers by sharing best practices, reviewing their work, and providing constructive feedback on their progress.
- Proactively identify opportunities to optimize existing systems for better performance, improved scalability, and greater operational efficiency.
- Stay informed about emerging technologies and industry developments, and recommend practical improvements to the team's tools and processes.
Requirements
- A Bachelor's degree in Computer Science, Software Engineering, or a closely related technical discipline, or equivalent practical experience in the field.
- A strong foundational understanding of core computer science concepts including data structures, algorithms, and object-oriented programming principles and patterns.
- Demonstrated experience working with modern programming languages and software frameworks in a professional or academic development environment.
- Solid familiarity with version control systems and Git-based workflows for managing code changes and collaborating with other developers.
- The ability to work effectively and constructively within a collaborative team setting while also managing individual tasks independently.
- Strong problem-solving abilities combined with a consistent and thorough attention to detail across all aspects of software development.
- Good written and verbal communication skills for clearly articulating technical concepts to both engineering colleagues and non-technical stakeholders.
- Prior experience with software development lifecycle processes, including planning, implementation, testing, and deployment in a structured and disciplined manner.
Nice to have
- Prior experience working at a fintech or financial technology company, particularly in a product-driven engineering environment.
- Familiarity with mobile application development platforms and frameworks, including both iOS and Android development workflows.
- Exposure to cloud infrastructure providers and services such as Amazon Web Services or Google Cloud Platform.
- Meaningful contributions to open-source projects or a strong personal portfolio showcasing completed software projects and applications.
- Experience with data modeling, building data pipelines, or developing data-driven applications that serve large user bases.
Skills & tools
- Proficiency in one or more general-purpose programming languages such as Python, Java, or similar modern languages.
- Hands-on experience with designing and building RESTful APIs and web services that serve front-end and mobile clients.
- Working knowledge of both relational databases and non-relational data stores, including writing efficient queries and data models.
- Familiarity with continuous integration and continuous delivery pipelines, automated testing frameworks, and software deployment automation practices.
- Understanding of containerization technologies and tools such as Docker, along with basic familiarity with orchestration platforms.
- Comfort working in Linux-based development environments, using terminal and command-line tools for daily development and debugging tasks.
Practical notes
- This position is based in the Bengaluru office and requires regular on-site presence during standard working hours throughout the week.
- The role is expected to follow a full-time schedule, though some flexibility in working hours may be available depending on team needs.
- The hiring process typically involves multiple rounds of technical interviews, including coding assessments, and a final cultural fit evaluation with the team.
- Interested candidates should prepare a current resume and links to any relevant portfolio projects, GitHub repositories, or previous work samples.