Work with business team and stakeholders to understand their needs and translate them into technical requirements. Design and develop software architecture for Java-based applications that are high-quality, scalable, and maintainable. Share expertise and knowledge with junior developers, guiding them in the best practices of software development. Review the code of team members to ensure that it follows the best practices, coding standards and design principles. Identify and fix complex technical issues, and help the team in troubleshooting the issues that arise. Remain up to date with the latest technologies and trends in the industry to ensure that the applications using the most up-to-date tools and frameworks. Create and maintain technical documentation, such as design documents, flowcharts, and data models. Participate in project planning, estimation, and prioritization processes. Assist in deploying Java applications to various environments, such as development, staging, and production. Monitor and maintain applications in production, addressing performance issues and ensuring scalability. Troubleshoot and resolve production issues, working with other team members as needed. Present technical concepts and solutions to stakeholders in a clear and concise manner. Take initiative in defining/updating best practices, guidelines, and checklists. Establish and maintain CI/CD process Take different roles, as required by the organization, like Scrum Master, technical lead, project lead, etc. Work in Scrum/Kanban team environment to size and plan the requirements.