About the Role
About the Role
We are looking for an Embedded/Software Engineer to design and build a middleware layer that connects our physical equipment to our software platforms. You will own the bridge between hardware and software — reading data from devices, translating protocols, and exposing clean, reliable interfaces (APIs/services) that our applications can consume in real time.
This is a hands-on role: you will work directly with equipment, firmware, drivers, and communication protocols on one side, and with our backend/application teams on the other.
Key Responsibilities
- Design, develop, and maintain middleware that interfaces between equipment (sensors, controllers, instruments, machines) and our in-house software systems.
- Implement device communication over serial (RS-232/RS-485), USB, Ethernet/TCP-IP, and industrial protocols (e.g., Modbus, CAN bus, OPC-UA, MQTT, BACnet — as applicable to our equipment).
- Build and document APIs and services (REST, WebSocket, gRPC, or message queues) that expose equipment data and controls to our software applications.
- Develop data acquisition, buffering, and synchronization logic to ensure reliable, low-latency, loss-tolerant communication.
- Parse and normalize vendor-specific data formats and SDKs into a unified internal data model.
- Handle error recovery, reconnection logic, logging, and health monitoring for connected devices.
- Collaborate with software/backend teams to define integration contracts, and with hardware/field teams to troubleshoot equipment issues.
- Write unit/integration tests, simulators/emulators for equipment, and maintain clear technical documentation.
- Support deployment on edge devices or industrial PCs (Linux/Windows), including packaging, updates, and remote diagnostics.
Required Qualifications
- Bachelor's degree in Computer Science, Computer/Electronics Engineering, or equivalent practical experience.
- 3+ years of experience in embedded systems, device integration, or systems-level software development.
- Strong programming skills in C/C++ and/or Python (Go, Rust, or C#/.NET a plus).
- Hands-on experience with at least one hardware communication protocol: serial (UART/RS-232/RS-485), Modbus, CAN, MQTT, OPC-UA, or vendor SDKs.
- Experience designing or consuming APIs (REST/WebSocket/gRPC) and working with message brokers (MQTT, RabbitMQ, Kafka, or similar).
- Solid understanding of multithreading/concurrency, real-time data handling, and networking fundamentals (TCP/UDP, sockets).
- Proficiency working in Linux environments (shell scripting, systemd services, debugging tools).
- Experience with version control (Git) and CI/CD practices.
Preferred / Nice to Have
- Experience building middleware, gateways, or SCADA/IoT edge software in a production environment.
- Familiarity with databases (SQL, time-series DBs like InfluxDB/TimescaleDB) for equipment data logging.
- Experience with Docker/containerized deployments on edge devices.
- Knowledge of firmware development (STM32, ESP32, ARM Cortex) or ability to read firmware code to understand device behavior.
- Experience with equipment in [your industry — e.g., medical devices, manufacturing, laboratory instruments, energy].
- Understanding of security for device communication (TLS, certificate management, authentication).
What Success Looks Like (First 6–12 Months)
- Month 1–2: Understand our equipment fleet, existing software stack, and integration pain points; deliver a middleware architecture proposal.
- Month 3–6: Ship a working middleware MVP connecting priority equipment to our software with documented APIs.
- Month 6–12: Harden the middleware for production (monitoring, error recovery, OTA/update strategy) and onboard additional equipment.
Requirements
Embedded systems experience
3+ years of experience in embedded systems, device integration, or systems-level software development.
Programming skills
Strong programming skills in C/C++ and/or Python are required.
Hardware communication protocols
Hands-on experience with hardware communication protocols like Modbus, CAN, or MQTT is essential.
API development
Experience designing or consuming APIs (REST/WebSocket/gRPC) is necessary.
Linux proficiency
Proficiency working in Linux environments is required.
Nice to Have
Experience building middleware or SCADA/IoT edge software in a production environment is a plus.
Familiarity with SQL and time-series databases for equipment data logging is beneficial.
Experience with Docker/containerized deployments on edge devices is advantageous.
Knowledge of firmware development or ability to read firmware code is helpful.
Benefits
Health insurance
Comprehensive health insurance coverage is provided.
Remote work options
Flexible remote work options are available.
Learning budget
A budget for professional development and learning is offered.