Compañía

Analog DevicesVer más

addressDirecciónMadrid, Madrid provincia
CategoríaTecnologías de la información

Descripción del trabajo

Analog Devices, Inc. is looking for a polyvalent Software Engineer to help define and develop software developer tools to better enable our customers to design, develop, debug, test and deploy software for embedded devices and platforms.

We’re looking for someone who can help us produce best-in-class desktop and mobile tools for our customers to :

  • Monitor the state of systems during development and deployment
  • Capture, parse and visualise instrumentation data
  • Debug or diagnose devices in the field through core dumps, instrumentation logs, and other data points, both for crash analysis and general health checks, with an awareness of security and communication constraints
  • Visualise memory usage to aid with firmware optimisation
  • Visualise and interpret data coming off embedded devices
  • Verify common wireless transports like BLE, and test wireless communications
  • Enable developers to quickly understand new or unfamiliar APIs, SDKs or codebases (for example : generation of call graphs, intelligent search of source files, or static analysis of compiler outputs)
  • Enable key-provisioning of devices, and signing of firmware images

The role demands a fairly broad set of development skills, since the tools can bridge both mobile platforms (iOS and Android) and / or desktop, depending on the problem being solved.

Strength in one more than the other is fine, as long as there is a willingness to step outside the box and learn new skills over time.

You should have strong opinions about software quality, reliability and Developer Tooling, and be able to communicate them clearly.

Previous experience with embedded hardware is a must, as well as an understanding of the constraints unique to developers in this field : limited connectivity options, having to deal with multiple generations of devices with long life spans, code and data security concerns, etc.

A solid understanding of Bluetooth Low Energy (BLE) is a significant distinguishing factor, given the prevalence of BLE in modern embedded devices, and to enable device instrumentation and analysis in the field.

Previous examples of desktop and mobile tooling communicating with hardware devices should be demonstrated, ideally around software development : bootloader management, image signing, instrumentation, etc.

Responsibilities :

  • Collaborate with development teams and product managers to create and propose innovative embedded software solutions based on desktop or mobile applications.
  • Take requirements documents describing software development or hardware enablement problems, and translate those into performant, testable, deployable and maintainable desktop or mobile applications, publishable in appropriate app store ecosystems.
  • Establish metrics and processes for monitoring tooling health, and allowing for continuous improvements.
  • Proactively resolve any issues encountered with existing applications.
  • Disseminate your in-depth knowledge of software development tools, and software release processes within the company.
  • Disseminate your in-depth knowledge of mobile and / or desktop BLE development within the company (describe throughput limitations, etc.).
  • Keeping up with the latest advancements in relevant programming languages and mobile apps.
  • Handle multiple applications and oversee the deliverables using appropriate project management methodologies.
  • Work with multiple stakeholders from different locations (EMEA, US East and West) that includes flexing work hours based on time zones
  • Strong analytical and problem-solving abilities.

Skills :

  • At least 10 years of software development experience on desktop and mobile.
  • At least 5 years of experience developing performant iOS mobile applications in Swift or earlier standard languages. Strong familiarity with XCode and standard Apple development tools.
  • At least 5 years of experience developing performant Android mobile applications in Java and / or Kotlin. Strong familiarity with Android Studio, or a comparable IDE.
  • Comprehensive knowledge of Bluetooth Low Energy. Clear understanding of GATT Services and Characteristics, with a deep understanding of GAP, GATT, bonding and BLE security, etc.
  • In depth understanding of BLE APIs for both Swift and Android (Linux, MacOS or Windows a strong plus).
  • Proven track record of publishing mobile applications that interact with hardware devices, ideally at a very low level.
  • Ability to translate design proposals in Figma, etc., to actual UIs, and meaningfully interact with UI / UX designers on application design.
  • Strong fundamentals in data structures and algorithms
  • Comfortable interacting with system languages like C and C++ (at a minimum understand the difference between various integer types, float sizes, signed values, struct packing, etc.)
  • Understanding of embedded systems and concepts like endianness, and how structs are encoded and decoded at the byte level.
  • 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.
  • Experience with Static Analysis tools
  • Experience with Build & dependency management tooling Maven, Gradle, etc
  • Willingness to step outside you comfort zone and cross technical boundaries between embedded, mobile, desktop 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.

Good to have (but not mandatory) :

  • Familiarity with popular RTOSes like Zephyr or FreeRTOS
  • Experience with BLE Audio (BLE 5.2)
  • Experience with audio codecs and audio processing
  • Desktop BLE application development (and OS / platform)
  • Experience with embedded hardware and / or software development
  • Experience developing software in system languages like C or C++.
  • Experience with GDB, GCC, linkers and ELF files.
  • Experience using and developing RESTful APIs

LI-CO1

Job Req Type : ExperiencedRequired Travel : Yes, 10% of the timeShift Type : 1st Shift / Days

Hace menos de 1 hora
Refer code: 670610. Analog Devices - El día anterior - 2024-02-02 03:27

Analog Devices

Madrid, Madrid provincia
Empleos populares de Principal Software Engineer en las principales ciudades

Compartir trabajos con amigos