Advanced Software Engineer
Overview This position is for an Software Engineer to design and develop software for a wide range of products which use embedded Linux, Android, and Real-time operating systems. Engineers in this position will work on a multi discipline team, interfacing with electrical, mechanical and manufacturing engineers. In addition, Engineers at this level are expected to be able to have big picture view of the systems they work on in order to evaluate solutions and tradeoffs. The Software Engineer will lead and be responsible for representing the software team on the core product team, communicating issues and status to the program manager, creating the software development schedule and software project plans, and delegating technical assignments to the software development team. Responsibilities Establishes requirements for highly complex software design projects and may lead a team responsible for establishing requirements. Insure correct features are incorporated first in the projects. Insures correct features are incorporated first in the projects. Architects and designs highly complex software projects. Completes all phases of the projects. Follows through on all in-process and final inspection activities. Drives code review of projects. Develops and applies technical and quality improvements. Creates new programs, technologies and solutions based on novel or unique ideas. Insures new ideas and methodologies are documented for use by software teams. Uses status as a knowledge leader in software design and functional knowledge across multiple engineering disciplines and program management to provide technical leadership to a given program. Defines requirements for and may design complex new tools to aid in the analysis and solving of complex problems. Initiates cross-company collaboration and develops positive relationships with other engineering disciplines. Exercises judgment (within broadly defined policies and practices) in selecting methods, techniques and evaluation criteria for obtaining results. May coordinate the activities of other personnel. Networks with key contacts outside own area of expertise. Interacts with management and senior customer personnel on matters requiring coordination across organizational lines. Represent the organization as the principal customer contact and often performs project leadership Qualifications Bachelor's degree in an appropriate engineering discipline. Minimum of 8+ years of engineering experience. 5+ years experience programming real time embedded systems. 8+ years experience with C/C++ programming language. 5+ years of Android experience (must know how Android is architected). 5+ years experience with Linux required. Good working knowledge of Real Time Operating Systems, embedded Linux, or Android AOSP. Experience with In-Circuit Emulators Advanced troubleshooting / problem solving skills. Leadership skills; Ability to coach / mentor junior level engineers. Ability to lead small scale software development efforts. Excellent communication skills and curiosity are essential. Strong verbal and written communication skills. Ability to work well in a cross-functional team environment.