Senior Scala Engineer
Description
- Required Skills
- 5+ years building backend systems with Scala as your primary language (strong core competency in one not a shallow familiarity in both)
- Distributed data processing — Apache Spark or equivalent (production usage required, regardless of whether your primary language is Scala or Python)
- Kafka — event-driven architecture, producers/consumers, production usage
- AWS — practical experience with EMR, Step Functions, ECS, or Lambda
- Strong SQL and data modeling — ideally PostgreSQL (schema design, query optimization, indexes)
- Solid knowledge of data structures, OOP, and design patterns
- Good understanding of concurrency and multithreading concepts
- LLD: modular architecture, clean abstractions, component design
- API design awareness: RESTful services, backward compatibility
- Testing strategy: unit, integration, E2E — deliberate approach to coverage
- Monitoring & observability: logging, metrics, alerting, dashboards in production systems
- CI/CD pipelines (GitHub / GitLab) and engineering best practices
- English: Upper Intermediate+ (written and spoken)
- Nice to Have
- The other primary language — if your primary is Scala, Python is a plus; if your primary is Python, Scala is a plus
- Java
- Apache Airflow or similar pipeline orchestration
- LLM/MCP tooling experience
- Experience with geospatial/map-related data or large-scale data quality systems
- Responsibilities:
- Design and implement scalable backend services and data processing pipelines
- Contribute to architecture and design discussions with reasoned technical input
- Own delivery end-to-end: development, testing, performance optimization, and production support readiness
- Implement and maintain testing practices (Unit, Integration, E2E) for owned components
- Contribute to monitoring, alerting, and observability of production systems
- Improve code quality via reviews, automated testing, and engineering best practices
- Contribute to estimations, planning, and iterative delivery in an Agile/Scrum process
- Share knowledge and support junior team members' growth