Job Type
Job Details
Currencycloud was acquired by Visa in December 2021. Our Senior Java Engineers are responsible for implementing an industry-leading API that has already processed over 50 billion USD of cross-border transactions for over 5 million end users, and is available to our clients 24/7. But we’re not stopping there, and our engineers are at the forefront of taking us forward to meet the demands of even greater scale.
We are cloud native and run our distributed applications entirely within AWS. Embracing a microservices-led architecture, all our applications are running in Kubernetes, backed by leading-edge technologies such as Kafka and PACT for contract testing.
Currencycloud Tech is introducing a new team to enable existing development teams reduce duplication of code and improve their time to market, by creating a set of shared libraries that can be reused many times.
Teamwork, and cross-team collaboration, is fundamental to the delivery of our applications. Whilst each application has an independent path to production, there will always be some activities and initiatives that span multiple teams and require cross-team collaboration. Within your team you will need to collaborate with several stakeholders, including Product Owners and QA, as part of your product development.
What you'll get to do:
As a Senior Java Engineer you’ll play a key role within a new software engineering team, taking responsibility for creating, building and maintaining libraries that will be used in services across our engineering function
This team acts as an enabler for other teams who are building out brand new parts to our payment's platform, focusing on high availability, cloud native, microservice concepts
Closely collaborate with EMs, Principal Engineers, Directors and Senior Engineers from other teams, playing a vital role in leading discussions around technical direction and design for shared libraries
You'll get:
Clear ownership of your domain
A clean modern codebase
An independent path to production
Strong platform and product support
The ability to make real changes with genuine business value.
Our Tech Stack includes:
Object-oriented programming forms the bulk of our codebase, currently in Java, versions 11+, and ideally Springboot framework
Highly-scalable, highly-available, cloud-native applications on AWS are key to our next phase of growth, are written to 12-factor principles and fit into our microservices architecture
Cloud-related tools, services, and distributed system observability to support these applications, such as Docker, Kubernetes, ElasticSearch, Datadog, to name but a few
API specifications, conforming to the OpenAPI (Swagger) standard, provide a clean boundary both externally between our customers and our product, and internally between our microservices
Large SQL databases provide the persistence layer for our applications. You’ll be working with (and know the limitations of using) such large datastores
Infrastructure automation is primarily owned by the infrastructure team, but you will be a consumer of their work, familiarity with AWS, Docker and Kubernetes is beneficial
Testing approaches, including TDD, BDD and Contract Testing, all form an important part of our approach to quality assurance, ensuring that the code that we write forms products that are fit for use. We currently use a variety of frameworks including JUnit, RSpec and Cucumber
Agile development, with teams broadly aligned with the Spotify - Squads & Tribes - model, helps us deliver incremental improvements to our products in an iterative manner. Advocating this model, and joining us on a journey of continuous improvement, is a key attribute of members of our teams
Continuous Integration and Continuous Delivery pipelines allow us to automate all the things, providing repeatable builds and consistent deployments. This is primarily Jenkins based, we are introducing GitHub Actions & ArgoCD for Microservices
Responsibilities:
Design, develop, test and maintain Java libraries that support our internal systems
Create a field-level encryption library/solution that secures sensitive data across our applications
Develop outbox pattern support libraries that enhance the performance and reliability of our distributed systems
Design and create libraries to enable us in the path of event-based architectures using Kafka
Collaborate with the rest of the engineering team to integrate these libraries into existing systems
Document all library development processes, including coding standards and code versions
Implement a testing strategy for libraries that integrates with CI/CD solutions
Debug and resolve technical issues related to these libraries
Participate in code reviews to maintain code quality and share knowledge across the team
Stay informed about Java and library development trends and innovations
Qualifications
5+ years experience in Java Backend Development
Skills with functional Java (versions 8+) and Spring (ideally Springboot)
Agile ways of working such as Scrum or Kanban in cross-functional teams
Working knowledge of Docker, Kubernetes, AWS and Kafka
Awareness of security requirements, defensive coding and data encryption
Openness to exploring other programming languages
Additional Information
Visa is an EEO Employer. Qualified applicants will receive consideration for employment without regard to race, color, religion, sex, national origin, sexual orientation, gender identity, disability or protected veteran status. Visa will also consider for employment qualified applicants with criminal histories in a manner consistent with EEOC guidelines and applicable local law.
At Visa, we are driven by a common purpose – to uplift everyone, everywhere by being the best way to pay and be paid. As our products and... Read more