Scala Engineer - NLP/ Machine Learning
This is an exciting opportunity to join a leading technology company and a world-class team of Engineers whom are dedicated to innovation and beautiful design. Still an early-stage startup, the business is well-funded and rapidly growing with a mature strategy and a pipeline of exciting products. The founders have a track record creating, growing and exiting successful technology businesses; their last venture selling to Microsoft for $250m.
The Engineering team is currently ~15 Engineers, with plans to grow to 45+ Engineers over the next 12-24 months. They're focused on 4 key products (one already released and doing well in the market) and you will get to work on each of these using a microservices platform.
Tech Stack: Scala, Akka, CoreOS, Docker, AWS, React, React Native, MariaDB, Cassandra, Kubertenes, ElasticSearch, Spark, Kafka, Node, Python
You will be primarily working in Scala to build tools and scalable APIs. You will work on platform and application infrastructures for importing documents from offline to real-time sources, modelling information graphs, performing complex text processing and analysis tasks. You will build tools and algorithms to provide low-latency, ad-hoc data insights employing machine learning and natural language processing (NLP) techniques.
You will work on a wide variety of tasks including design and architecture, researching technology choices, writing code and tests with Scala, optimising performance, containerisation with docker, cluster management and orchestration with CoreOS, Kubernetes and other clustering technologies.
Key duties and responsibilities:
- Writing well-tested, clean and performant code according to feature requirements
- Engineering designs and architectures for a scalable, distributed microservices platform
- Taking ownership of tasks, communicating ideas and decisions throughout the team and ensuring tasks are fully completed with high quality
- Building innovative tools and applications primarily using Scala
- Assessing technology choice and integrating third party products
- Writing unit and functional tests as standard
- Using docker, CoreOS and other clustering technologies to provide scalable continuous deployment focused platform
- Carrying out load and performance tests when necessary and optimising pipelines for performance
- Following an agile process and contributing to continuous improvement of the process
Skills & Requirements:
- Experience with Scala is preferred, but consideration will also be given to those with other JVM language backgrounds
- Experience in using a rigorous build pipeline (git, build, test, CI, etc.)
- Knowledge and experience of reactive programming for example message driven architectures and the actor model using Akka
- Confident researching technology choices and communicating your findings to the wider team
- Expertise in big data will be highly advantageous, for example with Kafka, Cassandra and Spark
- Proficiency with Linux
- Knowledge of testing, writing tests as standard and knowing how to achieve good coverage. Using testing tools and frameworks such as ScalaTest, Mockito and testkits such as akka-testkit. Running performance tests and using results to make optimisations
- Experience or interest in machine learning and natural language processing
- DevOps tools and frameworks, for example: docker, CoreOS, base, AWS, Fleet, Kubernetes
If this sounds like the role for you then we'd love to hear from you, please apply using the link above or email hayden(dot)green(at)thinkersconnect(dot)com