Senior Software Engineer - Portfolio Analytics
Posted Jul 7, 2020 - Requisition No. 83773
Bloomberg Portfolio Analytics (or PORT) empowers the most prominent players in the financial world to manage their portfolios, assess exposures, and make decisions that move the financial markets. Our flagship product on the Bloomberg Professional service is a critical tool used daily by money managers, mutual funds, hedge funds, and pension funds around the world.
We are responsible for a number of enterprise products in London which come with complex challenges to solve:
1. JMGR (owned by the Portfolio Batching team): a workflow management and batch reporting tool used by large institutional and enterprise clients to manage their portfolios, run reports, and consume PORT analytics in an automated fashion.
2. Tickerization (owned by the Tickerization team): a process for representing custom portfolios as individual securities and making them first-class entities in the Bloomberg Terminal. The process allows clients to maintain complex portfolio graphs to mimic how large funds maintain their asset hierarchies.
3. ARME (owned by the Enterprise Infrastructure team) – a permissioning system foundational to the entire PORT infrastructure that provides access control to and enables sharing of PORT objects among different groups
4. Orchestration (owned by the Orchestration team) - a framework for workflow definition, execution, introspection and management. It specialises on the longer asynchronous workflows that cross products and outlive single process lifetimes.
5. Portfolio Interface (owned by the Portfolio Interface team) - a service based API for running portfolio computations. The API provides a uniform interface to enable many different products to run portfolio computations across Bloomberg. It is responsible for query planning and executing computations with low latency and high throughput.
The common challenge for our area is meeting the scaling requirements of our highly distributed systems, such as ARME’s 700+ million daily requests, Tickerization’s 200k tickers, and JMGR’s 300k daily reports.
Who are you?
An experienced developer with interest in distributed systems who enjoys working closely with business and clients, and loves the challenge of transforming the current system!
We’ll trust you to:
- Take ownership of the full development cycle and collaborate with the team on design and implementation
- Partner with clients and other developers to design, build and roll-out solutions that will optimize complex workflows
- Explore new technologies both within and outside of Bloomberg to determine if they can help make our products run faster, increase stability, etc.
- Embrace working together as a team – mentoring and learning from their existing teammates to break knowledge silos and ensure that our team is producing reliable, well documented and well understood products for our clients
You will need to have:
- Proven experience in an OOP language, ideally Python and/or C++
- Experience covering the full software development life cycle
- Interest in working in an application facing team
- Understanding of distributed systems challenges e.g. prioritization, throttling, failure recovery
- Pragmatic problem-solving skills
We'd love to see:
- Interest in understanding our products and processes
- Experience in large distributed systems
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/company/engineering-experienced-hire-application-process/
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!