Position: Middle Java Developer (only Wroclaw)
Company: Vakoms
Category: Java
Experience required: 3y
English level: upper

Hello! We, Vakoms, are looking for a Middle Java Developer to join our team in our new office in Poland.

**Full-time, only Wroclaw**

**About the project:**
Software Engineering is maintaining various applications and tools for both internal and customer usage.
The tools are mostly standalone applications to create and/or analyze vehicle data.
Moreover, some of the applications are running on the train itself, providing features like for instance the distribution of configuration files to the train network participants.

The work will be diversified between existing tools.
Additionally, there are some new applications planned, which have to be developed from scratch.
Here, it is a big plus to have fundamental knowledge about architectural contains.
The project involves the development of a web-based system for tracking and analyzing real-time events in the field of transport.

It is a web system that constantly collects a very large amount of data (~80 TB per month) from trains via MQTT/Kafka infrastructure. There is so much data that a person cannot analyze it. Therefore, part of this system is a large number of tools that analyze this data and draw conclusions that are already possible for human comprehension. That is, the project has elements of Big Data.

**Requirements:**
• 3+ years of Java development experience
• Strong knowledge of Java 
• Deep understanding of computer science fundamentals: OOP, OOD, design patterns, multi-threading
• Strong knowledge of Spring framework (Core, MVC, Security )
• Experience with Kafka, MQTT (other queue like solutions)
• Experience with RESTful API (Swagger, OpenAPI)
• Experience writing tests (JUnit 5, Spring Boot test, Mockito)
• Experience with PostgreSQL database
• Understanding of SOLID principles
• Strong communication skills
• Strong analytical and problem-solving skills
• Upper-Intermediate English

**Will be a plus:**
• DevOps experience (Docker, docker-compose, deployment, server and repository management, Gitlab CI/CD)
• Experience developing large scale distributed systems from scratch
• Experience with TimescaleDB database
• Understanding of Domain-driven design
• Understanding of UML

**Responsibilities:**
• Help in building the architecture
• Take part in discussing technical decisions
• Develop the most important parts of the projects
• Cooperate with client team