I am a 5th year PhD student in mechanical engineering. My research has been about utilising a commercial Finite Element software to model a complex phenomenon.

For my research, I had to write small python scripts for post processing, many matlab codes to implement topology optimization algorithms (available as ready-made functions). I also wrote few Fortran subroutines to implement two constitutive equations to my simulations which involved working around the syntax provided by the software guidebook.

My concern is that, none of the programming aspects of my research required any implementation of numerical methods or any high level of programming. It was just using an available inbuilt function and wrapping a program around it to serve my purpose. So, the only skill set required here was a knowledge of basic syntax, a bit of logic and an idea of the big picture.

The numerical bit of the simulation is done by the commercially available finite element (FE) code. It's not a black box to me as I know the fundamental theory behind it. But its actually just knowing which buttons to press.

However, while I was searching for some good and relevant postdoc positions, they all mentioned one thing; "Must be an expert in some high level programming language."

My question is, what is the expectation of programming knowledge in an applied work as my research area? And what should my strategy be for the next half a year to make myself suitable for those positions?

  • 2
    The expectation will vary depending on the position and project in question. However, do note that "high level of programming" is very different from having worked with "high level programming languages", which you have done. – Anyon May 16 '19 at 18:45


To be honest, this sounds like the majority of programming that takes place in academia.

Obviously the exact skill requirements will be different for every position, so I can't give you any specific advice, but knowing how to link together existing functions in order to create a program that you want is a useful skill that not everyone has. Don't let your impostor syndrome get the better of you.

Your advisor or someone else in your particular field might be able to offer advice on what skills you should focus on developing.

Background: I recently finished an MA in a field where many researchers are using programming, but also many are not. I have a programming background, but many students with much less programming experience than I have were able to be successful in writing programs for their research.


Your description of your programming background doesn't seem like it makes you a good fit as an "expert" in any programming language. Those positions sound like they want some one who can do serious, perhaps large scale, implementation.

But it may be that the other parts of your skill set will seem more attractive for some positions. Sometimes an employer might be willing to give up A to get more B, but that is up to them.

Other than just focusing on what you do best and hoping, you can try to get that expertise in one of the languages you already know to some extent. You can probably do that by building something substantial and becoming thoroughly familiar with the arcane libraries of some language. Like any learning task, use practice and try to get feedback on your programs. Working with a team can help so long as the others can help you expand.

Your Answer

