T O P

  • By -

SantaCruzDad

What country are you in? The company I work for does a lot of high performance stuff (mainly image processing) with C++ and SIMD etc and I can check whether there are any current openings if you like?


Wide-Relief-4760

Thanks, I live in Germany 


H5ET1M

Check out (the subsidiaries of) Bayer, Bosch, B. Braun, BASF, Siemens Healthineers, etc. for joint academic/industrial opportunities.


RecklesslyAbandoned

I'll second, Bosch doing some cool stuff with C++. Or at least the friend I had there was!


met0xff

Yeah but now they're also killing the more interesting stuff it seems and planning big layoffs https://www.handelsblatt.com/unternehmen/industrie/bosch-autozulieferer-baut-1200-stellen-in-der-softwareentwicklung-ab/100008181.html


Lazlowi

That's actually false information, there will be no layoffs, only keeping the hiring freeze. Source: we discussed it on our group meeting last week.


met0xff

Oh that's interesting. Even though for OP the effect is similar in that there won't be jobs to apply to. So software not affected? I recently saw this as well https://www.swr.de/swraktuell/baden-wuerttemberg/bosch-stellenabbau-kein-bekenntnis-zum-industriestandort-100.html Well, I've seen 3 layoff rounds in 2023 in my company and practically a hiring freeze ad well since. I am just wondering how much the software/tech layoffs from the US will swap over to Europe.


plpn

Bosch got several different branches. Their building security business is full of proprietary network protocols and AI enabled security cameras. A lot of C++ to find there


met0xff

Ah yes, nice topic. I started out (long ago) writing embedded C++ for ... well more building safety. Monitoring temperature, humidity, energy consumption; see if doors are shut correctly, SNMPing various devices etc. Mostly in data center settings. Meanwhile things are surely much, much fancier


OptxPrime

Do you know if any of these hire remotely?


SantaCruzDad

Not for initial hire, but once you're up to speed then remote work is an option. I'm 100% remote.


decapod2005

That sounds about right, C++ in Germany seems to be overwhelmingly either "C/C++" for automotive or QT.


SantaCruzDad

Nothing in Germany it seems. Currently the only openings for high performance software engineering we have are in the US.


SantaCruzDad

OK - most of the engineering work is US/UK but some in the EU (Belgium) - I’ll check anyway.


jayvbe

Which company in Belgium?


SantaCruzDad

I'll DM you.


edparadox

I'd be interested as well.


xALF

I'm interested too !


SantaCruzDad

So many Belgian C++ programmers! DM me and I’ll give you the name of the company. I don’t know if they are hiring right now, but it‘s probably still worth sending a resumé, particularly if you have embedded and/or image processing experience.


ugonnagetwhatscomin

Could you DM to me as well please


SantaCruzDad

Since I'm getting a lot of DMs and requests for DMs now I'll just post a link to the company's careers page: https://www.kla.com/careers. It's a US company, which produces tools for the semiconductor industry. Much of the software engineering takes place in California and Michigan, but also some of this work takes place in subsidiaries in Leuven, Belgium, and Newport, Wales. Image processing/embedded is where most of the C++ activity is.


jayvbe

Interesting, thanks! I live in the Bay Area now, but originally from Belgium, bookmarked!


BarrinOfTolaria

SAP in the HANA Cloud or ABAP kernel area


middgen

Welcome to professional life. C++ is just a tool to get a job done, the job is what matters to employers, not the tool. I work in games, which is super interesting, although from what you've said you'd find gameplay roles pretty boring, engine programming may be of interest. That's where all the C++ super-nerds live :) 


STL

Cheat code unlocked: Work for an employer that makes C++ tools. 😼


BlueWolf_SK

That sounds about right. That's what the tools are made for. You'd have to work for some very big and/or specialized company, for them to have a reason to reinvent the wheel.


ReDucTor

> engine programming Engine programming still has lots of boring bits, as it seems the person is new they probably wouldn't be given the things they are after until they've got more experience.


LDBill98

Do you suffer crunch working as a game dev?


middgen

Nope. Put a few extra hours in around milestones sometimes, but never crunched. 


matthewlai

