Software Engineer - Chicago, IL

Purpose:

Contribute to the embedded software engineering on new electronic product development across a variety of SRAM brands and product categories.

  • Join a small team with big impact at an established, stable company. Enjoy a collaborative peer environment where we're all learning from each other as we continue to create new, innovative electronic cycling systems.

  • Contribute to electronic and software designs working in concert with mechanical systems.  Be part of a team creating a physical product you can see, touch, and use.

  • Take satisfaction seeing your work from initial concept through to full production and market launch.

  • Enjoy being part of a team dedicated to quality, focused on reliability, and proud of what we create.

Location: 
Chicago, IL

Responsibilities: 
  • Design architectures and develop working software / firmware, targeting embedded systems, including communication with mobile devices and back-end services. Participate in full lifecycle software development for a custom IoT software stack including device-side embedded C & server/test-side Python.

  • Participate in the selection, design, and development of:

    • digital architectures and firmware including microprocessors, clocks, memory, and logic

    • drivers and interfaces to ADCs, DACs, high performance low-noise data acquisition, sensors and electromechanical systems such as motors, motor controllers, strain gauges, accelerometers, and Hall effect sensors

    • battery-powered systems, high efficiency power supplies

    • unlicensed wireless / RF solutions including SoCs, transceivers, antennas, and supporting circuitry

    • embedded communication via UART, SPI, I2C, and JTAG

  • Write well designed, testable, effective code. Develop software verification plans and quality assurance procedures. Conduct and contribute to code reviews for software and design reviews for embedded hardware.

  • Provide supporting design documentation, including design specifications, design options, tradeoffs and choice rationale, experimental results, and tuning procedures.

  • Contribute to the creation, use, and adherence to evolving standards for design rigor and verification within the company’s growing software and electrical engineering team.

  • Support projects from conception through product launch within a global team setting. Understand user needs and implementation strategy. Work closely with team leaders and product managers to understand and refine product concepts. Collaborate with embedded hardware engineers, test systems engineers, and software quality assurance to develop jointly optimized, robust product architectures. Facilitate problem resolution within the design team, with suppliers, and with customers.

  • Own, estimate, and track progress for tasks through all stages of a project to meet desired performance, cost, and time-to-market goals.

Qualifications: 

Required Qualifications:

  • B.S. degree in Computer Science, Electrical Engineering, or equivalent

  • Minimum 3 years of experience with C/C++ software development on one or more embedded platforms, with experience deploying a released-to-market product. Knowledge and mastery of managing MCU peripherals and interfacing to subsystems via UART, SPI, etc.

  • Solid mastery of software development tools including build management, debuggers, version control, and bug tracking.

  • Python scripting and Linux/gcc/make development environment experience.

  • Excellent verbal and written English communication skills. Strong interpersonal and team skills are required.

 

  • Relevant / Desired Experience:

  • Development within established agile software development methodologies and principles focusing on reusability, maintainability, minimized complexity, high cohesion and low coupling.

  • Prior international cross-functional team experience. Ability to travel domestically and internationally to work with a globally distributed team.

  • Algorithm-level design contributions to signal processing & control systems.

  • Design ownership involving one or more of the following technologies

    • 802.15.4 / Zigbee

    • Bluetooth / BLE / Bluetooth Smart

    • ANT personal network protocol

    • Real-time embedded operating systems (RTOS)

    • ADC/DAC and sensors such as strain gauges, accelerometers, hall effect sensors, etc.

  • Project experience having designed, analyzed, and improved the security of a device communications network. Knowledge of security-related topics such as authentication, data protection, encryption & cryptography, hashing, software attack methodologies, threat analysis, secure data transfer & storage.

  • Hardware design analysis, and joint hardware/software debugging using oscilloscopes and logic analyzers.

  • Hands-on experience interfacing embedded software with mobile devices or back-end web applications.

  • Experience with test-driven development, continuous integration.

  • Modeling designs using UML and associated development tools; develop use cases to model real-time systems behavior.

  • Experience working in a quality-driven culture, where brand reputation is made or lost based on the reliability of new products.

Contact Name: 
Hiring Manager

SRAM, LLC is one of the world's largest suppliers of components to the bike industry. Established in Chicago in 1987, SRAM continues to promote cycling through its products, its advocacy, and its employees who are dedicated to improving the cycling experience. Today, SRAM employs more than 3,800+ employees, 15+ locations and 15+ countries. SRAM is proud to be an equal opportunity employer.