C++ Developer

  • Competitive
  • New York, NY, USA
  • Permanent, Full time
  • Morgan Stanley USA
  • 16 Oct 18

C++ Developer

Morgan Stanley is a leading global financial services firm providing a wide range of investment banking, securities, investment management and wealth management services. The Firm's employees serve clients worldwide including corporations, governments and individuals from more than 1,200 offices in 43 countries.

As a market leader, the talent and passion of our people is critical to our success. Together, we share a common set of values rooted in integrity, excellence and strong team ethic. Morgan Stanley can provide a superior foundation for building a professional career - a place for people to learn, to achieve and grow. A philosophy that balances personal lifestyles, perspectives and needs is an important part of our culture.

Technology works as a strategic partner with Morgan Stanley business units and the world's leading technology companies to redefine how we do business in ever more global, complex, and dynamic financial markets. Morgan Stanley's sizeable investment in technology results in quantitative trading systems, cutting-edge modelling and simulation software, comprehensive risk and security systems, and robust client-relationship capabilities, plus the worldwide infrastructure that forms the backbone of these systems and tools. Our insights, our applications and infrastructure give a competitive edge to clients' businesses and to our own.
The Institutional Securities Technology division (IST) develops and oversees the technology strategy and bespoke technology solutions to drive and enable the institutional business and enterprise-wide functions. With a global footprint of around 4,000 resources, sourcing and managing our talent pool whilst responding the business demand is a complex and dynamic challenge.

The Morgan Stanley Enterprise Application Infrastructure group develops reusable solutions, libraries and frameworks used in systems throughout the bank. We also provide consultation and design advice to development teams. The PubSub team provides two major middleware offerings widely used in the company for real-time market data distribution system and content-matching pub/sub.
We are seeking an enthusiastic, committed and productive C++ developer with deep knowledge and keen interest in multithreading, messaging, low latency and high performance, to help design and implement the next generation of market data distribution framework, in both engines and user libraries, as well as for continuing feature development, performance improvement and upgrading and streamlining many satellite processes of our infrastructure. The role is a great opportunity to work in a technically challenging environment on some large-scale problems core to the business. Prior experience in or knowledge of the financial industry is not required; candidates from software and telecommunications companies are welcome.


Required Technical Skills:
- Strong core C++, hands-on application and library design and development experience, high quality code
- Strong problem-solving and analytical skills
- Solid Computer Science fundamentals
- Experience in multi-threaded programming
- Experience in distributed systems design and development, IPC
- Knowledge of networking (socket programming, boost::asio) and network protocols (TCP, mcast)
- Good debugging and testing skills
- Linux OS, shell scripting skills

Desired Technical Skills:
- Effective concurrent programming experience, e.g. advanced lock-free techniques, cache-friendly techniques
- Market data experience
- Exposed to C++ 11/14/17 features
- Experience on Python, Java, Ruby
- Experience on Kafka (and/or other stream processing technologies such as Spark, Storm, Flink, Heron) streaming application development, integration and operations
- Experience on middleware such as: ZeroMq, RocketMQ, Rabbitmq, Redis

Required Soft Skills:
- Naturally very technical and curious. Successful candidates will dig beneath the surface to understand how things work, why they are a certain way and what the design trade-offs were.
- Self-motivated, a problem solver, someone who generates ideas and drives initiatives
- Keen interest in technology, understanding design trade-offs and various techniques to achieve better performance.
- Good communication skills and good English, needed for collecting and understanding requirements from developers working in all regions.