Software Engineer- Java
The CIB Digital Platform supports the business goals of all businesses across the investment bank. Our teams are responsible for technology delivery, having development responsibility for key business systems and overall responsibility for all client facing user experiences within the investment bank. The broader team consists of people based in Glasgow, London, Mumbai and New York.
The group is divided into small, highly motivated, agile teams. Software deliveries are frequent and the team members are expected to be multi-disciplined and flexible in their approach, working in all areas of the solution space. Each team is responsible for the design, build and maintenance of highly available and scalable systems with focus on making lives of other engineers in CIB easier and their products reliable and more performant, supporting hundreds of applications and thousands of developers.
Harnessing the power of Stream Processing, AppMon provides a central service to push application telemetry throughout the SDLC, delivering it efficiently to the application team's monitoring tool of choice. The AppMon REST API and SDKs simplify the collection of key metrics whilst the self-service configuration API puts developers in full control of routing to common reporting tools such as Grafana, Splunk and ELK (Elastic Search, Logstash, Kibana).
Candidates do not necessarily need banking experience but must be highly motivated with a track record of success. The ideal candidate will have strong of Java, C++ or Go and first-hand experience designing scalable Event Delivery and Batch/Continuous Operator Stream Processing solutions.
In this role, the candidate will be working as an experienced developer in a small agile team to both build new features and support existing functionality in the Bank's strategic application telemetry. Exciting new features you will work on include implementing Distributed Tracing using leading edge technologies such as Jaeger.
This is a highly technical role, and the developer would also be driving the design of our solutions, mentoring junior members and contributing to the development of features. Experience is expected in analysis/design, agile methodologies, application and SDK development, optimization and performance tuning - plus working with business analysts, user experience, testers and technology stakeholders. The working environment is competitive and demanding but one where creativity and problem solving skills are rewarded. Education
Bachelor's Degree or equivalent in a mathematics or science-based subject; or equivalent working experience. Skills & Experience
The successful candidate is an experienced developer who possesses expert technical skillsin the following:
- At least one of Java, C++, or Go
- Event Delivery, batch and continuous operator Stream Processing
- Design and implementation of distributed, highly available systems
It is highly beneficial to have good working experience with the following:
- Stream processing technologies such as Kafka, Spark, Flink etc.
- Relational and NoSQL database design
- Distributed caching technologies (Hazelcast, Gemfire, etc.)
- Public and private cloud development using platforms such as Kubernetes, Cloud Foundry and AWS
- Spring Boot 1.x and 2.x
- Scripting languages such as Groovy, Python, etc.
- Metrics / Logging Tools (Grafana, Splunk, Prometheus, Cortex, Micrometer, etc.)
- Web Development technologies such as HTML5, CSS 3, React, Typescript etc.
- Common test automation tools and methodologies such as Puppeteer, Selenium, Cucumber Gherkin etc.
- Modern development practices such as Agile / Scrum, Git, CI / CD
- Management and/or any other Leadership including mentoring
The ideal candidate will:
- Be pro-active, pragmatic, independent and resourceful in nature, able to identify and own issues and seek their resolution. Look at source code, figure out how it works and how to make it better.
- Present evidence of self-motivation and a passion for technology with a keen interest in working on latest open source offerings.
- Be familiar (or have developed opinions) on how to structure large scale applications/projects and the necessary processes, team structures and technical approaches
- Be community minded in their approach to work - and be active in consuming and providing information, teaching and help across all team units
- Be a practitioner of Clean Code