About the Role :
This opportunity encompasses a common evaluation process for two skillsets – 1. Performance Coding & 2. Design Patterns & Software Architectures. Do apply if your skillset matches either of the two.
Salary Range :
25 – 35 Lacs + ESOP (optional)
Requirements in Practice :
- Excellent C++ skillset
- OOD driven thought process – scalability, modularity, polymorphic coding
- In depth architecture understanding with thorough knowledge of design patterns and adept in designing architectures for parallel threading
- Experience with API architecture design and development
- Multi-threaded programming
- Asynchronous Programming
- Adequate experience in translating and optimizing algorithms specific to DSP (which includes image processing) and/or Neural Net Architectures
- Implementing and Optimizing Algorithms
- Adept with building test frameworks for codes.Must have a strong inclination for documentation and code readability.
- Must have a strong inclination for documentation and code readability.
Good to have experience and practice with :
- Compiler working and construction.
- CPU architectures.
- Hardware associated driver development.
- OS and layers (Board Support Packages, BIOS, UEFI, BootLoader)
- Memory architectures and optimizations.
- MIMD, SIMD
Good To Have Knowledge of :
- GPU based application development. Knowledge of CUDA (Excellency is not necessary)
- State machine architecture
- Realtime computing
- UI based deployable application development
Team Structure :
There will be 4 single/two member teams to start with –Algo Team, SW Design & Dev Team, HW Team & GPU Team. Members of other teams will be passive members of each team apart from the team they lead. The Algo Team will provide the DNN & Vision algorithms, while the GPU Team will provide the GPU optimizations for the algos, HW team will provide the HW integration and SW team will translate GPU optimized algos into SW blocks. Each team will split the implementation among other teams and guide them through the implementation. Every team member will be a passive member of all other teams.
What will you do ?
The skillset is split into two parts .
- Performance Coding – Ability to get the best possible resource optimized performance for a given algo, by completely leveraging your strong knowledge of the complier, HW/system architecture and OS layer intricacies, and playing intelligent tricks around it.
- Design Patterns & Software Architectures – Ability to identify and define architectures, test cases, review & implement all the SW & firmware parts and development effort – the image processing, DNN APIs, vision sequences, manipulation sequences, drivers, etc. Your ability to envision evolution of multi-faceted feature expansion possibilities and plausible limitations along with strong C++ skill set, knowledge of design patterns & your penchant for application-oriented SW design thought process, will drive the whole software design & development part. You will also provide architectures and approaches for the drivers to be developed to keep them modular and scalable, and consistently review them all.
How will you do ?
You have complete freedom here, but you will be subjected to reviews. Since, this is a startup and the product is not yet well-defined, you would be the one with the responsibility of defining it. Expect things to be not orderly and requirements to not be solid. Part of your design effort largely involves requirements building too and developing architectures that are agnostic to such requirement changes. The SW part of the product significantly evolves as per your thought process and will hence forth carry your signature in it.
You will also be building a team as the product evolves to maintain and develop further. Though confined to a focused area, the work is pretty much expected to be entrepreneurial with the exact advantages and difficulties of a startup.
To apply for this job email your details to email@example.com