Role Description
As the Staff Software Engineer on the Data Externalization team, you will be part of a cross-functional team responsible for the design & implementation of DoubleVerifys reporting platforms for external & internal use. The Data Externalization team oversees a brand-new suite of microservice applications written in C#, & built upon .Net Core, & Asp.Net Core. Our front-end UIs, of which there are several, are all written in modern Angular. Our backend utilizes too many large data technologies to list, though we most heavily rely on Snowflake, Kafka, & Mongo, as well as standard columnar relational & relational databases. Infrastructure is managed Kubernetes, & monitoring focuses on Grafana, Loki, Prometheus, et al. In short: The Data Externalization team oversees huge amounts of data moving at scale, & we are the step on the chain that is responsible for ensuring that this data is correctly understood, accessed, & delivered to our clients. As the staff engineer on the Data Externalization team, you will be expected to be or become intimately familiar with all aspects of our system, & all of the technologies involved. Frequently, this will mean not only understanding the technologies listed above, but also understanding the technologies used by the teams & systems with which we communicate on a daily basis, & then applying this knowledge to help design & implement how the entire system will evolve. We of course expect you to be at the top of your game, & to be able to understand the complex technical domain owned by our team, in order to create & deliver great products. But most importantly, in this position, we expect you to use your skills & knowledge to be a technical mentor & the technical standard-bearer for the rest of the Data Externalization team.
Who You Are
You are a passionate & experienced software engineer looking to take on your next major technical projects. You enjoy learning the intricacies & nuances of a distributed system, & then elegantly & cleanly designing new technical implementations to organically grow that system to its greatest potential. You can speak intelligently on the complex interaction between code choices now, their system tradeoffs, evolution, interaction, first order, future & second order effects. A constant learner, youre a continuous contributor to the team IQ level. Youve got the ability to take on individual assignments & complete them front to back. You pride yourself on good architecture, writing & delivering high quality code. And most importantly, you enjoy sharing, reviewing, & teaching those practices to others.
What You Will do
- Design & implement systems responsible for processing billions of records daily
- Learn multiple complex systems that use numerous modern cutting-edge technologies
- Work with the team lead & team to design technical implementations to grow these systems to include new feature sets, both on the backend & in the UI.
- Identify any gaps in the distributed system, propose & implement solutions
- Help oversee technical implementations written by the rest of the team. Ensure that team implementations are in line with the designs created by yourself & your team lead, with an eye towards compatibility between features, design, implementation choices & best practices
- Be quick to fix issues that come up, & help to mentor & train others on the team
- Become a key contributor to feature scoping, technical implementation, & developer estimates
- Work with the Product Management team to understand requirements
- Be proactive about developer testing, & coding at all levels of a system of applications
- Use engineering know-how & common sense to assess impact of work on the platform
- Test & optimize code developed both by you & by other team members
- Work as part of a dedicated team that shares both knowledge & responsibility
- Establish effective monitoring for automated system failure detection
- Continuously release your features using automated deployment tools & frameworks
Requirements
- At least 7 years of professional software engineering experience
- You are an ambitious top performer who is able & loves to create robust & reliable software
- Coding fluently with C#, & Angular, including extremely strong knowledge of the C# & Angular ecosystems
- Strong proficiency with SQL to analyze data & develop reports & data transformations
- Familiarity of all other backend & monitoring technologies listed above
- Understanding of web, client, queue, workflow, & cloud technologies
- Strong familiarity with REST APIs & web-based APIs
- Familiarity with evolution of large, complex software systems over time
- Familiarity with core architecture principles of at scale systems, and/or microservices
- Excellent communication skills & a team player
- Experience with using task/build/automation tools in coordination with DevOps
- Bachelors Degree or higher in Computer Science or related field or equivalent technical experience
- Experience with developing microservices architectures & their best practices is a plus!
- Previous experience with managing & growing a large codebase over time is a large plus!
- Knowledge of Kubernetes & Terraform are not required, but are a plus!
|