PURPOSE OF THE JOB
We have a PCI compliant platform in Collinson ValueDynamx that provides brands and retailers the ability to engage, reward and incentivise their consumers directly and across any channel online, mobile and in-store.
In order to keep growing were seeking well rounded Lead Java Developer who has demonstrated success at building large scale distributed systems in creative ways. We want an engineer who is excited about the challenge of delivering software on horizontally scaled architectures to processes huge numbers of transactions and user requests a day.
We have a great squad of smart, committed and hardworking engineers working across different time zones in agile sprints to deliver product features , maintain and enhance the platform, reduce tech debt, support the clients and their customers -word as appropriate. Everyone on our squad has a stake in our process, our design, our delivery and our customers satisfaction. Were committed to building the best product possible and leading our space.
The role of the Lead Java Developer is 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.
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
- Assist the Product Owner, Principal Architect, Business Analyst with project planning and critical path analysis
- To support and coach a small team (~7) of developers as well as work closely with 2 Dev Ops engineers, 2 QAs in different localities
- To support and 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 QA manager / QAs to ensure right implementation of test automation is shaping up.
- To provide production support occasionally and to assist the rest of the team in support activities including identifying 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.
- To provide detailed planning input to the Principal Architect on estimated effort to develop certain modules/functions and to identify any specific technical or resource dependencies and/or risks the Software Engineer might be aware of.
- To contribute to and/or lead software analysis, design and specification tasks for specific modules/functions.
- To actively engage in and contribute to agile planning and design sessions.
- To actively participate, lead the sprint delivery with the rest of the team, to coach and mentor the team, conduct stand ups, assist Product Owner with the product backlog, remove roadblocks to the team and educate the team on scrum practices and principles.To support and initiate agile process improvements with the support of the Product Owner, Principal Architect that will improve productivity, effectiveness and professionalism of the team as a whole, without impacting budgets and delivery plans.
- To actively work with Service Delivery Manager to XXX (site security, support, adoption of central processes etc)
- To provide competent, proactive and professional Technical Support if and when required to customers and clients.
- Maintain code documentation to company standards that accurately reflects system functionality and its technical implementations
- Work as part of Code Peer Review community to improve the quality of software development
- Lead and contribute to regular Project Team meetings to ensure the correct tasks are being worked on and share key decisions required, risks identified and highlight and issues encountered
- IT Degree Qualified Desired
- 10+ years of experience building high concurrency/high transaction volume applications using Java/J2EE technologies.
- Deep experience with the following:
- Experience in leveraging cloud (AWS) services and features (AWS MQ, RDS, API Gateway 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).
- Queuing systems and Rabbit MQ in particular
- Distributed Systems (Processing, Caching, Persistence)
- Experience with Agile methodologies
- Demonstrable experience using Source Control tools (GIT, SVN)
- 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.
- 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.
- Experience of working across multiple delivery organisations practicing distributed development in a global environment
- 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 with offshore development partners and directing offshore resources embedded in your development squad(s).
- Knowledge and experience of agile and scrum.