Role: Scala Engineer
Location: Amsterdam, Netherlands.
Duration: 6-12 month contract
Working Mode: Hybrid
Job Description:
Key Responsibilities:
• Develop, maintain, and optimize backend services using Scala (Cats, Cats Effect) and Java (8 & 17).
• Leverage the Cats library and other functional programming tools to build composable and effectful applications.
• Implement and maintain purely functional, type-safe, and concurrent systems.
• Work with Java 8 & 17 features like Streams, CompletableFuture, Records, Sealed Classes, and Virtual Threads.
• Design scalable, resilient, and event-driven microservices using both Scala and Java.
• Develop RESTful and gRPC-based microservices with efficient inter-service communication.
• Implement API gateways, service discovery, and circuit breakers for robust microservice architectures.
• Ensure scalability and fault tolerance using event-driven architectures (Kafka, Pulsar, RabbitMQ, etc.).
• Optimize service performance through profiling, monitoring, and observability tools (Prometheus, Grafana, ELK, etc.).
• Write clean, maintainable, and testable code with a focus on immutability and referential transparency.
• Collaborate with cross-functional teams, including frontend, DevOps, and QA, to deliver high-quality solutions.
• Continuously improve code quality and system performance through profiling, benchmarking, and testing.
• Follow best practices for functional programming, including monads, type classes, and category theory concepts where applicable.
• Participate in code reviews, mentoring, and knowledge-sharing sessions.
Required Skills & Experience:
• Excellent knowledge of microservices architecture and best practices.
• Strong proficiency in Scala and functional programming paradigms.
• Hands-on experience with Cats, Cats Effect, and functional libraries like FS2, ZIO (optional), or Doobie.
• Good understanding of monads, functors, type classes, and algebraic data types (ADTs).
• Solid experience in Java 8 & 17, including Streams, CompletableFuture, and new language features.
• Experience building and maintaining high-concurrency, distributed systems.
• Knowledge of asynchronous and reactive programming principles in both Scala and Java.
• Familiarity with frameworks like http4s, Akka, Akka HTTP, Play Framework (Scala) and Spring Boot, Micronaut, Quarkus (Java).
• Experience working with databases (SQL and NoSQL) and data streaming technologies (Kafka, Pulsar, etc.).
• Strong knowledge of testing strategies (ScalaTest, MUnit, JUnit, TestContainers, property-based testing).
• Understanding of cloud-based architectures and containerization (AWS, Kubernetes, Docker).
• Strong knowledge of CI/CD pipelines, DevOps, and Infrastructure as Code (Terraform, Helm, Ansible).
Nice to Have:
• Knowledge of ZIO and other FP-based libraries.
• Experience with GraphQL and gRPC.
• Open-source contributions or blogs on Scala/functional programming.
Soft Skills:
• Passion for functional programming and problem-solving.
• Strong analytical and debugging skills.
• Ability to work in an agile and collaborative environment.
• Excellent communication skills and a proactive attitude.