Responsibilities
- Design and implement high-performance backend components, services, and libraries in C/C++/Python.
- Develop modular and reusable software libraries with clear APIs and documentation.
- Optimize memory usage, CPU cycles, and application performance through advanced debugging and profiling techniques.
- Develop multi-threaded and asynchronous applications using POSIX threads, Boost, or similar libraries.
- Architect and build scalable, distributed backend systems to meet complex business requirements.
- Work on low-latency systems, implementing efficient networking protocols such as TCP, UDP, and custom protocols.
- Contribute to the design of RESTful or binary APIs, ensuring secure and seamless communication between components.
- Write and optimize system-level code for Linux environments, focusing on performance and reliability.
- Develop hardware-interfacing applications, including bootloader, drivers, and kernel.
- Handle memory management, inter-process communication (IPC), and shared resources in constrained environments.
- Perform low-level profiling and tuning of applications using tools like perf, VTune, gprof, or Cachegrind.
- Optimize memory management using custom allocators, object pooling, and stack memory usage.
- Use advanced debugging techniques, such as core dumps, stack traces, and hardware breakpoints.
- Identify and eliminate bottlenecks in CPU-bound, memory-bound, or I/O-bound processes.
- Tune compiler settings and write efficient algorithms to achieve optimal performance.
- Debug complex issues in production systems using gdb and strace.
- Develop efficient network protocols and manage socket programming for server applications.
- Implement and troubleshoot networking layers, including SSL/TLS, WebSocket, and HTTP/2.
- Develop custom communication protocols for specialized use cases, such as real-time streaming or IoT.
- Optimize networking stacks using socket programming, zero-copy mechanisms, and protocol offloading.
- Collaborate on the design of custom communication protocols for real-time or distributed systems.
- Work with Layer 2 protocols including 802.1Q, VLAN, bridging, spanning tree, LLDP, and LACP.
- Work with Layer 3 protocols including routing, firewall, and ACLs.
- Work with 802.11 wireless protocols.
- Write robust unit tests using frameworks like Google Test (gtest) or Catch2.
- Perform system-level testing to ensure reliability in production environments.
- Establish continuous integration pipelines for automated testing and deployment of C/C++/Python codebases.
- Implement secure coding practices to prevent vulnerabilities such as buffer overflows, race conditions, and memory leaks.
- Implement secure transport protocols (SSL/TLS) and encrypt sensitive data at rest and in transit.
- Design fault-tolerant systems with redundancy, checkpointing, and automatic failover mechanisms.
- Perform threat modeling and integrate security measures into the development lifecycle.
- Ensure backend systems are secure from common vulnerabilities (e.g., OWASP Top 10).
- Develop backend services that interface with hardware or IoT devices, handling real-time data streams.
- Manage communication with hardware peripherals via protocols like SPI, I2C, or CAN.
- Stay updated with advancements in C/C++/Python standards and emerging technologies.
- Contribute to open-source projects or internal frameworks.
- Propose innovative solutions to improve development workflows, system performance, or user experience.
Requirements
- Bachelor’s or Master’s degree in Computer Science, Software Engineering, or related field.
- 10+ years of professional experience in Linux embedded system development.
- Expert in C, C++, and Python.
- Familiarity with build tools including OpenWrt, Yocto, Makefile, CMake, and Autotools.
- Strong knowledge of operating system concepts, including threading, memory management, and file I/O.
- Expertise in Linux system programming (e.g., epoll, inotify).
- Advanced knowledge of file systems, process scheduling, and memory management.
- Understanding of real-time constraints and system interrupts.
- Experience with socket programming and protocols such as TCP/IP, UDP, HTTP/2, gRPC, MQTT, or WebSocket.
- Familiarity with DNS, load balancers, and network security protocols (SSL/TLS).
- Familiarity with network monitoring tools such as Wireshark and tcpdump.
- Proficiency in relational databases (e.g., MySQL, PostgreSQL) and experience with NoSQL databases such as MongoDB or Cassandra.
- Strong skills in designing efficient database schemas and writing optimized queries.
- Expertise in debugging tools such as gdb, Valgrind, and perf.
- Ability to optimize data structures and algorithms for high-performance applications.
- Proficiency in build systems such as CMake, Makefile, Autotools, OpenWrt, or Yocto.
- Experience with Git, including advanced workflows such as rebasing and submodules.
- Implement CI/CD pipelines using Jenkins, GitHub Actions, or GitLab CI.
- Experience with containerization (Docker) and orchestration platforms such as Kubernetes.
- Strong communication skills to articulate technical concepts clearly.
- Excellent problem-solving and debugging abilities.
- Ability to work independently and as part of a distributed team.
- Proactive in identifying issues and proposing solutions.
- Alignment with NETGEAR Pando competencies for this level.