Get to know us better
CodiLime is a software and network engineering industry expert and the first-choice service partner for top global networking hardware providers, software providers and telecoms. We create proofs-of-concept, help our clients build new products, nurture existing ones and provide services in production environments. Our clients include both tech startups and big players in various industries and geographic locations (US, Japan, Israel, Europe).
While no longer a startup – we have 300+ people on board and have been operating since 2011 we’ve kept our people-oriented culture. Our values are simple:
- Act to deliver.
- Disrupt to grow.
- Team up to win.
The project and the team
We are working with the latest technologies of modern networking. We create user-space and kernel-space drivers for advanced network equipment such as switches, routers, and smart network interface cards, such as smartNICs, IPUs, and DPUs, and integrate them with NVF and cloud-native platforms.
What else you should know:
- We often work using client-supplied hardware and tools
- Our projects may be managed by our EMs or directly by the client
- We work with clients in the US, Asia, and Europe
- Our projects are typically 3-9 people
Your role
As a part of the team, your responsibility will be to:
- Research and define how to implement client requirements and ideas best
- Take part in technical discussions with the team and the client
- Develop software using mainly C/C++, but other programming languages such as Python, Go, or Rust may be used occasionally.
- Take part in building and expanding the technical knowledge base & share the knowledge with your colleagues
- Fix bugs efficiently and effectively and find workarounds for blockers
- Occasionally, take part in technical pre-sales meetings
Do we have a match?
As a Linux Device Driver Engineer, you must meet most of the following criteria:
- Proficiency in C/C++ programming language
- 2+ years of experience in Linux low-level programming
- Strong understanding of operating system concepts, especially Linux kernel internals
- Experience with Linux network development and debugging
- Good networking knowledge
- Experience with Linux networking stack, including TCP/IP, UDP, sockets, etc.
- English at least B2 level, C1/C2 preferred
Beyond the criteria above, we would appreciate:
- Knowledge of communication interfaces such as PCIe, SPI, I2C, UART, DMA, GPIO, Ethernet, etc.
- Experience in developing network features (Ethernet, TCP/IP, routing, etc.)
- Familiarity with network hardware and interfaces such as PHYs, MACs, VLANs, bridges, etc.
- U-boot configuration and development
- Experience with ARM systems development
- Experience with driver/firmware development for embedded systems
- Ability to analyze and troubleshoot kernel panics, system hangs, and other low-level issues
- Experience with user-space driver development using the DPDK library
- Experience with network OS (e.g. SONiC)
More reasons to join us
- Flexible working hours and approach to work: fully remotely, in the office or hybrid
- Professional growth supported by internal training sessions and a training budget
- Solid onboarding with a hands-on approach to give you an easy start
- A great atmosphere among professionals who are passionate about their work
- The ability to change the project you work on
Go C SPI gpio Python dma UART dpdk Linux UDP sockets TCP/IP C++ ethernet ARM networking technologies I2C Rust Software Engineer