Developer Roles

Key Result Areas

  • Software source code

  • Software binaries

  • Documentation (sequence diagrams, flowcharts, etc.)

  • Unit tests

Key Performance Indicators

  • Software Quality: absence of defects

  • Completeness: implemented all required features

  • Robustness against heavy use and negative testing

  • Productivity: amount of functionality done in a given amount of time, giving consideration for reusability

  • Timeliness: Completes assigned work in a timely manner

Principal Software Engineer

Responsibilities

  • The position is responsible for Developing and applying advanced methods, theories and research techniques to the design and development of complex systems hardware and software across multiple platforms.

  • The Principal Software Engineer also directs problem solving projects or major phases of projects in the investigation and solution of advanced technical problems.

  • He coordinates technical support staff, determines methods of approach, organizes means for problem resolution, reviews project progress, recommends technical corrections and evaluates results.

  • The position also reviews literature, patents and current practices, assesses vendor capabilities, and provides technical consultation.

Required Qualifications & Skills

  • At least 5 years of related work experience

  • BS or MS degree in Engineering or Computer Science. Ideally, the BS or MS degree program will consist of courses in Object Orientated Programming, Software Engineering, Networking or Distributed Computing, Data Structures, and Operating Systems. Courses in Databases and Multimedia are a plus.

  • Experience in working with Linux and Microsoft Windows environments

  • Experience in working with Open Source and Microsoft development tools

  • Experience in working with functional teams to ensure delivery of quality software

  • Skillful with C and/or C++ programming

  • Experience with other programming languages is an advantage

  • Experience with web-based applications, particularly audio/video web-based applications, is a plus

  • Experience with developing HTML5-based audio/video applications is a definite advantage

  • Must have experience with network and multi-threaded applications

  • Must have experience working with databases

  • Experience in creating unit tests and using unit testing tools to improve software quality a definite plus

  • Knowledge and experience with audio/video applications a definite plus

  • Familiarity with Agile software development methodologies an advantage

Senior Software Engineer for Desktop Applications

Brief

  • The Senior Software Engineer for desktop applications is responsible for developing applications that run natively on Microsoft Windows 7/8, Ubuntu Linux and Mac OSX operating systems by writing cross-platform source code and third-party software libraries.

  • The successful candidate will get to develop graphics-intensive video and audio applications for the desktop. The applications involve technologies such as DirectX, SDL, HTML5, streaming video, H.264, etc. Although the candidate is not expected to already know all of these technologies upon hiring, the candidate must have the propensity and interest in learning such and applying them in practice.

Responsibilities

  • Responsible for developing and applying advanced methods, theories and research techniques to the design and development of complex systems involving hardware and software across multiple platforms.

  • Directs problem solving projects or major phases of projects in the investigation and solution of advanced technical problems.

  • Coordinates team, determines methods of approach, organizes means for problem resolution, reviews project progress, recommends technical corrections and evaluates results.

  • Reviews literature, patents and current practices, assesses vendor capabilities, and provides technical consultation.

Required Qualifications & Skills

  • At least 5 years of related work experience

  • BS or MS degree in Engineering or Computer Science or any related degree

  • Experience in working with Linux, Microsoft Windows and/or Mac OSX environments

  • Experience in working with Open Source, Microsoft and/or Apple development tools

  • Experience in working with functional teams to ensure delivery of quality software

  • Skillful with C and/or C++ and/or Objective-C programming

  • Experience with network and multi-threaded applications

  • Experience in creating unit tests and using unit testing tools to improve software quality

  • Experience working with databases

Preferred

  • Experience with other programming languages, e.g. Java, C#

  • Experience with web-based applications, particularly audio/video web-based applications

  • Experience with developing HTML5-based audio/video applications

  • Knowledge and experience with audio/video applications

  • Familiarity with Agile software development methodologies

Senior Software / Firmware Engineer

