Senior Software Engineer - Data Technologies Infrastructure
Who are we?
Bloomberg is foremost a data company. Data is at the heart of everything we do; we collect it, cleanse it, enrich it, validate it, and make it available to our clients. This data is vast and varied and critical not only to our success but to that of our diverse, global client base, and we continuously challenge ourselves to do this better and faster.
Bloomberg's Data Technologies (DT) department is responsible for building tools and infrastructure to get this data into the company from the outside world. The DT Infrastructure team lays the foundations for this work by providing compute platforms for other teams to build upon.
As an infrastructure team, we're privileged to have a wide impact across all of Data Technologies and the wider Engineering department. This impact is multiplied by all the teams building applications on our platforms.
Our responsibilities fall into two core areas:
- Building and maintaining DTP, a Kubernetes-based Platform-as-a-Service that allows developers to embrace testing in production environments.
- Building and maintaining DT's Public Cloud infrastructure in AWS.
We build systems that scale horizontally: operating multi-tenant clusters of hundreds of machines and often pushing storage technologies to their limits. Sometimes this means opting for something more specialised then traditional technology choices (e.g. Cassandra over an RDBMS). Other times it means sticking with something proven but making use of it in creative ways.
As a member of the DT Infrastructure team, you'll work on large scale systems that have a wide impact across the company. You'll work on all areas of the stack, from tuning IPVS load balancing strategies, through designing & implementing scalable database schemas & backend APIs, to creating modern, intuitive web UIs.
The majority of the work you do will make heavy use of modern Open Source technologies and Open Standards. The APIs you write will be HTTP (with a sprinkling of gRPC), your interfaces will be designed to the OpenAPI Specification, and your data models will be tied together by the W3C Trace Context Specification.
The team is currently working towards making parts of our own system available as Open Source, so there's an opportunity for your work to gain visibility outside of the company.
You'll also experience a rare opportunity to work on both Private and Public Cloud projects. Who are you?
- A curious polyglot engineer that enjoys the variety of diving into any and all areas of the stack, from debugging TCP connections to building obvious and intuitive interfaces for users.
- Dig deep into details when dealing with specific problems or areas of your system.
- Relish the challenges of large scale distributed systems, accept that failures are inevitable and build systems with automatic redundancy and recovery.
- Excited about building on the shoulders of giants by leveraging Open Source technologies.
- Happiest when working with a diverse team to design and build a full system rather than working alone on a single component.
- Recognise the importance of automated testing and reproducible operations. We'll trust you to:
- Build systems that are elegant and reliable on the outside, but deal with the inherent complexities of distributed systems on the inside.
- Design and take the lead on system enhancements while considering both functional and non-functional requirements.
- Collaborate with your immediate team and the wider engineering organization to achieve the team's goals.
- Own the entire development lifecycle, from planning to execution to deployment.
- Mentor junior members of the team.
We'd love to see:
We don't expect you to be working with all of our technology stack already, but we'd love to see experience working with some of these in a professional production environment:
- Kubernetes or other container orchestration systems
- Golang, Python & Typescript
- RESTful & gRPC APIs
- Terraform & Ansible
- Apache Kafka
- SQL & Cassandra
- Public Cloud (AWS, Azure, GCP, etc.)
- Linux systems & networking knowledge
We believe interviewing is a two way street. It's a way for us to get to know you and your skills, and also a way for you to learn more about the team, our technical challenges, and what you'd be working on. The content of each interview round will be tailored to the role and your background, but the general framework can be found here: https://www.bloomberg.com/careers/technology/engineering/software-engineering-experienced-hire/
We want to ensure you can put your best foot forward throughout the process, so if you have any questions or need any accommodations to be successful, please let us know. If this sounds like you, apply!
And do check out our blog, TechAtBloomberg.com/ to learn more.
Bloomberg is an equal opportunity employer and value diversity at our company. We do not discriminate on the basis of race, religion, colour, national origin, gender, sexual orientation, age, marital status, veteran status, or disability status.
We have a lot of opportunities to choose from in Engineering, and it is important to us that your skills and experience align best with the team you are interviewing with. To help ensure you are placed on the right team, your application will be considered for all of our current vacancies in Engineering at the first stage of the interview process.