About the role
We seek an enthusiastic and highly talented Java Software Engineer/Architect to help design, architect and implement innovative solutions for our database platforms. An interested candidate will have experience in architecting quality, testable and resilient software designed for the future.
The candidate must keep abreast of new technologies and trends with an eagerness to learn, pair and coach.
The candidate will be shaping the future of Database Engineering as we transform the Bank through a Service Oriented, API first and Cloud Native approach in delivering our Database platforms as Automated Services for teams and customers across the Bank.
The ideal candidate would have a solid blend of software development, design and technical architecture as well as API integration and strong database (RDBMS and NOSQL) skills.
- Developing source code, including descriptions, for all Software Components in accordance with Software Requirements specification, the functional design and the technical design document;
- Working on full stack Java based development of greenfield and existing applications within a micro services architecture;
- Contributing to quality assurance by writing unit, integration and functional tests as well as leading test driven development (TDD);
- Assisting in the adoption of Agile principles across the team and working with the wider team to manage key issues and stakeholders;
- Prepare High level, technical and solution designs for different use cases and challenges;
- Architecting and Designing solutions that transforms a Database Platform into a Service;
- Continuously looking for opportunities to automate core technical assets and tasks with a view of delivering them as a cloud native services or APIs;
- Designing and implementing complex software integrations;
- Performing research, POCs and leading highly technical discussions;
- Designing software target state architectures and roadmaps of achieving it;
- Designing CI/CD pipelines;
- Leading Software deployments, releases, audit remediations and supporting production Application incidents with an engineering approach.
Skills and Experience
- Significant development delivery experience, with experience of delivery within Agile Software Development Life Cycle/teams ideally with CI/CD;
- Proven vast experience in Java (1.8 or above) with focus on TDD, design patterns, messaging and parallel processing;
- Proven Knowledge of Event driven architecture, service orchestration and messaging;
- Extensive experience in API Integrations;
- Strong Experience in Relational Databases (Oracle or Postgres) and NoSQL (MongoDB);
- Previous experience in ServiceNow or a similar ITSM solution is highly desirable;
- Previous experience working with OpenShift or a similar Kubernetes platform is a must;
- Extensive experience in micro service development, architecture and patterns;
- Extensive hands-on experience with Spring Boot, and similar libraries like Spring Could, Spring JPA, Hibernate, Spring security and Docker;
- Experience developing unit testable code using testing frameworks like JUnit, Mockito, Cucumber and practical experience with build tools (preferably Maven);
- Vast Experience in Software Design and technical architecture using a variety of toolsets;
- Extensive experience in building a CI/CD pipeline using TeamCity, Jenkins, Bamboo, GitLab or Travis CI etc is highly essential;
- Prior experience in Python flask is nice to have;
- Experience developing and architecting integration solutions on Cloud Platforms is essential be it GCP, Azure or AWS;
- Experience in building cloud native, distributed, highly available and fault tolerant applications;
- Extensive experience in Software design and documentation;
- Strong knowledge of API gateway, Authorization and Authentication schemes like OAuth, TL, the Open-API and Async-API standards, DNS, Load Balancing, Serverless and Auto-scaling;
- Strong knowledge of Enterprise integration patterns;
- Nice-to-have front-end technology: preferably REACT;
- Experience in solution design and techniques with ability to make design decision trade-offs;
- Ability to self-manage a book of work and ensure clear transparency on progress with clear and timely communication of issues;
- Capability to interact successfully in a virtual, multi-vendor and multi-cultural environment;
- Effectively communicates complex messages in a clear and concise manner;
- Enables experimentation and fast learning approaches to creating solutions;
- Ability to prioritize and manage several competing demands simultaneously;
- Ability to work autonomously, take a leap and achieve goals iteratively.