Cambridge, UK

Description

An Embedded Software Engineer designs, develops, and tests software solutions for embedded systems, which are specialized computing devices. They work closely with hardware engineers to integrate software and hardware seamlessly, ensuring that embedded systems function efficiently and reliably across a range of devices, from consumer electronics to industrial machinery.

Requirements

  • Education: Bachelor’s or Master’s degree in Computer Science, Electrical Engineering, or a related field.
  • Experience:
    • 3+ years of experience in embedded software development.
    • Experience with microcontrollers, RTOS (Real-Time Operating Systems), and hardware interfaces.
  • Technical Skills:
    • Proficiency in embedded C/C++, Python, and assembly languages.
    • Familiarity with tools like JTAG, debuggers, and oscilloscope.
    • Experience with communication protocols such as I2C, SPI, UART, and CAN.
  • Soft Skills:
    • Strong problem-solving and troubleshooting abilities.
    • Excellent collaboration and communication skills.
    • Detail-oriented with a focus on quality and reliability.

Bonuses

  • Performance-based annual bonuses.
  • Sign-on bonuses for exceptional candidates.
  • Referral bonuses for successful recommendations.

Benefits

  • Competitive salary with yearly performance reviews.
  • Health insurance (medical, dental, vision) for employees and their families.
  • 401(k) with employer matching.
  • Paid time off (vacation, sick leave, holidays).
  • Professional development opportunities, including workshops and certifications.
  • Flexible working hours or remote work options, depending on the role.
  • Employee wellness programs and mental health support.

Responsibilities

  1. Software Development:
    • Design, implement, and maintain embedded software for hardware systems.
    • Write efficient, reliable, and maintainable code in languages like C, C++, or Python.
  2. System Integration:
    • Collaborate with hardware engineers to ensure smooth interaction between software and hardware components.
    • Work on system-level integration, debugging, and troubleshooting.
  3. Testing & Debugging:
    • Develop and execute unit and integration tests for embedded systems.
    • Debug and troubleshoot issues in embedded software and hardware interaction.
  4. Performance Optimization:
    • Optimize embedded software for performance, memory usage, and energy efficiency.
    • Address constraints and limitations imposed by embedded systems, such as processing power and memory.
  5. Documentation:
    • Create detailed documentation for software development processes, including code, test procedures, and design specifications.
    • Maintain clear version control and ensure code quality standards are met.
  6. Collaboration & Support:
    • Work with cross-functional teams to meet project deadlines and milestones.
    • Provide technical support and troubleshooting for deployed embedded systems.