Senior Software Engineer
Job Duties:
Design well-engineered, stable, scalable products like highly scalable REST APIs as well as periodic batch processes for products across a variety of markets (25%). Implement well-engineered, stable, and scalable Java based REST APIs and batch processes per given designs (10%). Enforce good Agile practices (using JIRA) including test-driven development and continuous integration (5%). Analyze and remediate production issues and build instrumentation and operational readiness into the systems architecture (5%). Assist in shaping the product vision (10%). Wear many hats per need including Business Analyst, Database Administrator, QA Engineer, etc. and take ownership of the team's success with a "gets things done" attitude (5%). Curate and preprocess large datasets of numerical as well natural language text data to prepare them for application of various machine learning models (5%). Develop machine learning models to gain actionable insights useful to the financial analysts and product owners in making better decisions on enhancements, prioritizations, and modifications to the existing and upcoming products (10%).
Work on deputation in various teams across the company on projects related to emerging technologies and collaborate in innovative problem-solving involving research and development in Machine Learning and Natural Language Processing via undertaking POC projects that have potential to grow into new full-fledged projects/features across the broader range of products offered by the company (10%). Solve investors’ problems with technology, understanding market chaos at work and crafting technically appropriate interactive experiences to communicate effectively with investors (5%). Review the implementations (programs) written by other team members to ensure production code quality, adherence to approved design, and to provide feedback so that the entire team learns from each other and the team’s collective software engineering skill set is enhanced (10%). Mentor and coach 2 to 3 junior developers (peers) in problem analysis, design principles, evaluating various solution approaches for suitability to a given problem, best practices in programming and software engineering, etc.
Job Requirements:
- Bachelor's degree in Computer Science, Information Technology, or related field and 5 years of related software engineering experience.
- In the alternative, we will accept a Master’s degree in Computer Science, Information Technology, or related field and 2 years of related software engineering experience.
- 2 years of experience with Object Oriented Programming Language, such as Java/Python/C++, in a commercial application or commercial service environment.
- 1 year of experience with scaling web-based software applications and services.
- 1 year of experience in microservices architecture with Spring Boot.
- 2 years of experience with functional programming concepts & reactive design.
- 2 years of experience protecting web applications from common security vulnerabilities.
- 2 years of experience with Linux and Tomcat, as well as experience with full-stack web development.
- 2 years of experience with complex analytics and large sized data sets.
- 2 years of experience with developing machine learning algorithms and using various natural language processing techniques like topic modelling, latent semantic analysis, word embeddings, etc.
- 2 years of experience curating and preprocessing large datasets of numerical as well natural language text data to prepare them for application of various machine learning models.
Morningstar is an equal opportunity employer.