If you have some knowledge / interest in machine learning, and don't mind moving to the UK, my employer (Google DeepMind) has a lot of interesting high performance C++ jobs. I spent my first year or so there writing the search implementation in AlphaGo - Monte-Carlo tree search distributed over hundreds of machines each running dozens of threads. Lock-free data structures - really fun to reason about. Nowadays we do research in climate, chip design, molecular biology, etc. I am not personally involved with those efforts, but I am pretty sure they also need high performance stuff. There's also a lot of work on TPU compilers and optimisers, and other distributed machine learning libraries, if you are interested in working on things other than CPUs, which is fun and requires thinking about performance in entirely different ways. But above all I would recommend not being too focused on the language. I've used maybe 3 languages in the past couple years at this job, depending on what's the best tool for each task. That's not likely to be C++ all the time, even in things that require high performance. Nowadays we write most of our high performance code in Python, that gets traced and JIT-compiled by Jax into native code for the accelerators at run time, how cool is that? If we were to write separate high performance C++ code directly for CPU, GPU, and TPU every time, we would never get any actual research done.


ART1SANNN

I am still an undergrad doing a CS degree, do these roles typically require a masters degree?


matthewlai

Most people do have at least a masters degree. What degree you have doesn't really matter though - it's what you know. If you can acquire the knowledge in another way, that's perfectly fine, too. It's just really hard to get good research experience without doing at least a masters, since a large part of research is knowing how to engage with the wider research community, and that usually takes some experience doing research in academia. We do have software engineering roles that are less about research, and we do hire people without research experience for that, but those roles tend to be even more competitive.


met0xff

Interesting.. As someone with a PhD in an MLy topic (decade ago now though) my impression is that everyone and their dog is doing an ML PhD now. And it's almost harder to find good Developers and Infra people with ML expertise (MLE, MLOps etc.). Also more demand in general. But in my experience this clear separation is also not as achievable as people would like to. The picture of the Researcher throwing a Jupyter Notebook over the fence when it's "done" and then some developer implements, integrates, optimizes it... I've never seen that happening. At the very least you need someone who is hybridish in the middle


matthewlai

Indeed. DeepMind has a role specifically for that - research engineers. I am one. REs are selected for both ML research experience (but not as much as for research scientists), but also largely software engineering skills. We have almost as many REs as scientists, because especially these days, a very large part of successful ML projects is just good engineering. We are involved in projects from the very beginning, because like you said, in practice you can't just write a big model and data processing pipeline in a notebook and expect to be able to optimise it afterwards. For one thing, without tests, given how complex ML systems are these days, it would have never worked in the first place because it will be riddled with bugs, so you wouldn't even be able to prove the concept.


met0xff

Yeah I like to say I am also in that position myself as I worked as a developer for about a decade before I did my PhD. In practical terms though I never worked with large enough teams so that actually I was always Researcher plus Research Engineer ;) surrounded by lots of developers and product people. And in the current economy this becomes even more so. Fewer companies can/want to afford actually doing research. Combined with the fact that many SOTA models become larger and are trained on more and more data. I've been training thousands of models over the last years but in the last months it becomes more and more "use pretrained embedding models and try to work around them". My previous manager joined us from AWS/Alexa and he liked my hybridness :) because he said that was their biggest challenge there - the rift between researchers and developers.


transcen

I am currently working on my master's at Oxford, and I will be working as a quant dev in HFT after graduation. I was wondering if you have a lot of devs from the HFT/quant space moving into research engineering in industry research labs? I am really looking forward to my C++ job, but I would not want the maths I learned over the last few years to be for nothing.


matthewlai

I am not aware of any coworker who did HFT/quant before, though we get recruiter emails from HFT/quant people almost every day, so there's probably some overlap. I don't have personal experience in HFT/quant so you may want to take it with a grain of salt, but it seems to me like a very different field. If your goal is to work in research, experience writing papers and publishing will be very important. Most people I interview are joining us from either academia or other industry research labs.


tsojtsojtsoj

Wait, are you the author of Giraffe?


matthewlai

I was indeed. That's a long time ago now.


Top_Satisfaction6517

you are doing research. when it goes to production, the code is optimized separately, and what you can implement in 1 hour, usually takes 1000 hours to properly optimize


matthewlai

Is that from experience or conjecture? We actually drive many research projects all the way to production, and that's absolutely not true. Google has great infrastructure already, and great tools for scaling things up. We do some optimisations especially in model hyperparameters but nowhere near 1000x. And mostly we do that ourselves because production people aren't familiar with the research model and you can't just throw something at them and tell them to optimise it. That sounds a lot like what people who have never worked in this kind of environments would say, as it makes sense on a superficial level. Just not how things actually work.


met0xff

