Senior Embedded Software Engineer
Role details
Job location
Tech stack
Job description
As a C++ developer, you will participate in the analysis, development and integration of the SW that will be built for a new family of products, delivering the world's most advanced and intuitive smart alarm product suite.
This new range of products will be built on top of Linux open source stack. Throughout the product development cycle, you will partner with SW engineers, Functional Analysts, Testers and Software Designers to deliver an experience that our users will love.
The ideal candidate will be a senior developer using C++ on Linux systems. A deep knowledge of C++17 (and eventually C++20), and using state of the art technologies such as Boost is a must, both with object-oriented design and generic metaprogramming.
The candidates will need to have an outstanding knowledge of Linux and base most of their experience developing on this system., * Analyze features scope, functional and system requirements.
- Participate in technical decisions, discussions and tradeoffs.
- Produce Technical solutions, design documentation and detailed implementation tasks to be developed by other junior team members.
- Develop solutions using C++ on an embedded system with multiple services communicating via different middlewares, within the context of a common data model and clear responsibilities.
- Integrate with Yocto Linux build system, using CMake and systemd as the main tools on the device
- Optimize performance, memory and power of resulting product to provide best possible experience to the customer
- Bugfixing and correction of issues, following QA plans and release management, * Product Quality: customer satisfaction with product/product usage, traditional alarm product KPIs (supervision failure), ad-hoc product performance (voice recognition).
- Development/delivery quality: Number of bugs after launch.
- Delivery on time and budget., Report to R&D Head of Service Enablers in Madrid within one of the different teams that participate in the system development.
Requirements
Do you have experience in Unit testing?, Do you have a Master's degree?, + C++ development using highest standards of quality on object oriented and metaprogramming paradigms
- Test Driven Development and unit testing as mindset and not just an imposed methodology
- Dominion of Clean and Solid principles paradigms
- Linux development, services, APIs, and specially on Yocto or other embedded distributions
- CMake and GNU Toolchain
- Great knowledge on DBUS and/or other IPC mechanisms
- Great knowledge on git and continuous integration
- Masters or Degree in Engineering, Computer Science or IT related background.
- Fluent conversation in English.
Secondary requirements
- Experience developing embedded systems on Linux
- Knowledge of data driven middlewares such as DDS or other IoT standards like MQTT can be a plus
- Product oriented profile
- Attention to detail, quality and excellence on documentation and fine tuning, * Passionate in Everything We Do: Our people have a sense of energy that is unmistakable, one that drives us to delight our customers and focus on creating impact quickly