Skip to main content

C++ Software Developer

Are you a bludgeoning but friendly C++ 17/20 software developer, well versed in multi-threaded development, memory management, high performance development? And yes, testing (TDD) too! We are looking for devs who are friendly with hardware, who understand the basics of power supply, electrical level, flash devices, general application level embedded development. Is this you? Are you out there? Are you ready for an automotive / augmented reality situation?
BASEMARK: AR, automotive & compute/graphics software product company based in Helsinki, 80ish employees worldwide, satellite offices in Germany and the US. We are world-class experts in real-time 3D graphics, GPU-compute programming and design.
Our mission is to support and accelerate the transition of automotive OEMs to the software defined vehicle reality. Our vision is to be the #1 provider of base layer SW for the automotive industry globally, to be in half of all cars produced by 2025.
We cover both compute and graphics, there is no middleware on the market that covers both. Both compute and graphics need to access the same processor and GPU underneath, and since we are able to cover both and schedule the work between both, this leads to performance superiority for our solution, compared to separate solutions.
The Job:
You will write efficient code in C++17 or 20, low memory utilization, CPU utilization, and then you’ll test this. You’ll take an image and flash it, then connect to a phone with boot loader mode. You will be working on a virtual and local team in Helsinki, along with a German luxury car brand and their team of devs. Our domain is the cluster, camera interface, and we interact with one another regularly in taking multiple video streams with multi-threaded development, to integrate them as needed.
Requirements:
  1. C++17 experience is the most important. C++20 and above is also appreciated. Multithreaded development, memory management, high performance development.
  2. Basic SW design experience is appreciated: test driven development, SOLID principals, design patterns, UML.
  3. Flashing HW images is required for debugging and testing our SW. Shallow experience is enough. What bootloaders are for, how to deal with COM ports, USB to COM, etc.
  4. Docker containers are used for local builds. Shallow experience is enough. We don’t create our own containers.
  5. Yocto is used to integrate into the project image. This is nice to have, not mandatory at all. We just need to write a few lines of scripts for integration and maintain them.
  6. QEMU simulator is used to debug our SW locally. Shallow experience is enough. We don’t create anything for it, just run existing images.
  7. Embedded development experience is nice to have. It might even be unrelated to C++ experience.
  8. Testing is an important part of the project. Significant part of our job is related to testing. Our SW developers have to implement unit tests using gtest and gmock. Also they need to assist and support integration tests development.
For SW development we use Visual Studio Code. It can be used on Windows under WSL, or on Linux. Our SW is built inside a docker container. Also we can run our SW under QEMU ARM simulator. To run the code we can use QEMU at some level, but main test should be done inside a device. So a SW developer should upload the SW to our device though COM terminal or SSH, and run it there. Usually it’s difficult to use a remote debugger, so we use logging, even real-time logging.
So, what do you think? Is there anything we did not share with you? Are you not entertained? Oh, well I forgot to mention that we also have fun doing all this! Sincerely. Our whole company are a collection of intelligent and diverse humans, and we are committed to building this thing. Our company culture is accommodating, psychologically safe, and we genuinely want to grow and develop together, and individually.
Please send your English CV and cover letter to  with the subject entitled C++. We look forward to meeting you!

On this website we use first or third-party tools that store small files (cookie) on your device. Cookies are normally used to allow the site to run properly (technical cookies), to generate navigation usage reports (statistics cookies) and to suitable advertise our services/products (profiling cookies). We can directly use technical cookies, but you have the right to choose whether or not to enable statistical and profiling cookies. Enabling these cookies, you help us to offer you a better experience.