(Senior) Java Developer

Job description

We are looking for experienced Java developers 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.

  • 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
  • Home office/remote work with flexible working hours
  • Professional development within an international, technology and developer focused company
  • Working with cutting edge technologies
  • Various projects and possibility of changing projects within the company depending on your interest
  • Being part of the day-to-day development of a self-developed, high-traffic streaming service platform
  • Flat organization with small teams where all team members are actively involved in decision making process
  • Stress-free environment and predictable workflows
  • Atlassian (Jira, BitBucket, Confluence) and JetBrains software stack
  • Professional in-house workshops, trainings and English course

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