Software Developer, Audio and Software Developer, Audio
The Software Development Engineer (SDE) has the responsibility of architecting, implementing, and deploying algorithmic solutions, leading development to solve difficult and important problems in our products, share with other team members how these problems are solved, specifically in the areas of voice communication, audio playback, speech recognition, and audio detection within embedded systems.
SDE is responsible for designing experiments to test and prove solutions, solving complex problems with optimal implementation of the audio algorithm in real-time on target platforms (DSP and/or ARM), leading and executing projects, with specific focus in audio processing, developing a deep understanding of each problem, and creating value and impacting the direction of the team and other close teams and products. The person should be an expert in C or C++ software development with particular focus on signal processing for audio, speech, acoustics, low-level DSP machine language instructions and embedded firmware to accomplish this.
Beyond these specifics, a Software Developer is also expected to:
• Play a technical lead role in implementing and deploying several successful algorithmic solutions for important business services or products.
• Be accountable for the quality of architecture and design of systems. Deliver algorithms that are robust and stable.
• Be skilled at functionally decomposing complex problems into simple, straight-forward solutions at the module level.
• Capable of understanding system interdependencies and limitations.
• Have specialized domain knowledge and expertise in embedded software and systems.
• Consistently pose interesting new questions and raise new ways of looking at problems with focus on implementation.
• Keep abreast of existing techniques/methods and tools.
• Collaborate with System Architecture, PD, ID, and Audio Hardware to scope the resources (MCPS/memory) required and select the most appropriate components (mics, drivers, SoCs, DSPs, etc.)
• Drive SW architecture and requirements in collaboration with other project leads & TPM, and create the SW AFE architecture wiki and ensure its approval.
• Complete the Anvil certification process.
• Review the SQA test plan and provide feedback.
• For each new feature, start an NFD (New Feature Description) and update accordingly.
• Set up source control and official build process for ASP and/or DSP.
• Bring up the hardware, and generate libraries for libasp and/or DSP to unblock other teams.
• Perform signal integrity tests as soon as Proto and/or HVT are available, and report results on TestRail.
• Ensure bring-up and development of the playback path is prioritized in order to provide good reference signals for mic path development and tuning.
• Include “Design for Debug” features into the stack soon after the hardware is brought up.
•Identify features with cross-functional dependencies and align with the other teams regarding KPIs, tasks, and schedules.
•Integrate and enable all features required by the XRD.
•Develop VectorCast unit tests for any new, upgraded, or altered modules.
•Integrate codebase into the BRT.
•Train, configure, and tune all modules to meet all KPIs for ASR microphone path, VoIP microphone path, Playback path.
•Follow the code review process for all changes.
•Use the product as an Alpha & Beta user.
•Crosscheck the BRT and QA results weekly to drive KPIs towards their goals and to identify and fix regressions.
•Provide timely escalation of issues to TPM/SDM.
•Validate the data collection pipeline is functioning prior to requesting data collection by ADE.
•At key milestones, cross-check the tasks on the SW checklist.
•COEs: Participate in Correction of Errors (COEs), ensuring completion and implementing resulting action items on their own product lines.
A day in the life
SDE is responsible for executing experiments to test and prove solutions, help solving complex problems with optimal implementation of the audio algorithm in real-time on target platforms (DSP and/or ARM), leading and executing projects, with specific focus in audio proc, developing an understanding of each problem. The person should be knowledgeable in C or C++ software development with particular focus on signal processing for audio, speech, acoustics, low-level DSP machine language instructions and embedded firmware to accomplish this.