Platform Engineer at Merrill Corporation
Merrill Corporation is the industry leader in technology solutions that enable mergers, acquisitions, initial public offerings, restructuring and other critical capital transactions in more than 170 countries. We provide the world’s leading investment banks, private equity firms, law firms and corporations with tools to simplify, streamline and accelerate the due diligence process, helping them close more deals, faster. We are a global team of high-energy, passionate people. We have strong individual voices but we work as a team, bringing out the best in each other. We thrive under pressure and always keep the customer at the heart of everything we do.
We are looking for a talented microservices Engineer to work closely with Product, UX and other Engineering team members, as part of a distributed Product team. We want someone who is seeking the opportunity to have a big impact and who relishes the challenge of working in a fast-paced global company in the Financial sector utilizing Agile Delivery and DevOps.
This person will solve problems with technology within an industry they may not be familiar with, generate breakthrough ideas, design and deliver working software quickly to enable testing and short-cycle innovation. You will be in an environment that fosters cross-functional collaboration as well as working with all roles of the scrum team (Product Manager, Software Engineer, UX, QA, DevOps, etc..) and will need to bring a strong understanding of Agile/Scrum development methodologies. We follow the squad model made famous by Spotify, so you'll be part of an autonomous team with full responsibility for your own area and an opportunity to look to implement change across the board, while collaborating with colleagues in the Denver, Minneapolis, and New York City to ensure fast and consistent delivery.
This role will offer an opportunity to innovate in a highly complex space. You’ll be challenged intellectually and professionally and it will suit someone with a lot of curiosity and a passion for building great software.
What are we building?
Merrill is building a new platform to provide powerful and innovative solutions to enable our clients to manage the most complex deals on the planet as efficiently as possible.
We want to be the easiest, fastest, and most intuitive way to progress deals to a successful outcome – enabling the bankers, lawyers and professionals we work alongside to focus on doing what they do best for their clients.
The new core platform is a microservices architecture with multiple web/mobile applications built on top. We are leveraging a combination of open source and third-party frameworks/tools such as Netflix Eureka (service discovery), Google Apigee (API gateway), MongoDB (NoSQL), Redis (Cache), RabbitMQ, Pivotal Cloud Foundry (platform as a service), Microsoft Azure (cloud platform), Jenkins (CICD), and many more.
We are looking for talented engineers to join the distributed team and who will be involved in building Java and Node.js microservices. This team will have many opportunities to learn new technology and innovate on the products. The immediate need is for someone to:
- Hands-on development - deliver a highly scalable and flexible microservices
- Create and follow best practices within the stack and move the platform toward a more resilient and performant architecture
- Identify and propose solutions to tough problems and collaborate with your team on finding successful outcomes
- Collaborate with both technical and business team members to understand requirements and develop solutions using an agile development process
- Collaborate with other teams that are responsible for pieces of the platform and applications
- Keep your code clean, your tests complete and functional, and your releases daily
To be successful in this role you must be a quick learner, very familiar with agile practices and software development and enjoy working in distributed cross functional teams.
Our Ideal Candidate Will Have
- Solid expertise in building scalable, globally distributed, loosely coupled systems (e.g. distributed architecture, 12 factor apps)
- Experience with RESTful API design and microservice architectures
- Good problem-solving skills with the ability to analyze and diagnose a complex application
- Solid understanding of the full web stack (e.g. HTTP, headers, caching, etc.)
- Familiar with Continuous Integration (CI) / Continuous Delivery (CD)
- Working skills with the following tools and technologies: Java, Groovy, Node.js, IntelliJ, Jenkins, Redis, MongoDB, RabbitMQ
- Experience with unit testing tools like Junit, Mockito, Spock
- Communicates technical decisions through design docs, tech talks, and the wiki
- Proactively identifies problems with requirements (lack of clarity, inconsistencies, technical limitations) for their own work and adjacent work, and communicates these issues early to help course-correct.
- Technical aptitude and attention to detail
- Experience working as part of a distributed development team
- Good team player
- Good oral and written communication skills
- Ability and desire to make decisions and execute quickly
- Strong interpersonal skills
- Self-starter, high energy
- A passion for quality
- Ability to work under tight deadlines
Additionally, the following would be helpful:
- Experience of working within the squad model, and internal open source development
- Exposure in using Pivotal Cloud Foundry (PCF), SpringBoot with a NoSQL DB like MongoDB, Elasticsearch, Redis, etc.
- Familiarity or experience with Authorization models (OAuth2, SAML, OpenIDConnect, etc.)
- Familiar in modern UI MV*(MVC, MVVM, etc..) framework(s) e.g. Angular, Backbonejs, ExtJS, etc.
- Familiar with UI testing using third party tools e.g. cucumber/capybara, karma, mocha or jasmine, etc.
- Responsive and/or web mobile design
- Familiar with modern CSS libraries or view libraries e.g. Bootstrap, Angular Material, etc.
- Familiar with UI build tools e.g. gulp, grunt etc.
- Knowledge or interest in Test Driven Development (TDD)
- Experience training and mentoring team members
- Bachelor’s degree in Computer Science or a related field
- 4+ years of relevant software engineering experience