Summary:
We are looking for technical team members at all levels who want to push themselves to deliver best in market SaaS solutions. We offer a challenging environment where you will have to grow, adapt and use your skills consistently. Our customers rely on us in the moments that matter. Engineering delivers on that promise.
You can read the bullets below. But they almost always look the same, right? Here is the deal – being a principal engineer here at DFIN means helping us deliver SaaS software solutions for our customers who primarily work with the SEC or other global regulating bodies. Our products are in demand because we solve regulatory problems for our customers. As a principal engineer, you’ll own projects end to end, write code that others will look towards as a standard, understand how we operate our systems, and make sure our technology grows and doesn’t become a big pile of tech debt.
This isn’t your simple, run-of-the-mill, boring system. This is a system with an interesting mix of design challenges such as eventual consistency, messaging, concurrency, network resiliency, data replication, load/demand prediction, observability engineering, build and deployment pipeline optimization, etc.
Responsibilities:
- Design and implement concise, modular, cohesive, frontend and backend services in a distributed system context that are resilient, efficient, and reliable.
- Ensure automated tests are highly effective in terms of software quality, refactor flexibility, and integration/delivery speed.
- Concurrent and asynchronous software design/development.
- Advanced asynchronous and resilient network communications design and implementation.
- Extensive usage of all aspects of observability systems from experienced instrumentation of code to well-designed queries, dashboards, and alerts.
- Data driven optimization of latency, compute, memory, storage, and network traffic.
- Maintain awareness of production system performance, errors, and code usage.
- Communicate with clarity with diagrams, documentation, and presentations to other developers, dev teams, SREs, and management.
- Optimize build, deployment, and IaC provisioning pipelines.
- Rigorous analysis of escaped defects to determine corrective actions with depth of insight.
- Design and develop defensively to maintain or increase security going beyond OWASP and zero trust patterns by truly understanding the area of the system being worked on.
- Rigorous and proficient review and clear feedback on pull requests by team members.
- Keep up with relevant technologies, techniques, tools, and patterns.
- Build software with people. Product managers, other developers, SREs, junior engineers, senior engineers, and offshore. Construct software that matters!
- Constantly address technical debt. Shine a light on it, even when it hurts.
- Plan, lead, or manage projects when called upon to do so while remaining hands on.
Qualifications:
- Commitment to your software development, the products you work on, and the firm.
- 5-10+ years of experience working in full stack distributed systems.
- BS in Computer Science or equivalent work experience.
- Experience meeting secure coding standards and willing to participate in financial systems security practices.
- Ability to explain complex topics to managers/directors, program/product managers
- Non-negotiables
- Strong in C#
- Must be willing to work with C#, Node JS, Typescript
- Maybe/sometimes - REACT (preferred), Angular, or other SPA frontend development tech stack
Qualifications (cont.):
- Roughly 50% or more of the following in rough order of importance
- Distributed systems design patterns and experience
- Concurrency and/or asynchronous operations.
- Messaging systems and patterns using tech like Azure Service Bus, Rabbit MQ, etc.
- Azure (Preferred), AWS, and/or GCP
- In depth REST API experience
- Build pipelines and ideally IaC such as Terraform
- Typescript/JavaScript
- RDBMS such as SQL Databases such as SQL Server or PostgreSQL
- WebSockets or other push technologies
- Algorithm design/optimization and combinatorial problem solving.
- Profiling for compute and memory optimization.
Education:
BS in Computer Science or equivalent work experience.