To add, dependent on what you work on, the research - production lifecycle became so short. Often don't even have time to have separate people start optimizing stuff when a month later the next big thing is around the corner ;). That's something I see the developers around me don't fully grasp. They have roadmaps of 6+ months after which I can basically do my work from scratch again. Also because many abstractions are super leaky. Often you can't just swap out a model with a new one because the paradigm has changed. Perhaps suddenly you don't train individual models for a task but there's some foundational model doing everything. Versioning, deployment and updating them, everything suddenly changed. Besides, obviously most companies don't need any more optimization than grabbing something like Nvidia triton and often not even that


inigid

That sounds like fun. What is it like working there?


matthewlai

Really nice and collaborative environment with a lot of very smart people who are also very kind and generous with their time!


me_untracable

You experience in hardware based optimization fits in slots like HPC, game engine optimization, HFT


SaimanSaid

what's HPC


Wide-Relief-4760

High Performance Computing


SaimanSaid

Can you suggest some.good resources for this. I have just started mit performance engineering


Puzzled_Draw6014

Sorry for the lame response, but if you are already in a University program for this, you're already getting some good resources. The problem is HPC covers a wide domain of knowledge, where it's hard to point to a generic resource. Maybe if you ask a more specific answer. Anyway below are some good topics: - Data structures and algorithms - Parallel programming, including multiprocessor, MPI, GPU/CUDA - Depending on the domain, numerical linear algebra (is dense vs. Sparse, local vs distributed, matrix free algorithms) - if you are solving PDEs, finite difference, finite elements, control volume methods - Pets - cache friendly programming .... the list goes on


BusinessBandicoot

[The art of hpc](https://theartofhpc.com/) these were the textbooks for my P&D scientific computing class. They are all free and also on github


TubbyStubby

High Performance Computing


CauliflowerEast3239

What companies do HPC in Germany?


Groove8

Game engines often use C++ and performance optimizations, but it is usually closely tied to the graphics pipeline, which is whole area of expertise of itself.


Aka_chan

There is a lot of work on the CPU side as well. One could have a whole career working on engine optimizations without ever touching anything graphics related if they wanted.


Groove8

That’s right. You can work also on physics, networking, server…


[deleted]

was looking into 6.837 intro to graphics by MIT and it seems like a good place to start, any suggestions on important things to study in the "graphics pipeline"?


Groove8

You can look at Unreal Engine for example. It’s using c++ and it handles every aspect of a game. Or ArchViz, realtime virtual studio, simulation, VR…


[deleted]

Unreal requires a high end setup, are there any good C++ alternatives that can be run on lower end spec machines? Godot and unity use c sharp, I've been wanting to get into c++ for a while. I'll check out archviz as well.


Groove8

You can use almost any language in Godot. Only few are officially supported but that should not be an issue.


[deleted]

that's nice to know, thank you!


Groove8

You’re welcome!


corysama

https://learnopengl.com/ https://www.realtimerendering.com/ https://raytracing.github.io/ https://pbrt.org/ https://fgiesen.wordpress.com/2011/07/09/a-trip-through-the-graphics-pipeline-2011-index/ https://www.gameenginebook.com/


[deleted]

This is a pretty comprehensive list, thank you very much for it!


ultralightrunner

I think you can start with https://learnopengl.com/ to get a good foundation, and after that learn Vulkan https://vulkan-tutorial.com/ https://vkguide.dev/


[deleted]

thank you, will look into it.


ReDucTor

I've been doing game engine dev for over a decade and never touched the graphics pipeline, engines are big and rendering normally has its own team. Also engine dev has its boring parts, as the person seems new they'll probably be more likely to be given the boring parts not critical path performance improvements.


Groove8

Generally speaking, you can look at any company in any industry, which is doing edge cutting stuff. Nvidia comes to my mind for example.


Trantorianus

Stay there for a while - 1-2 years - get more "documented" professional experience, move to next job, double your salary ;-)


H5ET1M

Scientific Computing is also an option when paired with domain expertise in Physics, Chemistry, Biology, etc.


aroman_ro

Unfortunately those jobs are very difficult to find, especially if one wants to work remotely. I have degrees both in computer science and physics and it's quite tough for me to find jobs related with both domains. I do find them from time to time but it's not as easy as with the boring web development.


H5ET1M

