We're Hiring: Senior Scala Engineer
Location: United Arab Emirates (Remote)
Employment Type: Full-Time
Experience Level: Senior
Work Arrangement: Fully Remote
About UsWe are a globally focused organization committed to building scalable, reliable, secure, and high-performance software platforms across diverse markets.
Our engineering teams collaborate across Product, Software Engineering, Data, Platform, Cloud, DevOps, Security, Infrastructure, and Operations to develop resilient digital systems, data platforms, distributed applications, and services that support critical business operations and evolving customer needs.
The RoleWe are seeking an experienced Senior Scala Engineer to design, develop, test, optimize, and maintain scalable software applications and distributed systems using Scala.
The ideal candidate will combine strong Scala expertise with functional programming, concurrent and distributed systems, APIs, data processing, cloud-native engineering, and software architecture. The role will contribute to high-performance services, data-intensive applications, platform capabilities, technical standards, and engineering improvements while providing technical guidance to other engineers.
Key Responsibilities
- * Design, develop, test, deploy, and maintain production-grade software using Scala.
- Build scalable, reliable, secure, and maintainable Scala applications.
- Translate complex business and technical requirements into robust software solutions.
- Participate in application architecture, system design, and technical decision-making.
- Develop backend services, APIs, microservices, and distributed applications.
- Apply functional programming principles and idiomatic Scala development practices.
- Use immutable data structures, pure functions, type safety, and composable abstractions appropriately.
- Design concurrent and asynchronous applications using suitable Scala libraries and frameworks.
- Develop high-throughput services capable of supporting demanding workloads.
- Design and implement scalable distributed systems and service architectures.
- Develop RESTful APIs and service interfaces.
- Develop gRPC or other service-to-service communication mechanisms where appropriate.
- Implement event-driven architectures and asynchronous processing workflows.
- Work with messaging and streaming platforms such as Kafka or comparable technologies.
- Develop data-processing applications using Scala-based technologies.
- Work with Apache Spark and distributed data-processing frameworks where applicable.
- Design efficient data-processing pipelines for large-scale datasets.
- Optimize batch and streaming data-processing workloads.
- Develop and maintain data ingestion, transformation, enrichment, and processing services.
- Work with relational and NoSQL databases.
- Design efficient schemas, queries, transactions, indexes, and data-access layers.
- Optimize database interactions and application-level data processing.
- Implement caching and data-access optimization strategies.
- Design systems for horizontal scalability, resilience, and fault tolerance.
- Implement appropriate retry, timeout, circuit-breaker, backpressure, and graceful-degradation mechanisms.
- Develop robust error-handling and recovery strategies.
- Build services with clear boundaries, well-defined interfaces, and maintainable dependencies.
- Develop authentication and authorization mechanisms for backend applications.
- Apply secure coding principles and appropriate data-protection practices.
- Collaborate with cybersecurity teams to identify and remediate application vulnerabilities.
- Develop unit, integration, functional, and end-to-end tests.
- Establish testing strategies for distributed, concurrent, and data-intensive applications.
- Improve automated test coverage and software quality.
- Conduct code reviews and provide detailed technical feedback.
- Maintain high standards for code readability, maintainability, reliability, and testability.
- Investigate production incidents, application failures, data-processing errors, and performance issues.
- Perform root-cause analysis and implement permanent corrective actions.
- Analyze logs, traces, metrics, application failures, and distributed-system behavior.
- Implement observability through structured logging, metrics, distributed tracing, health checks, and alerting.
- Work with DevOps and platform teams to improve application deployment and operational reliability.
- Develop and maintain CI/CD pipelines for Scala applications.
- Manage Scala build configurations using tools such as sbt and related build technologies.
- Maintain dependency management, build processes, packaging, and release configurations.
- Support containerized Scala applications using Docker and Kubernetes where applicable.
- Develop and operate Scala applications in cloud environments.
- Work with AWS, Azure, Google Cloud, or comparable cloud services where required.
- Integrate applications with cloud storage, databases, messaging systems, monitoring services, and other managed platforms.
- Support infrastructure-as-code and automated deployment practices where relevant.
- Design applications with high availability, disaster recovery, and business-continuity requirements in mind.
- Participate in capacity planning, performance testing, load testing, and scalability assessments.
- Analyze CPU, memory, garbage-collection, thread, network, and database performance.
- Optimize JVM performance, application memory usage, garbage collection, and runtime behavior.
- Use profiling and diagnostic tools to identify application bottlenecks.
- Develop reusable Scala libraries, frameworks, services, and engineering components.
- Establish reusable patterns and technical standards for Scala development.
- Evaluate Scala libraries and dependencies for functionality, security, compatibility, licensing, and maintainability.
- Manage dependency upgrades and address security vulnerabilities or compatibility issues.
- Participate in modernization initiatives involving legacy Scala, Java, or distributed applications.
- Assess technical debt and prioritize refactoring and architecture improvements.
- Design and implement integrations with internal platforms, external systems, and third-party services.
- Maintain clear API contracts, schemas, compatibility requirements, and technical documentation.
- Collaborate with Product Managers, Architects, Data Engineers, QA Engineers, DevOps Engineers, Security Engineers, and other stakeholders.
- Participate in Agile planning, refinement, estimation, reviews, and retrospectives.
- Break complex requirements into manageable technical tasks.
- Estimate engineering effort, identify dependencies, and communicate delivery risks.
- Participate in technical discovery, proof-of-concept development, and architectural experimentation.
- Evaluate emerging Scala, JVM, functional-programming, distributed-system, and data-processing technologies.
- Stay current with developments in Scala, JVM technologies, cloud platforms, distributed computing, and software engineering.
- Develop and maintain architecture documentation, technical specifications, API documentation, and operational runbooks.
- Provide technical guidance and mentoring to junior and mid-level engineers.
- Support engineering teams in debugging complex application and distributed-system issues.
- Lead technical initiatives and contribute to engineering roadmaps.
- Promote engineering practices focused on scalability, reliability, security, performance, automation, and maintainability.
- Identify opportunities to improve development productivity, application performance, system resilience, and operational efficiency.
Key Performance Indicators
- * Scala development delivery performance
- Production software quality
- Production defect rate
- Code-review compliance
- Automated test coverage
- Unit-test coverage
- Integration-test coverage
- Application availability
- Service uptime
- API reliability
- API response time
- Application latency
- System throughput
- Data-processing throughput
- Batch-processing performance
- Streaming-processing latency
- Event-processing reliability
- JVM performance
- Garbage-collection efficiency
- Memory utilization
- CPU utilization
- Database performance
- Query execution efficiency
- Cache effectiveness
- Concurrent-processing performance
- Error rate
- Production incident frequency
- Mean time to detection
- Mean time to resolution
- Repeat incident rate
- Root-cause resolution effectiveness
- CI/CD pipeline success rate
- Deployment success rate
- Release reliability
- Rollback frequency
- Security vulnerability remediation
- Dependency-update compliance
- Technical-debt reduction
- Legacy-system modernization
- Performance optimization delivery
- Observability coverage
- Monitoring effectiveness
- Documentation completeness
- Reusable-component adoption
- Engineering productivity
- Stakeholder satisfaction
- Mentoring effectiveness
- Continuous-improvement delivery
Ideal CandidateThe successful candidate should have strong experience in Scala software development, functional programming, backend engineering, distributed systems, data processing, JVM technologies, cloud-native applications, or high-performance software engineering, preferably within technology, financial services, telecommunications, e-commerce, SaaS, data platforms, or other large-scale digital environments.
The candidate should demonstrate:
- Strong professional experience developing production systems using Scala.
- Deep understanding of Scala syntax, type systems, collections, pattern matching, traits, implicits or contextual abstractions, and functional programming principles.
- Strong knowledge of idiomatic Scala and modern Scala development practices.
- Experience with Scala 2 and/or Scala 3 in production environments.
- Strong understanding of immutable programming and type-safe application design.
- Experience with functional programming concepts including pure functions, higher-order functions, algebraic data types, and effect-oriented programming.
- Experience with asynchronous and concurrent programming.
- Strong knowledge of distributed systems and scalable service architectures.