Location: St. Louis, MO
Duration: Till 06/03/2020 (Right to Hire for the right candidate)
As Sr. Software Engineer, you will lead development for a platform team focused on building out Express Script's next-generation service architecture, using REST-based microservices. Microservices align with Client business entities, with multiple related services and their associated platform-specific data stores owned by a single platform team. Services are deployed to an internal cloud (Pivotal Cloud Foundry), with likely use of external clouds in the future.
The new REST-based entity services will co-exist with legacy services and stores, until such time as those are retired. In the interim period, data hosted in the entity platform stores will be sync'd with the associated legacy systems (often more than 1 per entity). A distributed, event-based architecture built around Kafka will be used to bi-directionally sync data when any store is changed. As a lead engineer, you will help design this infrastructure and core shared components.
You will implement key software components for REST services and sync modules, as well as leading and mentoring others on the team to produce quality software, backed by unit tests and checked by regular code reviews. You and your team will work with embedded quality engineers in defining functional tests, which the QE's will automate. Development is done using agile methods (scrum mostly) and modern software development tools and techniques, including continuous integration and deployment (CI/CD) with GitHub, Jenkins, and Artifactory, and test automation using Cucumber, Citrus, JMeter.
In addition, you will also work with technical managers, architects, and subject matter experts to define and refine requirements and API specifications; perform analyses of existing business services and data stores; create detailed designs; help the team achieve consistent and quality code through code reviews and code refactoring; coordinate with QA engineers to define test cases and ensure they are satisfied; and assess and use external systems such as NoSQL databases.
A critical role will be to interface with technical and non-technical people in other areas of Client to understand use cases and deliver services that meet the needs of new applications. In addition, to sync with existing Client systems, understanding those systems and their data models and how that data maps to the entity data models will be crucial. This requires good analysis skills, and the ability to reconcile structural differences between models when an exact mapping is not possible.
The successful candidate must be competent to work at the highest technical level of all phases of service definition and development; must be capable of leading teams in these efforts; and must be capable of driving the overall architecture as the multi-year transformation effort unfolds.
The successful candidate will have experience and expertise in the following areas:
" Java development or equivalent procedural or JVM-based language (5+ years of experience)
" Distributed, event-based systems, especially using Kafka
" REST-based services, or other Web services
" Design (APIs, data models, sequence diagrams, class diagrams)
" Architecture of large software modules, especially extensible components
" Architecture experience with distributed server systems desirable
" Automated integration tests, preferably using an external automation tool
" Relational databases such as Oracle or MySQL, and RDBMS interaction using JDBC and SQL
" NoSQL databases such as MongoDB, Cassandra, or CouchDB
" Accessing data on mainframes or through RPC services or MQ would be useful
" Sprint Boot and Spring Security would be plus; OAuth would be a plus also
" Cloud/VM infrastructure and technologies (PCF preferred)
" Agile methodology, using Scrum, Kanban, or similar techniques
" DevOps and continuous integration (CI) using Jenkins and Maven
" Modern IDEs like Eclipse and version control systems like GitHub
" Lead one or more platform teams responsible for the design and development of services implementing REST-based APIs and modules to bi-directionally sync with legacy systems.
" Work with and mentor other developers on the team, and conduct code reviews.
" Work with QA team and developers to define and implement test strategy, to ensure quality.
" Work with scrum master to break stories into tasks and provide estimates, and with the team to ensure the development efforts are focused and aligned with stories.
" Work with technical manager(s) and scrum master in communicating status, figuring out sprints and milestones, and aligning sprints to business needs.
" Work with developers, business analysts, scrum masters, and others who are working at a remote location, or virtually.
" Partner with architects to help drive the overall architecture of the data ecosystem, and design services and sync modules to enable rapid development of 75+ services.
" Work with business partners and product owners to drive the adoption of new services and retire the use of legacy services and data stores. Provide technical guidance where needed.
" Ensure the high-availability and low latency of services and sync modules, factoring in performance, scalability, fault tolerance, and observability to enable rapid troubleshooting.
" Lead efforts to define product support procedures; resolve urgent issues in production.
" Lead efforts to develop standard practices, components, and guidelines for development and use of complex technology components.
" Bachelor's degree in Computer Science or Engineering, or equivalent work experience
" 8+ years relevant experience, preferably 2-3 years at Client or a similar healthcare-related company; less experience required with Master's degree