Morgan Stanley

Receive alerts when this company posts new jobs.

Technology - Java Developer, Associate, Shanghai

at Morgan Stanley

Posted: 9/14/2018
Job Reference #: 3120362

Job Description

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 747 offices in 42 countries.


In Morgan Stanley, 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 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 Java/Scala 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 Java, 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, Java NIO) 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 Java 1.7/1.8/1.9
Experience in JVM performance tuning, profiling and optimization
Understanding of JNI
Experience in Scala, C , Python, Ruby
Experience in Kafka (and/or other stream processing technologies such as Spark, Storm, Flink, Heron) streaming application development, integration and operations
Experience in 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.