About the Role
In a cloud software world, where who you are and what you have access to determines the risk associated with your accounts being compromised, Abnormal Security aims to build a comprehensive tool to understand the employees of our customers, and aid security professionals in assessing the risks and threats impacting their employee base. Help us build a new layer of protection that will give enterprises the same level of security for their cloud offerings as Abnormal Security's industry leading products do in the email security space. We're looking to add a Senior Backend Engineer to our team of world class engineers. The individual in this role will shape and elevate our Knowledge Engines Platform team while working closely within the Behavioral Security Products division. This role straddles the line of velocity and excellence.
What you will do:
As a Backend Engineer of the Knowledge Engines Platform team, you will:
Design and Development:
Build out performant APIs to serve consistent data that serve as sources of truth for many systems in Abnormal.
Build and maintain high-throughput, low latency systems that process 100s of millions of events per day to enable detection to identify notable events.
Establish data pipelines that ensure our data is updated regularly and reliably
Enhance our frameworks to allow us to make changes to our APIs and datasets in an agile manner
Develop robust and scalable backend integrations with external applications
Define deliverables towards key projects, de-risking projects and executing them towards key milestones.
Be relied upon to own the delivery of complex features for a Standing Team - to design, decompose, execute, and launch.
Own SLAs/SLOs for our systems and drive improvements.
Testing and Debugging
Conduct thorough testing of applications, including unit testing and integration testing
Use debugging tools and techniques to diagnose and fix issues in a timely manner.
Driving overall quality of the systems and codebase
Influence quality culture of the team by example.
Support and On-call
Provide operational support to maintain a high level of system uptime and performance
Provide technical support to troubleshoot and resolve issues reported by users or identified through monitoring systems and participate in on-call rotations.
Proactively identify inefficiencies in monitoring and alerting systems and address them through efficient solutions
Collaboration and Communication
Communicate effectively in an async manner with team members to provide updates, discuss challenges and propose solutions.
Participate in code reviews to maintain code quality and in system design discussions
Create a magical work environment with colleagues and memorable interview process for candidates
Mentor and coach other junior team members on the team.
Continuous Learning and Improvement
Actively contribute to knowledge sharing within the team and participate in professional development activities
You are someone who wants to make an impact. You are passionate about solving customer problems and have built up a base of skills in backend and distributed systems development to do so. You want to apply those skills on a problem that leaves the world in a better place.
We are a scrappy team: we are building multiple systems from scratch - this means you should be comfortable with a level of uncertainty beyond what you'd find at a more mature company or even a more mature team at Abnormal. Many of our projects will come with vague requirements across multiple teams, and we expect this engineer to be able to refine the requirements from the teams by reaching out to them to make sure we fulfill their needs.
We are also not only a remote team, but a very distributed team, as such you will need to have excellent communication skills across both verbal and written mediums. You will need to be just as comfortable on a zoom call as writing a 1 pager project proposal to be shared across the team for technical feedback.
Must Have:
Experience building and operating highly scalable and highly available distributed systems and services.
Experience working with data pipelines, both event-driven and synchronous.
6+ years of overall software engineering experienceExperience with relevant tech stack:
At least 1 year of experience designing complex distributed systems
Proven experience with end to end ownership across various stages of SDLC including requirements gathering, design, development, production support and maintenance
Proven experience working with agile development methodologies (both scrum and kanban)
Proven experience working and communicating effectively with cross-functional teams across multiple time zones with with remote stakeholders
BS degree in Computer Science or related engineering fieldNice to Have:
3+ years of experience with Golang
3+ years of experience with Protobuf
2+ years of experience with Apache Spark (mainly PySpark)
Exposure to Airflow, Elasticsearch, Kafka, Parquet
#LI-MT1