About the Role:
We are seeking a talented and motivated Embedded Software Developer to join our Software Engineering team. You will be working collaboratively to design, develop, and maintain customer embedded software for products and back-end services that power our innovative solutions. This is a flexible in-office position and an excellent opportunity to contribute to solutions that power our next generation of telecommunications solutions.
Responsibilities:
- Design and maintain robust, scalable embedded software
- Develop clean, well-documented, and testable code, adhering to industry best practices
- Lead and participate in architectural discussions
- Troubleshoot and resolve production issues, ensuring high availability and performance
- Contribute to improving our engineering practices and standards
Qualifications:
Technical Skills
- Proficiency in programming languages such as C/, C++, Golang (Go) or Python
- Experience developing software for bare metal and Linux operating systems
- Experience developing software for ARM and MPSoC microprocessors and cross compilation.
- Expertise with library and web service APIs including REST and gRPC
- Expertise with networking and security protocols (TCP/IP, TLS)
- Expertise with message-bus architecture and message queue implementations
- Experience designing and maintaining microservice designs
Professional Skills
- Bachelor's degree or higher in computer science or a related field
- 4+ years of professional software development experience
- Excellent written and verbal communication, collaboration, and problem-solving skills.
- Reliable and demonstrates a professional work ethic.
- Intellectual curiosity and the ability to learn new technologies quickly.
It would be even better if you have experience with:
- Experience with embedded Linux distributions (Yocto, Petalinux, Buildroot)
- Experience with Linux device drivers and backporting
- Experience with wireless devices including cellular, WiFi or Bluetooth
- Experience with JTAG and logic analyzers
- Hardware development skills (PCB design and layout) are a plus.
- Android development experience
- Experience with containerization technologies and virtualization (Docker, VMware)
- DevOps CI/CD using GitLab, GitLab runners, or Ansible/AWX
- Agile/SCRUM development processes
- RabbitMQ, WAMP, AMQP or other message queue libraries