Brief

  • The Senior Software & Firmware Engineer is responsible for developing applications that run natively on smart devices typically running a stripped down version of Linux, and on desktops running Microsoft Windows 7/8, Linux and Mac OSX operating systems by writing cross-platform source code and software libraries.

  • The successful candidate will get to develop video and audio applications for smart devices and PC desktops. The software & firmware engineer writes low-level code or APIs that enable application-focused engineers to take advantage of capabilities of the hardware platform. To succeed in a research and development environment, the candidate must have the propensity and interest in learning new technologies and applying them in practice.

Responsibilities

  • Responsible for developing and applying advanced methods, theories and research techniques to the design and development of complex hardware and software systems across multiple platforms.

  • Directs problem solving projects or major phases of projects in the investigation and solution of advanced technical problems.

  • Coordinates technical support staff, determines methods of approach, organizes means for problem resolution, reviews project progress, recommends technical corrections and evaluates results.

  • Reviews literature, patents and current practices, assesses vendor capabilities, and provides technical consultation.

Required Qualifications & Skills

  • At least 5 years of related work experience

  • BS or MS degree in Engineering or Computer Science or any related degree

  • Experience in writing firmware for multimedia devices such as cameras, printers, mobile phones or tablets

  • Experience in working with Linux and Microsoft Windows environments

  • Experience in working with Open Source and Microsoft development tools

  • Experience in working with functional teams to ensure delivery of quality software

  • Skillful with C and/or C++ and/or Objective-C programming

    • Experience with network and multi-threaded applications

    • Experience in creating unit tests and using unit testing tools to improve software quality

Preferred

  • Experience with developing audio/video applications

  • Familiarity with Agile software development methodologies

Senior Software Engineer for Mobile Applications

Brief

  • The Senior Software Engineer for mobile applications is responsible for developing mobile applications for the Android, iOS and, in the future, the Microsoft platform as well. To make good software design decisions, he or she is also responsible for keeping the development team abreast of technologies used in the mobile space.

  • The successful candidate will get to develop streaming video and audio applications, network configuration applications, and data-driven applications to name a few. He or she will also have opportunities to tinker with lower-level application to operating system interactions particularly in the Android environment.

Responsibilities

  • Responsible for developing and applying advanced methods, theories and research techniques to the design and development of complex systems across multiple platforms.

  • Directs problem solving projects or major phases of projects in the investigation and solution of advanced technical problems.

  • Coordinates team, determines methods of approach, organizes means for problem resolution, reviews project progress, recommends technical corrections and evaluates results.

  • Reviews literature, patents and current practices, assesses vendor capabilities, and provides technical consultation.

Required Qualifications & Skills

  • At least 5 years of related work experience

  • BS or MS degree in Engineering or Computer Science or any related degree

  • At least 2 years experience in working with Android or iOS environments

  • Experience in working with Linux and/or Microsoft Windows environments

  • Experience in working with Open Source and/or Microsoft development tools

  • Experience in working with functional teams to ensure delivery of quality software

  • Skillful with any programming language for developing mobile apps (e.g. Java, Objective-C or Swift)

  • Experience with network and multi-threaded applications

  • Experience in creating unit tests and using unit testing tools to improve software quality

Preferred

  • Experience working with databases

  • Experience with web-based applications, particularly audio/video web-based applications

  • Experience with developing HTML5-based audio/video applications

  • Familiarity with Agile software development methodologies

Senior Software Engineer for Web Applications

Brief

  • The Senior Software Engineer for web applications is responsible for developing platform-agnostic web applications targeted primarily for desktop environments but can run on mobile environments as well. To make good software design decisions, he or she is also responsible for keeping the development team abreast of technologies used in web development with particular emphasis on HTML5.

  • The successful candidate will get to develop streaming video and audio applications, network configuration applications, and data-driven applications to name a few. He or she will also have opportunities to push web applications and browsers to their limits.

Responsibilities

  • Responsible for developing and applying advanced methods, theories and research techniques to the design and development of complex systems across multiple platforms.

  • Directs problem solving projects or major phases of projects in the investigation and solution of advanced technical problems.

  • Coordinates team, determines methods of approach, organizes means for problem resolution, reviews project progress, recommends technical corrections and evaluates results.

  • Reviews literature, patents and current practices, assesses vendor capabilities, and provides technical consultation.

