Staff Software Engineer

  • Vaticle
  • City Of Westminster, London
  • Dec 17, 2022
Full time I.T. & Communications

Job Description

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:


Vaticle is a team of people driven to empower engineers to solve complex problems. We are the creators of the strongly-typed database, TypeDB, and its query language, TypeQL. Our technology helps organisations in various industries, including Life Sciences, Defence & Security, Financial Services and Robotics, to build intelligent systems that tackle complex problems. From financial analytics to drug discovery, cyber threat detection to robotics disaster recovery, our technology empowers engineers around the world to tackle a higher order of complexity in data and knowledge.

We've built a pioneering developer community of 9,000+ engineers, spread over 20 countries, and counting. To continue pursuing this vision, we need to build a team of individuals who are not just the best and brightest in what they do, but also driven by a strong sense of purpose and compassion for the world.

You will be joining a team that cares deeply not just about the intelligence of the technology, but also the elegance and simplicity of the solution. We have a strong sense of urgency, but we always care about 'why' something needs to be developed, and we make sure that we work purposefully. Although we are expected to be independent in delivering our responsibilities, we collaborate in perfecting our ideas and solutions. Every time we have an opportunity to improve our workflow, infrastructure or architecture to achieve better performance, user experience or developer productivity, we take that opportunity, and we grow.