Bloomberg Senior C++ Application Middleware Engineer in New York, New York
Job Requisition Number: 57451
Every day, over 5,000 developers rely on us to build the core foundation required for their applications. On our team, we build middleware - the software infrastructure designed for creating large-scale, fault-tolerant applications that run on thousands of machines throughout the world. We’re two dozen C++ programmers building a complex infrastructure using a variety of programming paradigms such as RPC, publish/subscribe, and message queues.
With thousands of clients depending on our infrastructure solutions, we are looking to grow our Bloomberg Application Services (BAS) and Pragmatic General Multicast (PGM) teams:
The BAS group provides core infrastructure for server-side development and message exchange. BAS provides libraries, tools, and processes that implement a service-oriented architecture based on a message-routing paradigm. We provide location transparency to service clients, encapsulates routing policies and algorithms in the network, and deliver a common, scalable, robust platform for application software that includes resource configuration, metrics collection and reporting, network registration, and discovery. The platform supports thousands of services supporting practically every Bloomberg function and back-end process.
The PGM team develops distributed middleware transport libraries and services that support the low-latency, high volume transport requirements of Bloomberg applications and middleware services. The team focuses on implementing basic reliable multicast and unicast protocols, especially Pragmatic Reliable Multicast, as well as higher level services that include fault tolerance and service discovery.
You'll need to have:
- Demonstrated experience in C++
- Experience designing complex distributed systems
- A deep understanding of object-oriented design, data structures, and algorithms
- An aptitude for analytical problem solving
- Exposure to all phases of the software development lifecycle
We'd love to see:
- Familiarity with networking
- Experience working with Linux/UNIX
- Familiarity with the nuances of building high volume, high availability distributed systems
- Knowledge of network protocols such as TCP/IP and multicast and various optimization techniques
- Experience with multithreaded programming