Requirements

  • At least 5 years of related work experience

  • BS or MS degree in Engineering or Computer Science or any related degree

  • At least 1 year experience in working with HTML5

  • Experience in working with Linux and/or Microsoft Windows environments

  • Experience in working with Open Source and/or Microsoft development tools

  • Experience in working with functional teams to ensure delivery of quality software

  • Skillful with any programming language for developing web apps (e.g. Java, HTML5, JQuery)

  • Experience with network and multi-threaded applications

  • Experience in creating unit tests and using unit testing tools to improve software quality

Preferred

  • Experience working with databases

  • Experience with mobile applications, particularly audio/video web-based applications

  • Experience with developing HTML5-based audio/video applications

  • Familiarity with Agile software development methodologies

Software Engineer II

Brief

  • Depending on his/her areas of specialization, the Software Engineer is responsible for developing applications for desktop and/or mobile applications running on popular operating system environments. He or she assists the more senior members of the team by taking design, coding and unit testing tasks.

  • Bounded only by his or her abilities, the successful candidate will get the chance to develop high-technology applications such as streaming video/audio applications, network configuration applications, and data-driven applications. He or she will also have opportunities to tinker with lower-level application to operating system interactions particularly in the Android/Linux environments.

Responsibilities

  • Participates in the basic design, development and implementation of hardware and software systems across multiple platforms.

  • Assists in analysis of project tasks, definition of design specifications, development of standard routines and utility programs, resolution of hardware/software compatibility and interface problems and analysis of the system's architecture.

  • Has basic knowledge of object-oriented programming, new/advanced programming languages and integrated automation systems.

Required Qualifications & Skills

  • From 2 to 4 years of related work experience

  • BS or MS degree in Engineering or Computer Science, or any related degree

  • Experience in working with either Linux and/or Microsoft Windows and/or Mac environments

  • Experience in working with either Open Source and Microsoft development tools

  • Has experience developing software using Java, Objective-C, C and/or C++ programming

Preferred

  • Experience in working with Android and/or iOS applications

  • Experience with network and multi-threaded applications

  • Experience with web-based applications, particularly audio/video web-based applications

  • Experience with developing HTML5-based audio/video applications

  • Experience working with databases

  • Experience in creating unit tests and using unit testing tools to improve software quality

  • Knowledge and experience with audio/video applications

  • Familiarity with Agile software development methodologies

Software Engineer I

Brief

  • Depending on the project assignment, the Software Engineer I is responsible for developing applications for desktop and/or mobile applications running on popular operating system environments. He or she assists the more senior members of the team by taking design, coding and unit testing tasks.

  • Bounded only by his or her abilities, the successful candidate will get the chance to develop high-technology applications such as streaming video/audio applications, network configuration applications, and data-driven applications. He or she will also have opportunities to tinker with lower-level application to operating system interactions particularly in the Android/Linux environments.

Responsibilities

  • Participates in the basic design, development and implementation of hardware and software systems across multiple platforms.

  • Assists in analysis of project tasks, definition of design specifications, development of standard routines and utility programs, resolution of hardware/software compatibility and interface problems and analysis of the system's architecture.

  • Has basic knowledge of object-oriented programming and new/advanced programming languages.

Required Qualifications & Skills

  • From 0 to 2 years of related work experience

  • BS or MS degree in Engineering or Computer Science, or any related degree

  • Has experience in or is familiar with developing applications in Linux and/or Microsoft Windows and/or Mac environments

  • Has experience in or is familiar with Open Source and/or Microsoft/Mac development tools

  • Is knowledgeable with developing software using any of the following programming languages: Java, Objective-C, C, C++ programming

Preferred

  • Knowledgeable with developing Android and/or iOS applications

  • Knowledgeable with network and multi-threaded applications

  • Knowledgeable with web-based applications, particularly audio/video web-based applications

  • Knowledgeable with developing HTML5-based audio/video applications

  • Knowledgeable with developing database applications

  • Knowledgeable with creating unit tests and using unit testing tools to improve software quality

  • Familiarity with Agile software development methodologies