As we’re not a university but a company, there needs to be a balance between things you can offer and the things we offer. Like in every job description, there is a list of bullet points to explain what we seek. To make it possible to self-asses your fitness for the job, we’ve put the number of points (✪) for each bullet point.
INSTRUCTIONS. For each section, assess yourself as being a:
- beginner: have been in contact with it briefly
- junior: had some experience, but not difficult problems
- medior: had more experience, but cannot coach others yet
- senior: experienced enough to coach others to really advance on this subject
- lead: can teach new things to a senior
- principal/master/guru: one of the world’s best
You need to look for the level where you get the most points. For example, if you are a master in C++ but are a medior in C and math, it might actually be best to assess as a medior and mention your C++ knowledge specifically. Or for example, if you are sure you can successfully finish a tutorial on GPGPU, you’re a beginner.
Real question to answer before applying: do you want to become a senior in GPGPU?
If you have the imposter syndrome, don’t be too harsh on yourself. If you’re overconfident, be realistic. If you worry you’re both, pick imposter syndrome only.
Heads up. During the interviews, we ask questions for the above self-assessment. If you assess yourself as a senior for GPU-coding because you were the best-of-class, you’ll get questions. And there is no person who can be defined by lists, so do mention where you stand out.
You, as a CPU Developer (9 items, 18 weights)
We seek people with experience. This can be open source projects for first jobseekers, or past jobs for those with job experience.
- You are capable of designing mathematical algorithms, both serial and parallel. ✪
- You are strong in math and hard sciences. ✪✪
- You know how compilers work, and you are unfortunate enough to know when they don’t. ✪✪
- You are experienced in C. ✪✪
- You are experienced in C++. ✪✪
- You have experience designing performance-driven architectures. ✪✪
- You know how to write tests. ✪✪✪
- You are experienced with continuous development. ✪✪
- You have experience with low-level optimizations. ✪✪
You, as a GPU Developer (6 items, 15 weights)
We seek people with experience. This can be open source projects for first jobseekers, or past jobs for those with job experience.
- You have read “hardware architecture specification documents” or ISA-docs. ✪
- You know how GPU-compilers work, and you are unfortunate enough to know when they don’t. ✪✪
- You are experienced in CUDA and/or HIP. ✪✪✪✪
- You are experienced in OpenCL and/or SYCL. ✪✪✪✪
- You know your way around with GPU-libraries. ✪
- You are experienced in porting algorithms to the GPUs, without the use of any library. ✪✪✪
As the four stars indicate, we do need minimal GPGPU-experience, as you won’t learn it here.
You, as a Problem Solver (8 items, 21 weights)
Coding is only one part of the solution. Most of the time we’re solving problems, where coding is just the means.
- You like the ideas and theories around the “learning mindset”. ✪✪✪
- You have a structured problem-solving approach that you could explain. ✪✪✪
- You have high self-awareness and can self-observe. ✪✪✪✪
- You have high standards for yourself. ✪✪
- You test out approaches by making quick experiments. ✪✪
- You test out possible solutions by mentally putting them in different scenarios. ✪
- You regularly take time to zoom out to get an overview on the problem, to be able to balance the inputs for the solution. ✪✪✪✪
- You always follow through. ✪✪
If you score high here, this will compensate for any lack of technical experience. Also for continuous growth, you’ll need to score high here.
You, as a Project Team Member (10 items, 20 weights)
Our company’s strength is that we work in teams. We don’t know everything as individuals, but as a team we can solve almost any problem around HPC and GPUs. This means we highly value collaboration and thus must be efficient in project handling.
- You have a proven track record of being focused on results. ✪
- You have a talent for turning vague problems into the right actions, and you want to build on it. ✪
- You normally write down tasks, and then prioritize & ESTIMATE them. ✪✪✪
- You understand that well-defined, well-communicated delivery criteria are the responsibility of every team member. ✪✪✪
- You can identify something’s missing to move a project forward smoothly. ✪✪✪
- You speak up when the project diverges from the trajectory. ✪✪
- You are used to administrating your time spent on an issue. ✪
- You can delegate work. ✪✪
- You can get work delegated. ✪✪
- You can explain, with examples, why the above are important. ✪✪
We explicitly did not state “project management”. It is about playing your part of making an efficient team.
What’s next?
If you got at least junior on CPU, Team, and problem-solving, beginner on GPU, and at least one of the 4 on medior? Then you should apply. Go to https://streamhpc.com/jobs/ for the instructions and links to other articles that should help you with understanding if this is a job for you.
Understand that if you are a true beginner in GPGPU, it’s best to follow the tips&tricks explained here.