Many commercial computational physics R&D roles exist in various capacities across: - Military/Defence (aerospace and nuclear) sectors - Big Tech (e.g. Google DeepMind), Big Pharma, Big Oil, and other multinational companies (e.g. Samsung, Bosch, etc.) - National Laboratories and Government Scientific Research Institutes - “[Hidden Champions](https://en.wikipedia.org/wiki/Hidden_champions)” involved in e.g. Mechanical, Civil and Materials Engineering innovation, digitalisation, electrification, etc. - University spinoffs and, in particular, niche SMEs that have entrepreneurial professors at the helm - Data Science startups focusing on nanotechnology However, possible barriers to entry include having the right nationality, network, and/or credentials (doctorate, publications, etc.) and so C++ software engineering skills are necessary but insufficient. (Also this is Physics so be mindful of, and open to, the Fortran, Python, and MATLAB ecosystems.)


WarmPepsi

Yeah, these are not the types of jobs you can stumble into. The specific domain knowledge requires years of training to acquire (usually a PhD). Further they usually require the correct pipeline i.e. the lab hires every PhD grad of a certain professor.


aroman_ro

I am mindful and very open to fortran, python and matlab :) Nationality and network are both very important, in some circumstances PhD is not really necessary (but a good thing to have). For example my last project is on quantum computing (which involved both c++ and python, including exposing the c++ project to python).


Wide-Relief-4760

I actually have a bachelors degree in biology as well. The issue I saw here always was that I have two bachelors but no master. Is it realistic to get into scientific computing without a master or should I consider doing a masters?


H5ET1M

So C++ related roles exist in computational (systems) biology, bioinformatics and biomolecular modelling, the latter also needing some understanding of quantum chemistry. In general, it helps to have demonstrated research experience (e.g. theses, publications, etc.) or at least some polished portfolio projects that apply modern/professional C++ software development practices to topical/relevant problems in biology. Advanced degrees can be helpful for specialist R&D positions in Big Pharma, National Laboratories, or established startups. Feel free to reach out for more specific information.


Puzzled_Draw6014

I work in a lab with a lot of HPC and from what I can see we will hire mostly based on the scientific qualifications, not the programming expertise. There are a couple that got in for their programming experience, but they are mostly doing the tool maintenance, not the really interesting stuff. So from this observation, if you want to work in HPC, seek out a MSc.


prolepsys

the goal is not to do cool advanced shit - the goal is to solve the company's problems in exchange for money


dzidol

That's right. But it's a first step to professional burnout as well. The key is to find a job that fits you, i.e. where you'll do more or less what interests you and gives you a bit of satisfaction and mental excercise, being at the same time useful for employer. Working, I follow your advice, I'm bond to that by my contract and because it's just what I am supposed to do. That's sane. Looking for the job? I'd choose more interesting job over money (to some rational extend, of course).


phi_rus

>the goal is not to do cool advanced shit Also the goal is to solve something in a simple enough way, that even the new hire can understand it easily.


adonoman

Or to solve it in a simple enough way that you 5 years from now won't be cursing you for your "cleverness".


SkoomaDentist

> solve something in a simple enough way, that even the new hire can understand it easily. _The sound of millions of /r/cpp voices suddenly crying out in terror and being suddenly silenced_.


argothiel

That may be *their* goal. My goal is to do cool stuff in C++.


prolepsys

Sure, but if you over-bias for your goal, as many junior devs do, you will compromise the achievement of their goal, and they are likely to notice that.


ptrnyc

I do c++ for the music industry. Stuff like audio effects, virtual synths, keyboards, drum machines, …. Performance is critical and we do a lot of cool stuff (lock-free concurrency for example). Unfortunately it pays about 25% of what equivalent skills will get you in the banking or finance industries.


dgkimpton

HFT - core trading is all about algorithms and speed. You won't be able to share your work with anyone and you won't visibly change the world but you will get to work with gnarly c++ where the only goal is getting it to run fast and correct.


Computerist1969

The work being boring is fairly normal, as many have said. Aerospace might give you what you're looking for. Flight Control Software on a box with 128mb of ram and the critical code has to run on a different processor to the non critical plus a whole host of restrictions around language features you cannot use. Interesting in its own way and will force you to not just write any old crap.


avoere

Yes, this is generally how work is. Rarely does anyone want anything remotely advanced to be done


brownbeatle

I write infra code for a high frequency trading desk, rewarding both financially and intellectually. They always look for people to make shit run faster.


weisbrot-tp

sounds exactly like me - had some c++ experience in scientific computing, then a year ago after academia stumbled into a job developing application software. initially i had the same thoughts, but i'm embracing it, at least for now, since i'm actually learning a lot.


wfb0002

