Careers

Responsibilities:

The Senior Software Engineer has the following responsibilities and duties:

  • Design and implement solutions targeting Linux/Microsoft Windows desktop operating systems, using technologies such as C++ and Rust.
  • Troubleshoot CPU & memory usage, Linux/Windows & device problems.
  • Familiarity with LLVM, OpenCL, OpenMP, OpenACC.
  • Hands-on experience with building compilers and interpreters.
  • Develop a thorough understanding of the functional requirements of the application and how customers will use it.
  • Architect and design systems that meet application requirements.
  • Effectively conduct code reviews.
  • Work hands-on with the team to implement sensible and easy-to-use features.
  • Experience with Qt/Qml

Requirements:
You should have the following skills, education, and experience:

  • Bachelor’s degree in CS, EE, or equivalent
  • English verbal and written proficiency required to interact with US/EU customers
  • 7+ years of experience developing software
  • Deep working knowledge of Linux/Windows desktop applications using C++ or similar languages (ideally Rust)
  • Familiarity with the Rust language, or willingness to learn Rust
  • Experience with Agile (scrum) development process and tracking tools (Redmine)

Nice to haves:

  • Some knowledge of firmware and/or Embedded Linux
  • Some knowledge of Linux kernel
  • Familiarity with cloud technologies (e.g. AWS, Azure)
  • Experience with Python

Your main responsibility will be to build a robust software platform for Industrial Automation and Robotics and write software that will run on multiple hardware platforms. As a customer’s software is worn directly by people, reliability and predictability are key. You will develop and improve customer’s C/C++ software stack and Qt GUI applications, articulate and evolve software architecture, create APIs around core components, and bridge the gap between embedded code and PC/mobile applications. You will also work closely with our controls engineers on architecture and optimization. 

Required Qualifications

  • Strong knowledge of C and C++
  • Strong knowledge of Qt, Qml
  • Strong skills in API design and communication protocols, both low and high-level
  • Experience with scripting languages: Python and Bash
  • Experience with an embedded computer and/or microcontroller software development, real-time applications
  • Experience bridging the gap between low-level/embedded software (C, real-time) and user applications
  • Hands-on experience with all stages of the software development life cycle (SDLC)
  • Experience diagnosing application failures in staging and production environments, understanding the underlying issues, and resolving them
  • Experience with Git and managing repositories, workflows, and submodules
  • Willingness to work in a small multi-disciplinary team, ability, and willingness to work with clients
  • Self-sufficiency is key, as well as strong attention to detail and quality
  • Minimum education: bachelor’s degree in engineering or science and 3-7 years of experience
  • Excellent written and verbal communications skills

Nice to haves:

  • Some knowledge of Embedded Linux
  • Some knowledge of Linux kernel
  • Familiarity with cloud technologies (e.g., AWS, Azure)
  • Experience with Rust
  • Bachelor’s degree in EE, CE, CS, or related fields
  • 3-7 years of embedded software development experience on RISC processor (ARM, RISC-V) based hardware targets
  • Experience with C/C++ programming; familiar with Matlab, Python, or JavaScript
  • Experience with design, implementation, and verification of firmware, including BSP, DSP, and low-level hardware drivers (such as I2C, SPI, UART, Timer, Watchdog, DMA, etc.)
  • Experience with integration, bring-up, testing, and debugging of software on hardware services;

Come work at ShuraCore!

The Role:
As Middle Embedded Software Engineer, you will engage with an experienced cross-disciplinary staff to conceive and design innovative product solutions. You will work closely with teams and third party suppliers to drive key aspects of product definition, execution, and optimization. You must be responsive, flexible, and able to succeed within an open collaborative peer environment.

In this role you will:

  • Work closely with MCU, MPU, SoC, IC, FPGA
  • Collaborate with the cross-functional teams to define software requirements, hardware-software interface, software architectural and block specifications, user guide, and test plans
  • Design, implement and validate embedded firmware on RISC processor or DSP based hardware targets
  • Design, implement and validate software drivers and testing software on host services
  • Support cross-functional teams on system integration, hardware bring-up, testing, failure analysis, software training, and bug-fixes

Export Control Requirement:

  • Experience with bare-metal or RTOS-based firmware frameworks and porting to different hardware targets
  • Solid experience with design and implementation of embedded firmware that meets real-time, low-power, reliability, and security requirements, under hardware resource, constrains
  • Familiarity with lab equipment (such as a signal generator, spectrum analyzers, and oscilloscopes, etc.) for measurement and test automation
  • Strong communication and problem-solving skills
  • Solid understanding and experience with software engineering principles, workflows, and best practices
  • HW and SW co-design experience, including HW/SW partition and trade-offs, RISC processor or DSP based SoC architecture, memory hierarchy, bus topologies, interrupts, buffer management, and DMA schemes
  • General knowledge of communication theory, MAC, and/or PHY layer basics
  • Experience with digital signal processing algorithms and firmware implementation
  • Proven track record where products have gone to volume production

Nice to haves:

  • Some knowledge of Embedded Linux
  • Some knowledge of Linux kernel
  • Familiarity with cloud technologies (e.g. AWS, Azure)
  • Experience with Rust