Senior Software Engineer
Escher Group
Escher Group
Escher powers the world's first and last mile deliveries, helping Posts connect nearly 1 billion consumers with global ecommerce networks. Postal operators rely on Escher to deliver an enhanced retail and digital customer experience, to activate new revenue streams, and to realize new delivery economics. Learn more at Position Overview Escher has begun a programme with a national post to modernise the systems behind its counters. At the centre of that programme is the Product Journey Engine (PJE). Every counter transaction - from posting a parcel to a cash withdrawal - runs as a journey: a defined sequence of what the clerk is asked, what the systems look up, what the devices do, and where every outcome goes. A journey is a self-contained JSON definition. A visual Designer produces it; a Journey Engine executes exactly what it says. That definition is the only contract between the two - and because this is a national post, every step of every journey has to be explainable after the fact. We are hiring two Senior Software Engineers. Each leads one area of the platform, and both work as a single team alongside the Chief Architect, the Designer team, a product designer, and the client's ePOS and integration partners:- Journey Engine - a .NET runtime, cross-compiled to WebAssembly and embedded in a TypeScript application. Host-agnostic, BCL-only, with no persistence of its own: journey state lives in an opaque blob held by the caller.
- POS Host Runtime - the TypeScript applet that runs a journey inside a third-party ePOS solution. It owns the journey loop in the browser, drives counter peripherals (printers, scanners, card terminals) through a host bridge, survives suspend and resume mid-transaction, and hands the result to the till's basket exactly once.
- Lead the design and delivery of one area of the PJE platform, working from the runtime specification with the Chief Architect.
- Own the contracts in your area - between engine and host, and with the Designer - including their versioning and the cost of breaking them.
- Troubleshoot and resolve technical issues across the engine/host boundary.
- Own the automated testing story for your area: tests are part of the deliverable, not a hand-off to a test engineer.
- Translate requirements and the specification into designs and JIRA stories, and challenge the specification where it is wrong or incomplete.
- Mentor other developers and take part in code reviews.
- Post-secondary education in Computer Science or Software Engineering.
- Substantial experience leading the delivery of a non-trivial component or service, end to end.
- Strong in C#/.NET or TypeScript, with working ability or willingness to learn the other - the two areas share one message contract and one team.
- Experience with JSON, JSON Schema and contract-driven design between components.
- Understands that tests matter as much as the code, and is comfortable owning the automated testing of their own work rather than delegating it.
- Comfortable building from a written specification, and able to say clearly when the specification is wrong or incomplete rather than code around it.
- Take non-functional requirements seriously: performance, traceability, and security are first class concerns, not afterthoughts.
- Experience building reusable libraries or SDKs consumed by others, with an eye for clean, stable public APIs and versioning.
- Experience with Git workflows and CI/CD pipelines (Azure DevOps, GitHub Actions)
- Able to meet the security clearance requirements of the target Escher client.
- Has built or maintained a workflow engine, rules engine, state machine or similar execution runtime.
- Understands deterministic evaluation, immutability and idempotency - and takes seriously the problem of proving them.
- Experience writing .NET for a constrained environment, and profiling and optimising within its limits (WebAssembly here; comparable environments such as Unity are acceptable).
- Experience sandboxing user-authored expressions or scripts: what they may read, what they must never reach.
- Experience in POS, payments or other transactional systems where a duplicated or lost commit has real cost.
- Experience architecting large, multi-component JavaScript/HTML applications.
- Experience building embedded or hosted JavaScript applications - Electron, Capacitor, embedded webviews, or widgets running inside a third party's page.
- Solid browser platform knowledge: DOM, iframes, cross-document messaging, sandboxing, and the practicalities of code you do not control the page for.
- Experience integrating with hardware peripherals or device services from a browser or embedded runtime.
- .NET / C# / .NET Core and TypeScript / JavaScript (strong in one; working ability or willingness to learn the other).
- JSON and JSON Schema.
- Git workflows; CI/CD pipelines (Azure DevOps, GitHub Actions).
- Experience with > NET / JavaScript interoperability a plus.
- WebAssembly experience - especially building WebAssembly with .NET - a strong plus, but not required.
- Exposure to WebAssembly or other compiled-to-browser runtimes, and consuming them from JavaScript, a plus.
- Experience with React and Material Design a plus.
Vacancy posted more than 2 months ago
Do you want to receive more vacancies?
Subscribe and receive similar vacancies to Senior Software Engineer. Be the first to apply!
Related searches
- junior software developer Boston, MA
- scientific software engineer Boston, MA
- intel software engineer Boston, MA
- vice president software engineering Boston, MA
- director software engineering Boston, MA
- software engineer Boston, MA
- software engineer student Boston, MA
- senior robotics software engineer Boston, MA
- financial software developer Boston, MA
- graduate software developer Boston, MA
