Senior Software Engineer - Distributed Messaging Infrastructure
New York, NY
Posted Nov 3, 2022 - Requisition No. 111227
The Team:
The Bloomberg Managed Services organization (BMS) is responsible for creating and curating Bloomberg Engineering's "as a Service" software catalog and infrastructure. We develop and integrate products into a simple, sophisticated user interface and provide a concise way for engineers to create data-store and middleware instances.
The BMS Queuing Core team focuses on building and maintaining BMQ, Bloomberg’s very own distributed message queue framework. BMQ provides durable, efficient, and highly available queues by means of persistence, clustering, and replication. While many internal Bloomberg teams already rely on BMQ for their production needs, we have several exciting projects which aim to add more features, reliability, and capacity to BMQ. You will work on projects which will expose you to how to design a client API, design an efficient wire protocol over TCP, implement robust distributed consensus among several nodes, and everything in between!
We work with:
- C++ for the core BMQ message broker.
- C++, Go, Rust, Python, and Java for the client SDKs.
- Raft consensus algorithm for broker coordination and log replication.
- Jepsen & TLA+ for distributed system verification.
- SDLC practices, including Docker-based testing, CI, API documentation standards, etc.
We'll trust you to:
- Collaborate within an agile, multi-disciplinary team.
- Develop key features of the BMQ message broker, its client libraries, and its ecosystem.
- Elevate BMQ into a complete, self-sufficient, generic message queue system that we can share with the Open Source community.
- Pick up on new frameworks, experiment, and build software that works seamlessly in various environments.
- Anticipate engineering needs and expectations from Bloomberg engineers, and build solutions that work for them.
- Collaborate directly with product owners and application teams to understand requirements, conduct feature demos, and provide system design consultations.
You'll need to have:
- 4+ years of programming experience with C++
- A degree in Computer Science, Engineering or similar field of study or equivalent work experience.
- Strong communication and collaboration skills.
- Strong understanding of distributed systems, data structures, algorithms and system design.
- Experience with multi-threaded programming.
- Commitment to writing meaningful unit tests and integration tests.
We'd love to see:
- Passion for distributed systems and large scale data systems.
- Experience designing and implementing high volume and high availability distributed system.
- Experience maintaining and contributing to large Open Source projects.
- Familiarity with network protocols (particularly TCP).
- Familiarity with distributed consensus protocols like Raft, Paxos, etc.
- Familiarity with Kubernetes and Docker.
Interviewing with us:
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!
We have a lot of opportunities to choose from in Engineering, and it is important to us that your skills and experience aligns 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.
Bloomberg is an equal opportunity employer, and we value diversity at our company. We do not discriminate on the basis of age, ancestry, color, gender identity or expression, genetic predisposition or carrier status, marital status, national or ethnic origin, race, religion or belief, sex, sexual orientation, sexual and other reproductive health decisions, parental or caring status, physical or mental disability, pregnancy or parental leave, protected veteran status, status as a victim of domestic violence, or any other classification protected by applicable law.
Bloomberg is a disability inclusive employer. Please let us know if you require any reasonable adjustments to be made for the recruitment process. If you would prefer to discuss this confidentially, please email amer_recruit@bloomberg.net
Salary Range: 160,000 - 240,000 USD Annually + Benefits + Bonus