Principal Software Engineer
Analog Devices
- Limerick
- Permanent
- Full-time
- Help ensure ADI delivers a meaningfully differented experience in developer and debug tooling, middleware and technical documentation.
- Collaborate with other business units, development teams and product managers to evaluate current tooling ecosystems and ensure efficient development and debug on ADI mixed-signal parts, prioritising development resources to fill the right gaps.
- Collaborate with hardware IP owners in ADI to define requirements and models for various peripherals and system designs.
- Keep up with the latest advancements in relevant programming languages, embedded tooling, and open source ecosystems (Zephyr, Yocto, etc.)
- Help identify gaps and define a plan to fill them in current developer tooling, middleware and technical documentation
- Disseminate your in-depth knowledge of software development tools, and embedded software development within the company.
- Handle multiple projects and oversee the deliverables using appropriate project management methodologies.
- Establish metrics and processes for monitoring tooling health, and allowing for continuous improvements.
- Proactively resolve any issues encountered with existing applications.
- Work with multiple stakeholders from different locations (EMEA, US East and West) that includes flexing work hours based on time zones
- 10+ years of embedded software development experience in C, with the ability to understand differences between various C versions, standard library implementations, and GCC, IAR and armclang compiler flags commonly used in embedded systems.
- Experience effectively engaging with and contributing to open source projects
- Significant experience with GDB, GCC and GNU binutils, including the ability to build them from source. LLVM and Clang would be a strong plus. Must be comfortable patching and building these types of projects from source.
- Significant experience with cmake, make, ninja and other build systems
- Experience with Static Analysis tools
- Ability to meaningfully interact with UI/UX designers on application design.
- Strong fundamentals in data structures and algorithms
- Comfortable with collaboration, open communication, and reaching across functional borders
- Excellent analytical skills.
- Excellent written and communication skills in English
- Good understanding of testing methodologies like unit testing, functional testing, performance testing and Integration testing
- Good understanding on system monitoring, observability, metrics and logging
- Familiarity with best practices for the full software development process
- Demonstrated extensive experience with task and defect tracking tools (Jira, etc.)
- Very strong grasp of version control systems – Git, Github, etc.
- Willingness to step outside you comfort zone and cross technical boundaries between embedded, desktop, mobile and web/cloud.
- Detail and quality oriented. Customers expect technical excellence from us, and this extends from chip design all the way up to the tooling we provide them.
- Experience with Zephyr RTOS
- Experience using IAR and/or armclang
- Knowledge of Bluetooth Low Energy at the Host and/or Controller level
- Experience with audio codecs and audio processing
- Familiarity with Golang or Rust for command-line tooling
- Familiarity with Typescript or node.js