• 0–1 years of experience, with at least one internship or ~6 months of hands-on work experience in software or systems engineering (full-time roles, internships, or research lab work all count).
• Linux systems programming in C, including file I/O (read, write, seek, mmap), multi-threading (pthreads, mutexes, condition variables), and socket programming (TCP/UDP, select/poll/epoll).
• C++ (C++14/17), including OOP, STL containers and algorithms, RAII, and smart pointers.
• Networking fundamentals: TCP vs. UDP, ARP, DHCP, DNS, IP addressing and subnetting, and how to debug connectivity with tools like ip, ping, ss, tcpdump, and iptables.
• Docker: writing Dockerfiles, using docker-compose, managing images and volumes, and debugging running containers.
• Core data structures and algorithms (stack, queue, heap, linked list, hash map) and the ability to reason about time and space complexity.
• Python and Bash scripting for automation and diagnostics.
• Git from the command line: branching, merging, rebasing, and resolving conflicts.
• Strong comfort on the Linux command line: processes, systemd services, permissions, and logs.
• Ability to learn independently by reading man pages, documentation, datasheets, and RFCs.
• No degree required. We evaluate on demonstrated skill, projects, and work experience.