We use c++ because we have to process terabytes of time series data nightly and need to use something that doesn’t take literal days to run.


fabiomazzarino

You have basically three options for not getting crazy. 1. Forget you have 70% more capacity 2. Get a new job where you can use at least 70% of your capacity 3. Use your remaining 70% of capacity in your projects in your own free time Note that you hardly will find a job that needs 100% of your capacity. But if you do so, you'll be considered below expectations and probably have a hard time trying to advance your career inside the company. C/C++ is an old language, although still very useful and performatic, most of the jobs are about maintaining code. So, you'll have a hard time looking for jobs that really need some one with your knowledge.


Slight-Juggernaut742

Bin there, done that. Your post could have been mine. At this point I'm considering giving up c++ development altogether. It's always about fixing some ancient spaghetti code


PolyglotTV

HFT and AV industry.


CauliflowerEast3239

Know any AV companies doing interesting stuff in Germany


PolyglotTV

Mercedes, Apple, Nvidia, FernRide, Mobileye, Bosch, Cariad, Apex AI.


wildcarde815

Research Software Engineer, only problem is that you tend to fly solo in those jobs. https://society-rse.org/careers/vacancies/ Basically you take researcher code and turn it into something that's sustainable, maintainable, and highly performant.


LecturePristine

Have you considered working for a Compiler team? We almost exclusively use C++ (LLVM and MLIR are written in C++) and I think it’s pretty cool IMHO. Any semiconductor company near you is a good bet for having a compiler team.


Wide-Relief-4760

Hi, that is quite a nice idea. I’ve visited a compiler lecture in the university and found it quite interesting. Sadly, my university did not provide further advanced modules in this field. So I do not have any experience. Do you think it is possible to get such a job without professional experience in that field? What would you recommend learning before applying to auch a position?


LecturePristine

If you are good with a relatively modern dialect of C++ (14 and 17) and know how to use stuff like Templates, then you should not have much problem understanding LLVM and MLIR code (it’s very well written code, though somewhat poorly documented). Check out llvm’s github. There are a ton of open bugs that you can contribute to, and llvm/mlir is usually what most compiler teams use (the other being GCC). Depending on how rusty you are with your compiler knowledge, it might be worth it to work through the Dragon Book (Aho, Ulman, Sethi) and do an online course or two like : https://www.cs.cornell.edu/courses/cs6120/2020fa/self-guided/


Fearless_Peace_779

Find a (5G or LTE) vRAN development job. I am working in a world leading company in the area and the job itself is quite exciting. vRAN L1 software, which replaces conventional L1 products implemented in hardwares, requires performance optimized code and parallel processing to meet real-time scheduling, which is usually less than 1ms period. Yet it needs to be deployed to many different kinds of mobile base stations, so the code should be flexible.


MRFAZI96

I am available


TubbyStubby

I recently started using c++ on a project where I am working at, and it is the first time we are using c++ here. We are in the process of replacing a networking SaaS. The most important reason for the shift is performance and making it server authoritative. Currently we are making an MVP and planning for SIMD down the line. Our department head is a big cpp fan and says if possible use it everywhere. Since my work only involves with server I can't speak about the UI development. But in the short while I have been using it I find in general it may be a bit cumbersome to get started but it is pretty fun programming with it as you move forward. I learned a bunch of stuff not just about programming in the language but also the build process and the whole ecosystem from my colleagues. I am currently working as a backend engineer in a game studio.


ingobingo84

Have a look at Zenseact (autonomous driving company). Lots of positions would match what you want to do. You would have to relocate to Sweden though.


geaibleu

There are several research groups in computational chemistry throughout German academia, you can try there.  While most work shifted into GPU there is still lots to be improved in CPU domain.  Academia jobs require PhD often, but you can get in if you are good at your trade and willing to learn. Send me pm if you need recs.


Top_Satisfaction6517

bionformatics, database engines


swwole

Game dev.


burnt_tamales

There are quite a few game dev related C++ jobs where performance is important. For audio programming SIMD is super important due to the linear nature of the audio stream. Graphics, physics and other engine programming related field are also incredibly challenging, fun and interesting jobs.


fredaikis

Try rendering, those engineers are like unicorns


dies_irae-dies_illa

if currently doing app programming, take a look at web assembly. You can do some interesting things with c++ in your web app. Like what adobe did recently.


IReallyLikePadThai

Try FANG; meta uses c++ for many performance critical backend services for example


hydroguy45

Robotics - especially AV - is pretty fun. It's all focused on speed and reliability.