Senior Software Engineer (SMTS) — Ultra Messaging

Own Company

Own Company

Software Engineering

Chicago, IL, USA

Posted on May 21, 2026

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.