Software Engineer (Scala)
We are seeking someone with experience building and maintaining highly performant distributed systems. You will have experience with functional programming and object-oriented design and development. As a fast-growing team it is important that you can successfully collaborate with developers, architects, and product managers, ideally in an early stage company environment. We're looking for engineers who are suspicious of easy answers and who can't walk past something broken without wanting to fix it.LocationSupport for fully-remote and in-person collaboration as it works best for individuals and the team. Some of our team is based in Portland, Oregon, but we are a remote-first company.Job RequirementsHighly skilled in Scala or another functional languageExperience designing robust protocols for distributed systemsFamiliarity with Akka/Pekko or the Actor-modelExposure to designing, implementing, and maintaining complex data infrastructuresHands-on experience designing and developing scalable, high performing and fault-tolerant applicationsAble to rapidly learn and apply new technologiesUnderstanding of concurrency in the JVMWillingness to create and update documentation to facilitate learning, with comfort speaking to groups and presenting informationNice to have: graph databases and graph algorithmsNice to have: experience using KafkaNice to have: experience using Cassandra or ScyllaDB (esp. in large clusters)Day to day at thatDotLearn. We value curiosity and share a desire to continuously learn new things, including from each other.Collaborate. As a fast growing team, we must communicate and work together to achieve goals. That includes both within teams and across our small, dynamic team.Write. Clarity of thought is best reflected in clear documentation. We document our work in ways our community of backend software engineers will want to engage with.Represent. Advocate for the needs of our users and contribute to the community discussion on product direction and uses.About usthatDot is a growing company that specializes in solving high-throughput data streaming problems (entity resolution, streaming joins, ingest pipelines, incremental computation, pattern matching, etc.) using graphs. Some of the typical challenges we deal with include:Designing and maintaining protocols in distributed systemsImplementing new features in our querying engines and actor-based graph interpreterCreating high-throughput back-pressured streaming pipelinesEnsuring horizontal and vertical scalabilityQuine, our core technology, is a streaming graph that combines key operational features of event stream processing systems like Flink with the graph data structure of databases like Neo4J or Tigergraph. Quine makes it easy to find complex patterns and anomalies in massive data streams and trigger action immediately. Built on native streaming graph technology as the result of 7+ years of DARPA-funded R&D, this hot new technology makes it easy for infinite datasets to be efficiently analyzed in real-time. Ideal use cases for Quine include financial and identity fraud detection, XDR/EDR solutions, network observability/root cause analysis, and e-commerce.What We Believe AboutWork:About more than just a paycheck.Should be intellectually engaging.Should provide the opportunity to learn and grow.Short-termism in tech is bad. It’s worth building lasting relationships.Punching a clock or counting hours is bad. Results > Hours.It’s a big part of our lives, but it’s not all there is.Creativity In Work:Work should be fun!Knowledge work - Coding is the easy part. Figuring out the ideas is hard work.Our mental model is really what we’re building when coding. Communicating is an expression of your mental model. First think clearly, then help someone else share your thoughts.Hiring:Plan to teach us something about the cool work you’ve done in the past.Let us teach you something about the cool work we’re doing now.