(Sr./Staff) Software Engineer
We are looking for self-motivated and self-starting software engineers to design, implement, integrate, test and maintain software for machine learning toolchain.
You will work closely with the project team to define and manage deliverables and their milestones. You are required to have good appreciation of various design patterns, their trade-off, and implementation intricacy. To excel, you will need to have keen eyes for debugging and trouble-shooting not just the DUT but possibly the system/sub-system concerned. Familiarity in SDLC is essential to ensure producitivity. Strong programming skill in Python and C/C++ is a given.
For staff level, you are expected to be strong in architectural patterns, able to view the system design in both top-down and bottom-up manners, and design suitable SW architecture for the concerned system/sub-system. You are required to mentor the junior team members, lead in code reviews, and drive design best practices. You are expected to write good technical documentation.
1. Responsible for the full SDLC of software for embedded systems and related toolchains.
2. Responsible for verification, validation and performance testing and benchmarking of deliverables.
3. Plan and coordinate projects with teams globally and execute independently.
For staff level:
4. Responsible for definition and architectural design decisions.
5. Mentor and guide junior and senior team members; code review, and coaching.
6. Assist project manager to drive efficient SDLC.
7. Generate requirements and specification.
Candidate qualifications include:
* Excellent coding skills with Python and C/C++ is a given.
* Excellent debugging skill; ability to trace difficult problems.
* Good working knowledge with Cython and/or CPython.
* Experience with software development tools (compilers, assemblers, linkers, IDEs).
* Experience with source code management (GIT, SVN).
* Experience with any RTOS.
* Familiarity with JAVA is a plus.
* Familiarity with Eclipse plugin development is a plus.
* Familiarity with embedded system involving multi-cores (CPU/DSP/GPU/NPU) is a plus.
* Knowledge of Linux kernel and driver development is a plus.
* Knowledge of continuous integration framework (Jenkins, Travis) is a plus.
For staff level:
* Excellent understanding of various design and architecture patterns, their trade-off and implementations.
* Translate architecture and design idea/concepts into clear SW specification.
* Know what it takes to execute effective CI/CD.
* Able to write good documentation and technical specification.
* Familiar with UML for purpose of specification and design documentation.
Strong consideration will be given for any of these additional qualifications:
* Knowledge of machine learning / deep learning.
* Knowledge of OpenVino, FLOW, NNVM/TVM, ARMNN or NVDLA software stacks.
* Knowledge of TensorFlow, MXNet, PyTorch, Keras, etc.
* Knowledge of computer vision and image processing.
* Good appreciation of CNN and the common NN operators/layers.
* Ported open source CNN model to run on edge inference engine, e.g. ARMv8, Mali GPU, CEVA DSPs, Tensilica P6/C5 etc.
* Familiarity with LLVM.
OmniVision Technologies Singapore Pte Ltd