Job Description :
Job Description: Sr. Software Engineer

Job Description Summary
The Senior Software Engineer will play a central role in ESI’s initiative to modernize its enterprise data architecture and software engineering practices. The Sr. Software Engineer will be responsible for software architecture, design, development, and quality testing for one or more product teams. ESI is transforming to a REST-based microservices architecture centered on core business entities, with Attunity and Kafka-based event infrastructure for synchronizing new platform data stores with ESI core system data stores in real time. There is a heavy focus on iterative development and incremental release of product features, using agile methods and automation (DevOps and testing The ability to work in a dynamic, often-ambiguous environment is essential. Creativity and collaboration with existing core system technical teams to encapsulate the entities with appropriate data modeling and service layers, and partnering for application transition roadmaps are foundational skills.

Job Description
As Sr. Software Engineer, you will lead development for a platform team focused on building out of Express Script’s next-generation service architecture, based on REST-based microservices framework. Microservices enable the structuring of applications as a collection of loosely coupled services implementing business capabilities. They facilitate a single platform team ownership of the entities and the underlying platform-specific data stores. 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 the legacy services and stores, synchronized with the associated legacy systems, often multiple per entity. A distributed, event-based architecture built on Attunity and Kafka framework will be used to bi-directionally synchronize data when any store is changed. As a lead engineer, you will help design this infrastructure and implement 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 ESI to understand use cases and deliver services that meet the needs of new applications. In addition, to sync with existing ESI 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.

Required Skills
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)

Experience in developing applications using J2EE frameworks such as Spring, Spring Boot
Distributed, event-based systems, especially using Kafka streams

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 multi-tiered 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

Familiarity with Atlassian tools: Jira, Confluence, Hipchat
Mainframe Cobol/CICS experience, a plus

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 through roadmaps.

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.

Job Qualifications
Bachelor’s degree in Computer Science or Engineering, or equivalent work experience

8+ years relevant experience, preferably 2-3 years at ESI or a similar healthcare-related company; less experience required with Master’s degree

Client : Cigna Express Scripts