I just got “desk rejected” by a recruiter, on a position aimed at junior developers with “1+ years of experience in C++” (nothing more specific than that) and a decent amount of non-programming requirements that I fulfill brilliantly. The HR said my cover letter had her fascinated and the profile is great but no, 3+ years of Fortran development during a PhD program in computational physics cannot by any means be traded with that one year of C++. They will just keep my material somewhere in wait for a C++ free position (which never would appear, their stack is all C++ and Qt).
Not much else to add, just that more or less this reminds me why for years I had this feeling that academia is my place… no one would ever reject a postdoc based only on the languages he has worked with during the PhD or, at least, never heard of that.
Maybe they just want you to have a very high frustration tolerance… because 1 year programming with C++ will lead to much more pain and frustration than 3 years programming Fortran.
Maybe they were just looking for a C++ production-ready-shut-up-and-code profile? and maybe it was not the right position for you!?
Many software providers working in engineering/scientific simulation code bases with mixed Fortran/C/C++ code bases will be more than glad to bring in people with skills beyond a given programming language, because the real need is not the language per se but the physical/engineering knowledge and the curiosity driven mindset.
My subjective belief is that Fortran is easier than C++ for the programs I want to write, but my interests may be shaped by what languages I know (I also use Python/Numpy/Pandas and R). If you are proficient in one language it can be difficult to motivate yourself to learn another complicated language to solve problems in the same domain. Could some multilingual forum members comments on when they use the two languages? Since tenure-track positions in the natural sciences are much scarcer than the number of PhDs produced, inevitably most PhDs will leave academia, so ideally research groups that primarily use Fortran will also encourage graduate students to use C++ where appropriate, since industry demand for C++ is higher.
You should not take this personally or as an evaluation of your knowledge and talent by any means. My observations are primarily academic, but in general, the HR typically has a very limited understanding of the differences between X vs. Y. If the job posting lists “1 year of experience with Abacus” (not to be confused with Abaqus), that’s their selection criterion, unless the actual employer reviews your application and somehow knows you are an excellent fit to the position. On many occasions, a pre-selected candidate is already in the employer’s mind, automatically excluding any other candidate. Also, remember that the C++ community is about 30 times bigger than Fortran’s. So, you can expect to see proportionally more jobs in C++, but few of those are likely primarily scientific/research-based. My advice is never to be content with learning a single language. Languages are mere tools to facilitate achieving goals. For me, from an academic perspective, a job applicant who excessively mentions or advocates a particular programming language or specialized tools in the statements strongly indicates the applicant’s inexperience or weaknesses in other aspects that they are trying to hide with language/tool-specific jargon.
I learned a very long time ago that when searching for a job to try to find an engineer, scientist, manager etc. in the department or departments in a company you want to apply to and contact them directly Avoid HR (at least initially) at all costs. They may just forward your CV/resume to HR without looking at it but you still stand a better chance of impressing the people you would actually work for and/or with. Every job I’ve ever had was obtained because I knew somebody or knew somebody who knew somebody. None have come from just sending my resume directly to an HR person
Both C++ and Fortran are important programming skills, knowing merely one of them is not enough, in my honest shallow opinion.
In fact, you are almost there, and there is no need to be frustrated at all. It is great that you can do Fortran, so you already have the 50%. Next just need to have the rest 50% which is C++. Once you can do both Fortran and C++, you are invincible
Thank you all, nice perspectives indeed. Though I feel it would be better if I disclose some additional info to avoid this coming through as something more or at least different than what it really is.
The position, per sé, is not really research oriented and not even targeted at computational/numerical work. I mentioned fortran in the cover letter just because that’s my main programming experience so far (along with matlab) and they would see that in the resume, alonf with the lack of professional experience with C++. I didn’t really dwell too much on it or trying to sell the language, just said that I was confident that as I picked up easily fortran when starting the PhD I could probably do the same with C++ now.
We are talking about a music-related software, looking primarly for musicians, but with a significant programming skillset (or this seemed to me from the posting, given they ask for a generic “1+ years of C++ development” and then a bunch of specific musical skills). This because they are working on a novel algorithm for musical playback in notation apps and probably realized that a non musician could never test and assess whether the results of their new implementation are improving the state of the art or not, in terms of appropriate contextual interpretation and adherence to the score. In my mind the requirement about C++ came just from their whole software being written in C++, and I regarded this nice position as an opportunity for (to me very) interesting applied research. As someone pointed out in research a language is just a tool and the focus is really on other aspects, assuming the language would just be learned while working on the project.
So yeah, again in my mind, a person with some junior experience in scientific research (being a PhD candidate finishing this year) and a strong career in musical performance (far more experience there than in research) could be an interesting candidate for them, if the goal was to actually explore, in applied research style, the possibilities with this new algorithm.
Probably it’s just that they already have people in charge of the planning/research aspects and just needed really C++ developers to do stuff. And the requirement about musical skills was meant just to ease the interaction with the project heads.
So, finally, given that traditional numerical work was per sé not involved (except that I suspect that this novel algorithm is essentially a neural network), probably they do not care about fortran in any way and did not see any big value in a computational physics guy. The technical skillset they are after is likely just really being comfortable with their Qt/C++ stack and ready to work productively on it.
Once you can do both Fortran and C++, you are invincible
Yes with just the power of the Fortran and C++ Infinity Stones you can like Thanos wish half the universe into non-existance. Hopefully, its the half with all the HR people in it. Image what power you would possess if you added the Python and Rust Infinity Stones
@rgba If this interface is of interest for you, then perhaps some of the work by Martin Rohrmeier et al. (Digital and Cognitive Musicology Lab at EPFL Lausanne/Switzerland) is worth a visit. Source code shared on GitHub however more frequently engages in Python/Jupyter (10:21 for a current total of 63 repositories*), than other langages (one repo in C, so far none engaging Fortran).
* This count excludes 10 repositories related to .html, and 3 to .tex. The grand total (including these) currently is 76.
Typical HR staff have no idea what they are talking about, but they insist on it no matter what. That’s their job. I remember, many years ago, some HR guys knowing one word only (actually letter): “C”. I’m pretty sure none of them knew even the basics of C, because whenever I tried to politely argue about C it was obvious they didn’t understand. They just knew they have to hire someone knowing “C”. Whatever that “C” means, they didn’t care and of course they didn’t know.
From what I gather, the trend now is “C++”, with some interpreted languages. It seems their alphabet has only 3 letters: A, B, C - the end. The limits of their language are the limits of their world.
You should not get disappointed by what happened. And be prepared it might happen again. That doesn’t mean you have to take the red pill. Like you said academia is a more safe place to try - even though the C++ trend is there as well (when I first realized that I couldn’t believe how crazy this world is.)
I like to think of Fortran, C, and C++ as the Big Three programming languages you need to know for math, science and engineering. The other languages (Python, Javascript, R, etc.) will be a piece of cake, since you will already be familiar with how to write library code to link to the scripting language runtime. Any of the challenging work will be done in one of these 3 languages anyway (except maybe R, which is more domain specific in practice).
I guess one big reason for this is an “external pressure”, e.g., some big program suite may be written in C++ and it becomes necessary to learn it in order to develop something directly in it (eg add new methods) or work with other people using that program suite…
I’m probably not typical as my background from 1978-2002 was university computing services at Imperial College (IC) and King’s College (KC) London. At IC Fortran was the main language used in science and engineering. Pascal was also used, and I picked up Pascal. The Computer Science Department asked for Modula 2 support and I ended up learning and supporting Modula 2 on the CDC mainframes.
At KC I ended up providing C++ training and support in the mid 1990s. Java training and support followed fairly quickly.
I became self employed in 2003 and added Python as people at the https://www.awe.co.uk/ wanted courses on it. I’ve provided Fortran and C++ courses for AWE.
I picked up C# as well in the early 2000’s. A number of companies I’ve provided training for are Windows based and C# is used a fair bit by science and engineering users on a Windows platform.
I’ve used SQL a fair bit as well. I’ve had 2 secondments to the UNEP https://www.unep.org/ and worked on 2 editions of their environmental data reports. All of the scientific data handling was done using SQL conformant dbms’s.
My recommendation would be Fortran, C++, Python and SQL.
At the end of my PhD in Imperial I made a push and contributed to the Graduate School material for Fortran (OOP, C-Fortran interoperability, build systems, etc.). Fortran is alive and well in the College, but I also know a few instances were codes were re/written in C++ to avoid dealing with Fortran. So from what I could tell Fortran development in Imperial has shrunk.
My experience is that you don’t have to hide Fortran, but if that is the only experience you have, I do not recommend to lead with that, but rather highlight your other experience, and Fortran is just an implementation language. If you don’t know C++, I recommend you learn it as well. And then you can send us some patches to LFortran!