Position: Middle/Senior Java Engineer
Company: Grid Dynamics
Experience required: 3y
English level: intermediate

**Project description:**
Dematerialization, document management, and digital processes.
**Client description:**
The client is one of the most important Italian companies in software development and IT services, specializing in the dematerialization of paper documents and electronic document management, and in digital processes. The client offers its specialized expertise gained in the implementation of complex projects and stands out for its ability to ensure its own resources for analysis activities, implementation, customization, training, and support.

**Details on the tech stack:**
Java,  the Java Enterprise stack, Maven, JUnit, Spring, SpringBoot, JPA, Hibernate or EclipseLink, SpringData

**Min requirements:**
- Strong knowledge of Maven, JUnit
- Strong knowledge of Java and the Java Enterprise stack
- Strong knowledge of Spring and SpringBoot
- Strong knowledge of relational databases and related Java technologies and Object Relational Mapping Tools (JPA, Hibernate or EclipseLink, SpringData)
- Knowledge of GIT version control system
- Knowledge of the RESTful paradigm
- Knowledge of Docker
- Basic Knowledge of standard application integration technologies such as ESB (e.g. Camel), queues and topics (e.g. RabbitMQ), Web Services (SOAP and REST), etc.

**Nice to have requirements:**
- Knowledge of Cloud Native computing, Kubernetes / OpenShift, Microservices architecture
- Knowledge of Elasticsearch and Lucene
- Experience with Atlassian Jira, Confluence
- Experience with Java profiling tools (e.g. JProfiler) and more in general with application performance optimization

**Team:**
9 Senior Developers (3 Front-End, 6 Java), Ukraine. The team is going to grow

**Tasks:**
- Collaborate with the team leader, scrum master, and other team members to achieve agreed objectives within defined deadlines
- Provide estimates for assigned tasks
- Perform a technical analysis of assigned tasks
- Develop new features, automated tests, and proof of concepts
- Follow defined best practices and guidelines
- Perform application maintenance
- Help to troubleshoot application issues