Java developer

Job description

We are looking for experienced Java developers with employee status for backend programming tasks. You will support our new developments on the backend side, as well as maintain our existing systems in a modern, microservice-based architecture. You will also have the opportunity to learn and use Kotlin, as we are using both languages in our service architecture.

  • Tech stack: Java 11/Kotlin, Typescript, Kafka, Spring framework, Rest api, Mysql, Jenkins, AWS and local servers, Docker
  • Atlassian (Jira, Bitbucket, Confluence) and Jetbrains tech stack
  • Development of Java microservices
  • Writing high quality, reusable, „clean” code
  • Writing tests
  • System design
  • Recognizing and fixing architecture related issues, performance optimization
  • Database design
  • Database query optimization

What we offer

  • Competitive salary based on experience and knowledge & fringe benefits
  • All You Can Move sport pass or Medicover private health insurance, monthly team building budget and quarterly company events
  • Professional in-house workshops, trainings and individual English course
  • Home office/remote work with flexible working hours (no core hours)
  • Professional development within an international, technology and people focused company
  • Combining the advantages of a big company (stability) and a startup (flexibility)
  • Working with cutting edge technologies
  • Various projects and possibility of changing projects within the company depending on your interest
  • Small teams where all team members are actively involved in the decision making process
  • Low stress environment and predictable workflows
  • We trust each other and we expect independence, but we don't micromanage

Job requirements

General software developer skills

  • Algorithmic complexity, basic algorithms
  • Memory management fundamentals (heap, stack)
  • Exception handling
  • Clean code concepts
  • Understanding of the more frequently used UML diagrams (class diagram, activity diagram, deployment diagram)
  • User-level experience with Linux (SSH, Bash, permission management)
  • Git fundamentals:
    • Commit, push fetch
    • Branches; creation of merge commits

Object oriented programming

  • OOP fundamentals, polymorphism, abstraction
  • Design patterns: MVC, Dependency Injection, Adapter, Factory
  • SOLID concepts

Java knowledge

  • Experience in a Java framework (eg. Spring, Guice, EE CDI)
  • Experience in an ORM system (eg. JPA, Hibernate)
  • Understanding build processes and dependency management (Maven, Gradle, Ant)
  • Understanding types and keywords (eg. class, interface, static, final)
  • Thread management (Thread, Runnable, ExecutorService)
  • Memory management, JVM (references, stack, heap, GC)
  • Java features (eg. string pooling, autoboxing, foreach, Iterable)
  • Collections API (List, Stack, Queue, Set, Map)
  • Exception handling (checked/unchecked exception, try/catch/finally)
  • Performance optimization techniques and tools

Databases

  • Database anomalies, normal forms, normalization
  • Entity-Relationship diagrams (design and reading)
  • Foreign keys, unique keys, contraints
  • Indexes
  • Concurrent data handling anomalies, transactions
  • Writing complex SQL queries
  • Optimizing SQL queries for performance

Advantages

  • Experience in Docker
  • Experience in CI / CD pipelines
  • Redis, Apache Kafka knowledge
  • Unit testing experience (JUnit, Mockito)
  • Java EE knowledge
  • Kotlin knowledge
  • Webservices (SOAP, JSON REST) knowledge

Soft Skills

  • Intermediate level English (written, spoken)
  • Good communication skills
  • Proactive, solution oriented approach
  • Willingness to work in a team