The Principal Software Engineer analyzes, designs, develops, and debugs software applications running in a variety of systems, hardware, and products. Interfaces with clients to assist in the gathering and documenting of software requirements and develops software based on the derived requirements and use cases. Develops rapid prototype software and firmware in order to control and evaluate electrical and mechanical prototype builds. Performs root-cause failure analysis; debugs and enhances existing software and firmware applications. Supports personnel in preparation for product verification, field testing, and new product transition to manufacturing. ESSENTIAL FUNCTIONS (Primary Responsibilities): These may include, but are not limited to: Integrates technical requirements within program constraints to create high quality software and firmware solutions. Interfaces and coordinates with other engineering disciplines - EE, ME, Systems. Develops system architectures and architectural roadmaps. Develops software requirements. Gathers, defines, and documents product and user interface requirements and objectives. Performs feasibility studies. Performs design reviews in accordance with project and company standards. Investigates and evaluates appropriate software technologies, both open source and private domain, to achieve product objectives. Deploys appropriate software development methods and techniques starting with the analysis of requirements and the creation of SRS, creating architecture and design followed by technical execution of writing, reviewing, verifying, and validating software. Develops rapid prototype software and firmware to test representative prototypes. Develops highly reliable software and firmware that is suitable for production by employing design reviews, code reviews, pair programming, product verification and validation. Creates reliable, elegant system architecture and designs. Solves complex problems in a manner that meets program needs (technical, schedule, budget, reliability, etc.) Assists in developing production test and validation requirements. Assists in the transition of product designs from R D into Manufacturing. Works with the client to develop and verify software and firmware updates for delivery to production and the installed base. Outlines and generates high quality technical status updates and reports suitable for client. Coordinates and leads internal and client-facing technical meetings. Mentors other software engineers. Performs other duties as assigned. EDUCATION, EXPERIENCE, SKILLS AND ABILITIES REQUIRED: Education & Experience: Typically requires 8 years related experience with a Bachelor's degree; 6 years with a Master's degree; or 3 years with a PhD, or the equivalent combination of education, experience and training that provides the required knowledge, skills and abilities.  Essential Knowledge, Skills & Abilities: