Summary:
VIAVI (NASDAQ: VIAV) has a 100+ year history of technical innovations that have evolved to keep pace and address our customers’ most pressing business issues. We make equipment, software, and systems that help to plan, deploy, certify, monitor, and optimize all kinds of networks - like those for mobile phones, service providers, large businesses and data centers. VIAVI is also a leader in high performance thin film optical coatings and engineered diffusers, providing light management solutions to anti-counterfeiting, consumer electronics, automotive, defense and instrumentation markets.Duties & Responsibilities:
Design & Implementation: Develop robust, maintainable C++ code for embedded systems, protocol implementations, and platform services while adhering to modern C++ standards and best practices.
Debug & Troubleshoot: Diagnose complex issues across hardware/software boundaries using tools like GDB, system logs, and hardware analyzers.
Code Review & Collaboration: Participate in peer code reviews, providing constructive feedback and learning from team members' expertise.
System Integration: Work closely with hardware engineers to integrate software with FPGAs, custom boards, and peripheral devices.
Testing & Validation: Write unit tests, perform integration testing, and validate functionality on target hardware platforms.
Documentation: Create clear technical documentation for APIs, architectures, and troubleshooting guides that benefit the entire team.
Build System Maintenance: Optimize CMake configurations, manage dependencies, and improve build times across multiple platforms.
Technical Planning: Participate in sprint planning, estimate effort for features, and break down complex problems into manageable tasks.
Knowledge Sharing: Mentor junior developers through pair programming, technical discussions, and informal knowledge transfer sessions.
Cross-Platform Development: Build and test code across multiple ARM and x86 targets, ensuring compatibility and optimal performance for each platform.
Pre-Requisites / Skills / Experience Requirements:
Key Development Skills:
Proficiency in C++ (C++14 or above).
OO Design Methodology (OOPS, OOAD).
Task-based operating system knowledge (Linux preferred).
Yocto experience.
Experience with CMake.
Qt/QML experience.
Unit/Class Test background (Test Driven Development).
Experience with version control systems: GIT, SubVersion, etc.
Embedded Linux, bare metal development- Experience in software toolchains, RTOS.
Experienced using an Agile-based development process, preferably some flavor of Scrum, on multiple projects.
Fluent Romanian and English.
Preferred skills:
Experience in networking (TCP/IP, 802.11, Bluetooth).
Experience with project tracking software with the ability to drive in an Agile fashion, preferably with the Atlassian Tool Chain (Confluence, JIRA, etc.).
Domain skills: DOCSIS, xDSL, Cable test equipment, Telco test equipment.
Exposure to communication protocols, MATLAB, FPGA, DSP.
Mobile application development experience.
MVC design methodology (Knowledge of design patterns).
Real-time or near real-time design background.
Laboratory measurement tools.
Markup language experience – XML/QML/JSON.
If you have what it takes to push boundaries and seize opportunities, apply to join our team today.
#LI-Hybrid