Role Overview
We are looking for a Software Engineer to design, develop, and maintain software components using C on Linux platforms. You will be responsible for developing networking applications for embedded devices and troubleshooting complex system-level issues.
Responsibilities
- Design, develop, and maintain software components using C on Linux platforms.
- Develop and debug networking applications and services for embedded devices.
- Analyze, troubleshoot, and resolve complex software and system-level issues.
- Integrate third-party software components and open-source packages.
- Perform code reviews and ensure adherence to coding standards.
- Develop Python scripts and tools for automation, testing, and log analysis.
- Collaborate with cross-functional teams including QA, DevOps, and Product Management.
Requirements
- Strong hands-on experience in C Programming.
- Good understanding of Data Structures and Algorithms.
- Experience in multi-threaded and system-level application development.
- Strong experience with Linux development and debugging.
- Proficiency with debugging tools such as GDB, Valgrind, tcpdump, and Wireshark.
- Strong understanding of networking protocols including TCP/IP, UDP, DHCP, DNS, and IPv4/IPv6.
- Hands-on experience in Python scripting.
- Experience with version control tools such as Git.
Skills
- C
- Linux
- Networking
- Python
- Git
Nice to Have
- Experience in RDK-B.
- Experience with OpenWrt and Yocto build systems.
- Exposure to Agile/Scrum methodologies.