Donnelley Financial, LLC
Principal Software Engineer - Distributed System - Full Stack (Remote)
Donnelley Financial, LLC, Rockville, Maryland, 20849
Description: Donnelley Financial Solutions (DFIN) is a leader in risk and compliance solutions, providing insightful technology, industry expertise, and data insights to clients across the globe. We're here to help you make smarter decisions with insightful technology, industry expertise, and data insights at every stage of your business and investment lifecycles. As markets fluctuate, regulations evolve and technology advances, we're there. And through it all, we deliver confidence with the right solutions in moments that matter. 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 that 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. This system is like Google docs, but with more sophisticated features, and this is a role working on the most advanced and challenging aspects of the system. 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. Software development on complex, but potentially irreducible algorithms or combinatorials. Find ways to reduce/decompose complex software components along appropriate boundaries. When apparently irreducible functionality is encountered and resists beneficial decomposition, find ways to simplify through quantization. Responsibilities (cont.): 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. Communicate clearly via software architecture, embedded docs, or o11y. 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. Ensure the software is as simple as possible, but not simpler. 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. Participate in the planning of technical engineering and product roadmaps. Plan, lead, or manage projects when called upon to do so while remaining hands on. Qualifications: BS in Computer Science or equivalent work experience. Commitment to your software development, the products you work on, and the firm. 6-15 years of experience working in full stack distributed systems. 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 2 of Java, C#, Javascript/Typescript, NodeJS. Must be willing to work with C#, Node JS, Java, Typescript REACT (preferred), Angular, or other SPA frontend development tech stack 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 Advanced HTTP protocol/Networking In depth REST API experience Docker, AKS/Kubernetes Build pipelines and ideally IaC such as Terraform Typescript/JavaScript RDBMS such as SQL Databases such as PostgreSQL or SQL Server WebSockets or other push technologies Service workers, Web workers, or WASM Browser APIs Algorithm design/optimization and combinatorial problem solving. Profiling for compute and memory optimization. Stream processing or functional reactive programming. Micro-frontends Browser Canvas Experience with heavy, sophisticated, complex frontend SPA or PWA software. It is the policy of Donnelley Financial Solutions to select, place, and manage all its employees without discrimination based on race, color, national origin, gender, age, religion, actual or perceived disability, veteran's status, actual or perceived sexual orientation, genetic information or any other protected status. If you are a qualified individual with a disability or a disabled veteran, you have the right to request a reasonable accommodation if you are unable or limited in your ability to use or accessjobs.dfinsolutions.comas a result of your disability. You can request a reasonable accommodation by sending an email toAccommodationRequestsdfinsolutions.com.