Description
Role Overview
The Senior Software Engineer SMTS role is part of the Ultra Messaging (UM) team, a small, specialized group of engineers building and maintaining one of the industry's most demanding real-time messaging middleware platforms. Ultra Messaging is mission-critical infrastructure for some of the world's largest financial institutions — including major global banks, trading firms, market makers, and exchanges — where microseconds matter and reliability is non-negotiable.
The team works remotely with a preference for candidates in the Chicago area, where several team members are based. You'll be working on a mature, production-grade, system-level C codebase that has been powering real-time financial data flows since 2004.
If you're a low-level systems programmer who loves performance, concurrency, and working on software that has to work right, every time — this is your role.
Responsibilities
- Analyze requirements for new features, enhancements, and bug fixes; produce clear requirements documents.
- Evaluate the existing codebase to determine optimal design approaches; produce design documents.
- Implement changes primarily in the core C layer, with occasional work in Java (via JNI) and .NET (C#) API wrappers for cross-platform support.
- Write and execute development-level tests to validate correctness and performance.
- Collaborate with and support QA and customer support engineers throughout the development lifecycle.
- Occasionally engage directly with customers on technically complex issues when escalation is warranted.
Required Skills
- You have 5+ years of experience writing production-quality C or C++ code.
- You have hands-on experience with multi-threaded programming, including concurrency patterns and thread synchronization primitives.
- You understand performance optimization at the system level — you know how to find bottlenecks and eliminate them.
- You have strong debugging skills and are comfortable diving deep into complex, unfamiliar codebases.
- You have strong written communication skills — you'll be producing requirements and design documents, and occasionally working through complex technical issues directly with customers.
Even Better If…
- You know Java — and bonus points if you've worked with JNI (Java Native Interface).
- You have experience with networking protocols, including UDP multicast.
- You've done socket programming at a low level.
- You've used performance profiling tools and have a methodology for systematic performance analysis.
- You have experience with messaging middleware — UM, Aeron, TIBCO EMS, Tibco RV, Kafka, or similar.