Designs, modifies and implements complex software applications from functional and system design specifications.
Codes, integrates, tests, debugs, and refines the software to produce the required product.
Develops software tools and subsystems to support software development, test, and reuse, and manages implementation for projects requiring extensive investigation and clarification.
Develops with software best practices using automated unit testing and component testing.
Enhances software to reduce operating time or improve efficiency and robustness.
Reviews, evaluates, and analyzes design interfaces.
Prepares, reviews, and evaluates interface documentation, specifications, test plans and procedures.
Participates in Agile Scrum ceremonies including Sprint planning, story grooming, daily stand-ups, sprint reviews and sprint retrospectives.
Assists in definition, analysis and allocation of requirements.
Supports system test programs and analyzes system testing results.
Documents designs in engineering documents including functional block diagrams and data/logic flow charts.
Maintains the developed software efficiently through familiarity with software lifecycles.
Provides leadership and/or technical guidance to lower level engineers, designers and support personnel as assigned.
Requirements:
Advanced C, C++ programming experience in Linux environment including TCP/IP network programming.
4-year degree in Engineering, Computer Science, Information Systems or related field.
10+ years of related experience.
8+ years of current hands on development experience with C and Shell Scripting. Very high technical competence with a track record of strong coding.
Go programming experience a plus.
IFE System Development experience is a plus.
Strong familiarity and experience in Linux and/or Unix environments.
Familiarity and experience with software build systems, including conan packages, make and cmake.
Shell Scripting, Algorithm Development, Data Manipulation, Data Aggregating/Processing.
Ability to work in Agile Scrum software development team.
Familiarity with Continuous Integration (CI) workflows, especially Gitlab CI
SQL, MySQL or related database language skills.
Experience with git version control.
Familiarity with network security methodologies a plus. Prior experience with multimedia application development including streaming audio/video servers and clients highly desirable.
Ability to work well in a fast-paced environment with user-centered, iterative design and development cycles.
Demonstrated ability to manage multiple priorities and make efficient use of given resources such as system lab time and down stream process owners and tasks.
Demonstrated ability to lead multi-function teams to achieve positive results and perform as a technical expert and a source of information.
Provide leadership and/or technical guidance to other engineers.
Highly proficient in project planning while addressing external/internal dependencies across multiple functions.
Proven ability to extensively modify existing processes, procedures or methods to develop appropriate solutions.
Works on problems of diverse to complex scope where analysis of data requires evaluation of variable factors.
Demonstrable experience providing identifiable technical contributions to the success of a product or project.
Proven ability to develop technical approach or design, resource, allocation or time schedule on projects.
Ability to effectively interact with senior internal and external personnel.
Demonstrated engineering communication expertise including concise written and verbal skills is a must.
Familiarity with a variety of discipline field concepts, practices and procedures.
Ability to travel to domestic or international locations as required, up to 5% of the time.