Senior Software Engineer
The Area: The Morningstar Indexes Team leverages its expertise in equity research, manager research, asset allocation, and portfolio construction to create innovative investment solutions. It uses Morningstar’s intellectual property to create indexes that empower investors to achieve their goals at every stage of the investment process—market monitoring, benchmarking, and asset allocation. The fast-growing business offers a broad suite of global equity, bond, commodity and asset allocation indexes.
The Role: The team is looking for forward-thinking problem solvers who thrive in a fast-paced environment. In this role, you will collaborate with the team lead, Scrum Master, business analysts, QA, and other developers to build technology solutions for Morningstar Index’s applications using a variety of technologies including AWS (ECS, Lambda, S3, DynamoDB, RDB), Spring-boot microservices, Kafka, and Docker. You will support existing systems, study their enterprise complexities and develop/implement new systems with modern software development practices. In addition to hands-on development, you will help more junior developers follow best practices, provide in-depth support in your areas of expertise, and help the team continuously improve its development process. As such, you should have a strong understanding of object-oriented principles and design patterns, familiarity with multiple programming languages, and exposure to a variety of architectures.
Responsibilities:
- Design, develop, and maintain the software code base of Indexes in both traditional and cloud-based architectures. Hands-on development will be an integral part of the responsibilities.
- Help implement software solutions that meet product requirements and quality needs with respect to functionality, performance, scalability, reliability, schedules and adherence to Indexes goals and principles.
- Be a role model to the team, collaborating on good object-oriented designs & domain modeling. Reinforce good development practices like test driven development, and continuous integration.
- Develop areas of continuous integration and automated deployment. Make recommendations for process improvements such as CI/CD and automated testing approaches.
- Introduce and follow good development practices, innovative frameworks, and technology solutions that help business move faster.
- Follow best practices like estimation, planning, reporting, and improvement in everyday work and foster an atmosphere of experimentation and continuous learning.
Requirements:
- Completed Bachelor’s degree in Computer Science or Engineering
- Minimum of 5 years of experience developing software solutions
- Excellent listening, written, and verbal communication skills
- Strong knowledge of Java
- Experience with Spring and Spring Boot
- Experience implementing RESTful APIs and microservices
- Hands on experience with SQL and/or NoSQL databases (preferably MS SQL, PostgreSQL, DynamoDB, Athena).
- Experience with modern development practices in areas of product design, requirement analysis, test driven development, and test automation.
- Well versed with Linux operating system and commands needed for code development.
- Experience in analysis, design, coding, and implementation of large-scale, n-tier, Java based platforms.
- Ability and willingness to learn new technologies.
Good to Have:
- Knowledge/Certification of AWS (ECS, Lambda, S3, RDS, DynamoDB, Athena, Glue)
- Knowledge of JVM tuning and profiling
- Knowledge of Docker, Kubernetes, or other containerization platforms
- Knowledge of Terraform, Jenkins, Nexus, or other deployment/CI tools.
- Knowledge of messaging/streaming technologies (Kafka, JMS, Spark, Flink, etc.)
- Knowledge of modern web UI frameworks like Vue.js/React/Angular
- Knowledge of Node.js, Python, C#
- Exposure to Capital Market domain (Indexes, Equities, etc.)
- Be aware of activity in the open-source world. Contributing back to open source is a big plus.