Position: Senior Java Developer
Experience: 9 to 15 Years
Immediate joiners preferred
The role is to design and develop pragmatic, complete and maintainable software solutions under the guidance of a Principal Architect to the agreed business requirements, development plan and to approved specifications.
Key Responsibilities:
- To support the development team on new and existing systems as required
- Creation of documentation detailing technical work required for requested development, maintenance and support tasks to company standards
- Work closely with and assist the Product Owner, Principal Architect, Business Analyst with project planning and critical path analysis, including the ability to clearly understand business requirements, and also carry out impact analysis
- To support and coach a small team (5+) of developers, as well as work closely with Dev Ops engineers, QAs in different localities
- To lead the technical direction of a professional and cohesive multi-disciplinary team that are technically astute and experienced
- To design and develop pragmatic, complete and maintainable software solutions under the guidance of a Principal Architect to the agreed development plan and to approved specifications.
- To sustain and improve the quality of the software and the documentation delivered by the team to Quality Assurance.
- To work closely with Lead QA / QA engineers to ensure right implementation of test automation is shaping up.
- To provide production support when required, and to assist the rest of the team in support activities including the identification of areas of technical debt in the platform and designing solutions to resolve.
- To maintain a good technical awareness and familiarity with new and forthcoming relevant technologies and highlight any skills or training requirements within the team.
Skills Required:
- IT Degree Qualified Desired
- 9+ years of experience building high concurrency/high transaction volume applications using Java/J2EE technologies.
- Deep experience with the following is a Must-have:
- Experience in leveraging cloud (AWS) services and features (AWS ECS, Fargate, Lambda, CloudWatch, etc)
- Using the Spring Framework family of technologies including Spring Integration, Spring Batch, Spring MVC, Web Services.
- Interacting with RDBMS (MySQL) through use of Hibernate ORM (experience with sharded databases a plus).
- Queueing systems and Rabbit MQ in particular
- Distributed Systems (Processing, Caching, Persistence)
- Docker containers
- Experience with Agile methodologies
- Any experience in Typescript will be an added advantage.
- Demonstrable experience using Source Control tools (GIT)
- Deep understanding of SOLID Principles, Design Patterns and working experience of putting them to practice.
- Solid experience of Test Driven Development, unit testing tools such as JUnit, and experience of integration testing and continuous integration / deployment (any hands on experience with TeamCity will be a plus).
- A history of taking responsibility for design and implementation of systems based on architectural outlines and requirements specified in use cases or stories.
- Senior testing and debugging skills across development, QA and production environments along with proven ability to handle minor releases and emergency fixes.
- Experience directing and mentoring junior and senior developers.
- Experience of working with PCI compliant software products will be an added advantage.
- The ability to demonstrate through examples, the effective management of stakeholder relationships at all levels internally and externally
- Excellent written and spoken English and interpersonal communication
- Experience of projects in Loyalty sector highly desirable
- Experience working in a geographically distributed team, with offshore development partners and directing offshore resources embedded in your development squad(s).
- Knowledge and experience of agile and scrum.