Work on R&D projects developing firmware focused on optical communication equipment.
Assist in defining and implementing software architecture.
Develop tools, libraries, distributions, and documentation.
Provide technical administration/oversight of assigned activities.
Requirements
Degree in Computer Science or a related field.
Strong knowledge of core Software Engineering concepts such as programming paradigms (at minimum OOP and imperative), data structures and algorithms, software architecture (abstraction, componentization, reuse, decoupling, etc.), software testing, and quality processes.
Proficiency with Agile methodologies, including understanding relationships between tasks and epics, dependencies, effort estimation, etc.
Proficiency in C, C++, Bash, Python, and other relevant languages.
Familiarity with network programming, communication systems (optical, wired, etc.), relevant protocols (TCP/IP, gRPC, OSI model, etc.), and distributed programming.
Knowledge of Operating Systems fundamentals and Embedded Linux, including image-generation tools (Yocto, Buildroot, etc.).
Basic knowledge of containerization.
Basic knowledge of standard hardware interfaces such as serial ports, I2C, SPI, GPIO, etc.
Proactive and autonomous work style with the ability to make decisions.
Team player who works in an organized, well-documented manner focused on building and improving the company's knowledge base.
Desirable: hardware knowledge sufficient to read schematics, perform diagnostics, and support the hardware team.
Applicant Tracking System Keywords
Tip: use these terms in your resume and cover letter to boost ATS matches.
Hard skills
CC++BashPythonOOPimperative programmingdata structuresalgorithmssoftware architectureembedded Linux
Soft skills
proactive work styleautonomous decision makingteam playerorganizational skillsdocumentation skills