Job Description
Vacancy available for candidates proficient at C programming and embedded system product development.
Responsibilities:
Work as part of a team to design, develop, debug, test and support high-performance networking software.
Requirements:
- Masters (desired) or Bachelors (required) degree in Electronics Engineering, Computer Engineering or Computer Science with relevant work experience.
- Experience with embedded systems and embedded software development.
- Proficient in embedded programming (C/C++) and scripting languages (e.g., Bash, Bourne shell, Python). Additional recommendations:
- Assembler experience.
- Experience with other languages such as ADA, Lua, Rust, VHDL and/or Verilog.
- Experience with multi-threaded programming.
- Experience with embedded operating systems platforms such as Linux, Unix and other.
- Extensive experience with development and debugging on a Linux platform (GCC/G++, revision control systems, build systems, troubleshooting, debugging and profiling tools).
- Extensive experience with designing and optimizing software to meet specified performance goals.
- Knowledge of hardware architecture such as ARM, MIPS and X86.
- Knowledge of major IP protocols, interfaces and hardware subsystems i.e., TCP, IP, Ethernet, ARP, ICMP and/or UDP.
- Knowledge of network device operation such as parsing, classifying, filtering and forwarding traffic.
- Knowledge of network switching and routers, L2 bridging, STP and L3 routing.
- Knowledge and experience regarding the implementation of network protocols, device driver and network stack internals for Linux.
- Ability to work in a multi-disciplined team environment is required.
- Strong oral and written communication skills are required.
Additional desired competencies:
- Knowledge of network protocols.
- Knowledge of virtualization technologies.
- Experience with Linux kernel development.
- Experience in cryptography and network security (e.g., IPsec, SSL).