EAI - Java Developer

  • Competitive
  • Shanghai, Shanghai Shi, China
  • Permanent, Full time
  • Morgan Stanley
  • 27 Sep 16

See job description for details


Morgan Stanley Enterprise Application Infrastructure (EAI) is a horizontal technology group that develops reusable solutions, libraries and frameworks used in systems throughout the Firm. We also provide technical expertise in all aspects of computing in the form of consultation and design advice to development teams. We are looking for someone with strong Java knowledge, who is interested in remaining a hands on developer, working closely with local developers to design new solutions, while also leading a small local team looking to grow. This is a great opportunity for a skilled developer looking to broaden out to technical lead, while remaining hands on.

The role is within the global Java toolkit team and good communication skills are vital to ensuring that the Shanghai team plays an active role in the global team. Strong technical skills are required, including an indepth knowledge of Java/JVM technologies, good understanding of current best practices in application architecture, software design and code development, and the experience to understand the implications of technical and design decisions. Specific business knowledge is not needed. Prior experience of leading a small team of developers would be an advantage but support will be provided locally to help develop leadership skills.

The team will be working on building the next generation platform for hosting the firm's Java applications. This platform would provide Dynamic Service Discovery, Health-based intelligent routing, Agile Deployment patterns (like Canary/Blue-Green), Leader Election, etc. The platform requires building infrastructure for plugging-in various proprietary and vendor supported services like central remote administration, operational intelligence, metrics monitoring, etc. Building back-integration with the firm's ALM-PaaS for Continuous Deployment. This also requires building out the Java platform container which would be used to deploy application code on the platform. A successful candidate would be deeply involved in designing and building out the platform currently in its infancy.

We also provide library solutions to low latency applications such as algo-trading application and this involves zero-copy networking, byte buffer based communications, native interfacing with highly optimized C code, low GC generation techniques, micro-optimizations using JIT analysis using home grown performance optimization tools and products like Solaris Studio, VTune, JITWatch, etc.


Qualifications:

Skills Required:
-Strong problem-solving and analytical skills
-Good understanding of core computer science concepts
-Understand testing and documentation are integral to delivering high quality solutions
-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
-Strong Java server side developer. You are probably seen as 'the Java expert' in your current team. You deliver quality, robust APIs and library/framework solutions that other developers are happy to use.
-Good understanding of data-structures, algorithms, and multi-threaded programming. You can use this to deliver solutions
-Take initiative to propose ideas and air concerns, to take technical ownership to drive the areas they work on
-Desire to work with other bright motivated people, contribute to technical discussions, and continue to learn
-Prior experience in the financial industry is not required

Skills Desired:
- Any specific interest in and experience of Java technologies used in server side-applications. For example: networking, Google Protocol Buffers, XML, SOAP, databases, multi-threading, common Java Open-Source libraries like Spring, CXF.
- Experience with ZooKeeper; PaaS implementations like Cloud-Foundry, etc
- Experience and knowledge wider than Java helps debugging, integration and with non-pure-Java tasks: Linux, C++, dynamic languages, JVM languages like Scala, RDBMS, KDB, nosql.
- No specific business knowledge is required, but a healthy interest in all of the firm's lines of business is valuable in understanding and responding to the needs and priorities of the varied application development teams we work with.