Position: Middle/Senior Java Developer
Company: QАrea
Experience required: 3y
English level: intermediate

Developers will join the team that is already working on the product. 
The team focuses specifically on building 3rd party integrations for the product. 

For the product to be usable we need the ability to load and export a variety of datasets and statistics from 3rd party applications into the product. For example: 
● Agent Statistics like current status, login time etc 
● Queue Statistics like call volume, average handling time, average waiting time etc. 

Typically this involves writing a Java based component called an adapter which will collect these statistics from the 3rd party system and do some conversion of the data into the necessary format for the Customer. Generally the data is obtained via APIs (Rest or SOAP) but may involve Java based APIs or database queries depending on the vendor we are integrating to. We also expect to write fully automated tests for these adapters using simulators to ensure quality and support customers using them in the field.

**Requirements**
● 3 years of experience in working with Java;
● Experience with applications deployed in containers e.g. Spring Boot;
● Experience in developing and consuming API services – REST (SOAP beneficial);
● Experience with version control systems e.g. Git;
● Experience of continuous integration e.g. Jenkins;
● Experience in following a code review process;
● Experience in unit testing e.g. Junit;
● Attention to detail and troubleshooting skills;
● Excellent written and verbal communication skills.

English - Intermediate (spoken skills required)

**Nice to Have **
● Knowledge of Gradle as a build tool;
● Knowledge of integration testing e.g. Cucumber or alternative ;
● Experience with relational databases and basic queries;
● Knowledge of authentication mechanisms for API services;
● Test Driven Development.

**Duties**
● Write well-designed, testable, efficient code;
● Contribute in all phases of the development lifecycle; 
● Ensure designs are in compliance with specifications; 
● Support continuous improvement by investigating alternatives and technologies and presenting these for architectural review; 
● Attend meetings.