Skip to main contentA logo with &quat;the muse&quat; in dark blue text.

Principal Software Engineer (Java) - Remote

AT Donnelley Financial
Donnelley Financial

Principal Software Engineer (Java) - Remote

Remote

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.

Want more jobs like this?

Get Software Engineering jobs that are Remote delivered to your inbox every week.

By signing up, you agree to our Terms of Service & Privacy Policy.


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.

Job ID: Donnelley_Financial_LLC-4208
Employment Type: Other