Salary 110,000 - 130,000 GBP per year
Requirements:
- Bachelors degree in Computer Science or Software Engineering
7+ years of working experience as a Software Engineer, with 2+ years as a Senior Software Engineer
Proficient in developing low-level systems in C, C , Java, Kotlin, or Rust (most ideally)
Proficient in developing OOP architectures
Proficient in multithreading and concurrent programming
Proficient in developing distributed systems and cloud environments
Proficient knowledge of Operating Systems (mainly Unix) and Networking
Substantial experience in working with distributed computing frameworks, such as Hadoop, Spark, Cassandra, Kafka, ZeroMQ, Akka, Kubernetes, Zookeeper, etc.
Substantial experience in using cloud infrastructures tools like Kubernetes, Docker, Terraform, and/or Nomad
Substantial experience in working with at least one cloud service: AWS, Google Cloud, and/or Microsoft Azure
Substantial experience in build and release (CI/CD) engineering
Substantial experience in working with database systems
Substantial experience in developing client-server architectures
Familiarity with large-scale software architectures that spans across multiple repositories
Familiarity with open-source software development and community
Strong communication, documentation, writing, and presentation skills
Responsibilities:
- As a Staff Software Engineer, you will be working on various products that make up our technology stack, which includes (but is not limited to):
TypeDB: our strongly-typed database with a rich and logical type system, that empowers you to tackle complex problems, with TypeQL is its query language. TypeDB is built with open-source distributed technology stacks: RocksDB, ANTLR, SCIP, Bazel, and GRPC. Today, TypeDB is written in Java, but we are in the process of rewriting it in Rust, with clients implemented in multiple languages, such as Java, Python, and Node.js. The extensive build system of TypeDB is built with Kotlin and Bazel.
TypeDB Cluster: the distributed version of TypeDB, using the same open-source distributed technologies (plus ZeroMQ), built through a reactive architecture implementing the Raft replication algorithms. TypeDB Cluster serves as our commercial offering that provides TypeDB users with scalability, security, configurability and management tools to effectively use TypeDB in a production environment. Today, TypeDB Cluster is written in Java, but we're now rewriting it in Rust. The extensive build system is also built with Kotlin and Bazel.
TypeDB Studio: the Integrated Development Environment (IDE) of TypeDB. Studio allows developers to manage their TypeDB project source code (e.g. schema and data), interactively manage the database schema, data and users, as well as query the database to produce graph visualisations of their data. Studio is built using Kotlin and Jetpack Compose.
Vaticle Factory: the in-house built CI platform that automates our entire software development life cycle from testing, benchmarking, tracing, quality checking, dependency upgrading, verifying (releases), and releasing. Vaticle Factory is designed for engineering teams building distributed systems on multi-repo architectures that require performance benchmarking. Vaticle Factory is built in the cloud, using the Kubernetes technology stack. Today, Vaticle Factory is written in Java and React, but we're now rewriting it in Rust, Angular, and TypeScript.
Vaticle Cloud: the cloud platform in which TypeDB will be automatically deployed, managed, and orchestrated in any of the popular cloud services: GCP, AWS, or Azure. Similar to Vaticle Factory, Vaticle Cloud is built in the cloud, using the Kubernetes technology stack. Vaticle Cloud is also built in Rust, Angular, and TypeScript.
Across all technologies, your primary languages for development will be Rust, Kotlin, and TypeScript.
As a Staff Software Engineer, you will be assigned to one technology at a time from the list above, rotating to various other projects over time, to acquire the skills and experience to grow as a Software Engineer, and impact various technologies in the company. Each assignment from will be decided based your interest, skillset, experience, and the team development needs at the time. Your work will span across all aspects of software engineering; from programming and debugging, to architecture design, build engineering, release engineering, documentation, workflow automation, code reviews, as well as R&D. As a senior member of the team, you will have a lot of opportunity to lead the growth of the company, which will be part of your responsibility.
Technologies:
- Angular
- Cucumber
- Docker
- Figma
- IntelliJ
- Java
- Kotlin
- Kubernetes
- RabbitMQ
- Rust
- React
- TypeScript
- gRPC
- Bazel
- TypeDB
- TypeQL
More: