Job Description :
Job Role :: Java Microservices Developer
Job Location :: Minnesota, MN
Job Duration :: 6+ Months Contract
Mode of Interview :: Phone/Skype

Job Description::

Required Skills:

Java
Spring
Spring Boot
Micro Services knowledge (just ask candidates)
Algorithms and Data Structures
Design Patterns
SQL
NoSQL

Technical Information:
Java
Spring Boot
Kaftka
Unit Testing with JUnit
RestAssured and Selenium
JMeter
100% Backend
Spring Integration
Spring Data
Micro Service architecture
Data Structures and Algorithms
Design Patterns
Swagger or GraphQl
NoSQL, Cassandra
SQL
JDBC

Key Skills Needed:
Java
Spring
Spring Boot
Micro Services knowledge (just ask candidates)
Algorithms and Data Structures
Design Patterns
SQL
NoSQL
Unit Testing their own code

Development - Experience in developing large scale distributed data-driven systems (micro services) - Sound knowledge and extensive experience developing distributed data-driven systems involving tools and paradigms such as microservices, containers, container orchestration systems, public cloud providers and NoSQL databases. Examples include springboot, AWS, Redis, Elastic Search, Docker, Mesos, Kubernetes, Graph databases, Cassandra, etc. - Own the full life-cycle of feature development from design through testing and release - Program mostly in Java 8/Scala and high performance distributed toolkits such as Akka, Hazelcast, Kafka and learning from and contributing to a team committed to continually improving their skills. - Perform high value engineering work with an eye for long term maintenance and reliability Operations - Designing, implementing, and maintaining modern DevOps pipelines based on Atlassian stack for micro-services based distributed application - Work along our operations teams to ensure reliable delivery mechanism into a control-plane running (Docker and Mesosphere) - Operating/troubleshooting and maintaining production systems in a Linux and public cloud environment using standard logging/monitoring stacks (ELK, Prometheus, Dynatrace, sumologic, etc)

Description/Comment: Contribute to software development activities by developing, documenting, testing, modifying and maintaining new and existing software applications. Apply standard techniques, procedures, and criteria to the development life cycle. Bring application(s) and technology expertise to the specification and design development process. Provide technical expertise on assigned applications, to include interfaces and interrelationships with other applications and systems. Receive technical guidance and day-to-day direction from Software Engineers and Senior Software Engineers. - Code, test and troubleshoot existing programs utilizing the appropriate hardware, database, and programming technology. Analyze end user data and business needs to format final product and assure user-orientation. Test and develop programming modifications. Utilize applications expertise to participate in the design process as needed, then write new program code based on defined specifications. Document programming problems and resolutions for future reference. - Maintain and modify programs; make approved changes by amending flow charts, develop detailed programming logic, and coding changes. Write and maintain programming documentation, as well as operations and user guides (as required - Effectively unit test all code and programs prior to releasing them to the quality assurance (QA) team. Resolve all unit test issues in a timely manner. Collaborate with the QA team to identify test cases and create/mine test data to enable a thorough test of all development deliverables. Respond to all inquiries and issues in a timely manner as the developed code/program moves through the testing process and ultimately into production. Provide implementation/production support as required. - Analyze performance of programs and take action to correct deficiencies based on consultation with end users, Business Analysts and senior development team members. Provide input to prolong application life or recommend replacement. Confer with senior development team members to gain understanding of needed changes or modifications of existing programs. Assist in resolution of questions of program intent, data input, output requirements, and inclusion of internal checks and controls. - Evaluate and thoroughly understand complex interrelationships between assigned applications and systems, such as whether a contemplated change in one application would impact or cause unwanted results in a related part of that application or other applications/systems. Proactively provide subject matter expertise regarding assigned application(s) to other members of the technology and business teams to assure understanding of interrelationships and dependencies. - Support the installation planning for application program requirements. Support the end-user and technical operations staff as required. Assist senior development staff with the integration of technology within and across the capability domains. - Act as a resource to junior development staff regarding technology, methodologies and standards. Proactively share knowledge and collaborate with development team members, Business Analysts and Technology Operations to assure quick and effective responses to customer needs (internal and/or external - For Senior and Executive Levels: Strategically plan and prioritize software/solution releases within planned release schedules based on enterprise business strategy, business and technology need, and impact while assuring appropriate scope, size and impact of releases to end users. Effectively plan all design, development and testing work to assure the pre-determined release schedule is met. - For Senior and Executive Levels: Provide strategic direction and operational leadership to a team of highly technical employees. Develop and maintain an organization of high performing people through effective hiring, coaching and rigorous performance/talent management processes.