Job Description
As a Senior Software Engineer in the IoT domain you will be responsible for developing critical systems keeping in mind.
Concurrency: You must handle multiple activities concurrently like fetching and sending multiple messages from/to multiple devices at the same time.
Distributed Operations: You must run on a distributed network of multiple servers in different geographies, coordinating through APIs on a microservices architecture.
Scalability: You must scale horizontally as the traffic grows and leverage on the multiple CPU cores of the servers to run parallel threads.
Responsiveness: You must maintain a strict time-frame of <100ms to respond to users and devices, even when the servers are flooded with multiple requests.
Reliability: You must stay in continuous operation for years without any server downtime or restarts even for system updates through hot-swapping.
Your Roles and Responsibilities
Design and write programs to improve the availability, scalability, latency, and efficiency of Company’s IoT systems.
Work with the engineering team to explore and create new design/architectures geared towards scale and performance.
Work with multiple data ingestion sources and protocols like HTTP, MQTT, CoAP,OPC UA and databases to drive efficient ETL processes for streaming data from IoT sensor devices
Participate in code and design reviews to maintain our high development standards.
Engage in service capacity and demand planning, software performance analysis, tuning and optimization.
Collaborate with product and experience teams to define and prototype feature specifications.
Work closely with the infrastructure team in building and scaling back-end services as well as performing root cause analysis investigations.
Design, build, analyze and fix large-scale distributed systems.