Software Engineer
Job description
What You'll Work On Device Monitoring Service: Maintain and enhance our C#/.NET-based monitoring service that communicates with industrial Modbus devices (TCP, RTU, ASCII protocols)
Message Queue Architecture: Design and optimize priority queues, blocking collections, and event-driven message processing systems
Distributed Systems: Work with WebSocket-based communication, Protocol Buffers, and real-time data synchronization
Cross-Platform Development: Support both Windows Services and Linux systemd services, with Docker containerization
CI/CD Pipeline: Maintain and improve CircleCI workflows for automated testing, building, and deployment to AWS (S3, ECR, EKS)
Hardware Integration: Understand and troubleshoot Modbus protocol communication, device polling strategies, and industrial hardware connectivity Key Responsibilities Design and implement architectural improvements to our message processing pipeline
Optimize queue management and message prioritization systems
Debug and resolve issues related to device connectivity, polling intervals, and communication failures
Write clean, maintainable code following best practices and design patterns
Develop unit, integration, and end to end tests
Collaborate with the team to improve system reliability, performance, and scalability
Review code, provide technical guidance, and mentor other engineers
Work directly with hardware devices to change settings an monitor settings remotely Required Qualifications 5+ years of professional software development experience
Exceptional problem-solving skills and ability to debug complex distributed systems
Strong grasp of fundamental coding concepts: data structures, algorithms, design patterns, and software architecture principles
Deep understanding of message queuing systems and event-driven architectures
Experience with priority queues, blocking collections, and concurrent data structures
Proven ability to make sound architectural decisions and design scalable systems
Experience with async/await patterns and multi-threaded programming
Strong debugging skills and systematic approach to troubleshooting
Experience with distributed systems and real-time data processing
Familiarity with WebSocket communication and serialization protocols (Protocol Buffers, JSON, etc.)
Experience with CI/CD pipelines and automated deployment processes
Strong communication skills and ability to work collaboratively
Language-agnostic mindset: Ability to quickly learn and adapt to new codebases and technologies Pay Transparency
Chemelex’s pay scale is based on the expected range of compensation for this job and the employee’s work location. Employee pay within this range will be based on a combination of factors including knowledge, skills, abilities, experience, education, and performance. Where federal, state, or local minimum wage requirements exist, employee pay will comply.
Compensation Range: $90k-$150k
Depending on the position offered, employee may be eligible for other forms of compensation.
¿Te interesa este puesto?