The GPGPU Software Developer Role
Let’s skip the boilerplate role description. You know exactly what the role of a software developer is.
In our team, you will responsible for delivering core features of our software stack with minimal supervision and management involved.
Your in-depth knowledge of GPU hardware, heterogeneous computing and practical experience of writing highly optimised code in CUDA or OpenCL is required to scale our on-board software to new limits and benefit from the additional power of the GPU to do better and more processing than what is achievable on the CPU alone. This means you will be deeply involved in a number of interesting areas such as: localisation and perception using LIDAR or Computer Vision based algorithms, among many others.
The GPGPU Software Developer Persona
You are a self-starter and a pragmatic programmer.
You are a leader and an expert in your programming languages of choice.
You value good practices and methodologies of software engineering.
Your experience of designing and coding first class systems in a first class way combined with strong technical abilities and soft-skills will give you the initial credibility required for starting on a such a demanding role and allow you rapidly gain the trust of your team mates.
You value Agile and Lean principles and are able to find the right tools and techniques (they all have their limits and use cases) for each and every situation — as they all are different.
You are not dogmatic and you act with an open mind — as you value a collaborative working environment and don’t want to stifle it or raise communication or relationship walls.
Did we say you are a good team player ?
The GPGPU Software Developer Responsibilities
- Ensure the features as defined in the product roadmaps are delivered according to their priorities and plans. Tip: you can and should influence the roadmap, like everybody else.
- We expect that you can dedicate 80% of your time to contributing production, high-quality code, while the rest of your time will be dedicated to discussing general design and architecture with the rest of the team, coding code reviews, learning new things and helping the team and yourself grow as a person and as a contributor.
- Ensure that our software is built with an appropriate level of quality, and that the internal requirements in terms of traceability, code quality through coding conventions, static analysis, automated testing and deployment and finally documentation are met.
- Notwithstanding the appropriate level of quality, your experience will also allow you to avoid the opposite common flaws such as over-engineering, gold-plating. You know what “good-enough” means for each feature, which allow you to release the feature as soon as it’s ready (not sooner, and not later).
- The high-level view of the feature will allow you to guide the team into building simple, functional features while avoiding building another Rube Goldberg machine — which can happen when highly skilled people iterate rapidly on something without keeping the big picture in mind.
- You understand that tools and systems which end up in the hands of customers or partners need to have a certain level of polish and hence you will act as the gate-keeper where only features having reached that level will be submitted to the product managers for validation.
Requirements
- Minimum 5 years of deep C or C++ experience designing and coding business critical software, preferably as a technical lead.
- GPU and Heterogeneous Computing architectures have not many secrets for you.
- CUDA or OpenCL mastery. You have significant CUDA based or OpenCL based code running in production.
- Experience working in a distributed fashion, with remote locations (nice to have, but definite plus).
- XP and Lean Startup concepts and practices mastery (nice to have, but definite plus).
- Very good oral and written English.
by via developer jobs - Stack Overflow
No comments:
Post a Comment