Batvoice is looking for a scalability and stability-focused Senior Backend Engineer to bring our solution into the next phase of its lifecycle. Your job will be to make architectural decisions whose execution is expected to have multiplicative impact, then lead the team in the implementation of those decisions.
You will collaborate with:
The rest of the Application team (both Backend and Frontend focus). You will be leading them in projects you participate in, and you will serve as a technical and workflow reference even when you don’t.
The Operations team, who will help you implement and evaluate the feasibility of your proposed architectures from the infrastructural perspective.
The Data team, who you will solicit when interacting with our data processing and machine learning components.
Database Scalability : as our workload increases, we’re finding more and more database-related performance bottlenecks. We have numerous artifacts from the MVP phase of the product, which wasn’t expecting to deal with such a degree of concurrency. A general database (PostgreSQL) is used for “everything”, but we’re starting to run into the limits of some components of it (for example, we have FTS over a trigram virtual table). You’ll be figuring out what improvements we can make to the schema, what components will need to be modified, writing a pitch (we work using ShapeUp), and working on it with other team members iteratively.
Stability : the current product’s components are deeply inter-coupled. Changing one part of the code causes changes in many other components, and a problem in one component can bubble up and show itself in multiple other components. For example, we recently discovered a failure condition in our permissions system that caused the web renderer to crash. You’ll be deciding how to decouple the components in question, and whether those components need to be replaced wholesale, then leading the team in the process, making sure nothing else is broken in the process.
In the meanwhile, we will have new features that must be developed due to contractual obligations to our clients. You may be solicited to help team members responsible for those features, but your focus will be on ensuring that no scalability or stability faux pas are being committed in those process, and serving as a resource to the less experienced developers.
We are a fully remote company, though we do make physical offices available if you prefer those.
We do not measure seniority by years of experience, but in terms of results and ability, leading to rapid advancement opportunities.
We offer comprehensive healthcare coverage through Alan Purple for you and your family (50% participation).
From your second year onward, we offer a stock option plan for you to share in Batvoice’s long term success and journey.
Research has shown that having strict quantitative requirements discourage applicants that would have otherwise performed well at the position from applying. As such, instead of experience, we define skills you should have. (Having a skill does not mean knowing a specific tool.) Combined with our public definition of Senior, as well as our company Values, we encourage you to apply if you believe you’re a good fit for our needs, provided you can justify it in some way. We document how we make hiring decisions in our public Interview Process document, which should similarly give you an idea as to whether you’re likely to be selected.
Databases : you should be very familiar with how databases function, what optimizations matter, how to design a well-performing schema, and how to optimally integrate them in production. We should be able to have a conversation about the differences between database storage formats, how FTS works in PostgreSQL vs in ElasticSearch and similar kinds of questions. Currently, we use PostgreSQL with TimescaleDB, but we expect the stack to change with your input. Bonus points for asking questions and discussing potential migrations during the interview.
Data processing : the core of our business is processing data, so you should know about how that’s done! We should be able to chat about what’s the difference between Argo Workflows and Airflow, consistency modes, what makes something a microservice and what’s their disadvantage, execution models, idempotence, and similar topics.
Teamwork : our Engineers should not silo or work silently, an importance that’s ever greater in a fully remote company. You need to be able to organize your own time, write things down (and read things that are sent to you) to save everyone time, unlock bottlenecks, and more. While this is full of soft skills (which will be tested too!), this also includes familiarity with tools like Git, and its proper usage. You need to not only know how to organize commits so that a bisect can later help in writing a Post-Mortem, but also be able to guide the rest of the team on their journey towards mastery of such skills.
Dynamic Languages : our codebase is in Python with Django. If you’ve never used either, that’s fine, but then you’ll have to show that you won’t have any issues getting good at them quickly. One easy way to show this is by being able to talk about PL design and internals. If you’ve been waiting to rant about how the new python copy-and-patch JIT sucks, or PEGs are best implemented as a sub-VM, or about how JSC pioneered what is now the predominant NanBoxing implementation, this is your time to shine!
The entire recruitment process (including the steps we take internally) is documented in our Public Handbook. The short version looks like this:
Your CV and Cover Letter are reviewed by Engineers.
Bidirectional technical interview with an Engineering Manager or Director.
HR interview and Culture Fit with our CEO.
These companies are also recruiting for the position of “Software & Web Development”.