On Learning Technical Skills for Your Research Career
Hey Neurons,
When I talked to some of you over the last few weeks, a topic that came up was the challenge of learning technical skills. Nowadays, most Master's programmes, PhD programmes, and postdoctoral positions require students to have a certain level of technical expertise. These skills can range from straightforward programming and more advanced machine learning to highly specific techniques related to the equipment used in your research.
Often, when we move from a Master's programme into a PhD, we do not have the exact background needed to tackle the challenges that arise. We do not know how to write a paper, conduct a literature review, or navigate the publication process. However, the challenge of learning technical skills may be the most daunting. Here, I want to give a quick overview of how to approach learning these skills. In this case, I will use programming as an example, but the same principles apply to almost any technical skill.
1. Work backwards from outputs and projects
Because there is so much to learn and so many paths you can take as a PhD student, it helps to be goal-directed from the beginning, unless, of course, your ambition is to complete a second degree. The first question you should ask yourself is: what technical or coding skills do I need for my specific project?
At the beginning, this can be difficult to determine on your own. Therefore, it makes sense to ask within your lab or programme what tools, codebases, or workflows already exist. For example, there may be a toolbox for addressing specific scientific questions or a collection of scripts used for analysing data. Your goal is not necessarily to reinvent these tools but to become capable of creating something similar. Once you have identified that goal, you can break it down into smaller learning objectives.
If we take the example of programming, you first want to determine which programming language is being used. In scientific research, Python, R, and MATLAB are all common choices. As you become more experienced, you will realise that most languages share similar foundations, making it easier to move between them. However, it is best to start small and focus on one language. If your lab has no preference, I would generally recommend Python, as it is currently one of the most widely used languages.
After choosing a language, complete a basic introductory course, whether this is through Coursera, Khan Academy, or another platform. The general platform matters less than many people think. The goal is simply to acquire the fundamentals as quickly as possible. Spend two to four weeks building a foundation in the language and then move on to project-based learning.
In general, I recommend project-based learning for anyone trying to develop a technical skill. We learn fastest when we actively apply new knowledge, especially when there is a meaningful outcome attached to it. A project can be something small, such as creating a few beautiful plots of your data, or something ambitious, such as building an automated literature review pipeline. Whatever the project, make sure it excites you and contributes to your scientific work. Learning in a vacuum is rarely effective.
When you learn in a project-based manner, the main question you should ask yourself is: What is the next thing I need to learn to complete this project? For example, if you want to build a deep learning model to analyse your dataset, two logical starting points might be a deep learning course in Python and a general course on data analysis. As you work through these courses, you should try to apply the techniques and skills you learn to your own dataset. Then, towards the end of these courses, you realise that you would like a deeper understanding of the mathematical foundations of deep learning to better interpret and write up your results. You can then pick up additional reading material to fill that gap and continue in the same way.
The reason this type of learning works so well is that otherwise you may spend days learning something only remotely related to your goals and never actually apply that knowledge, causing you to forget it over time. With project-based learning, you always follow the main question and identify the next step needed to move the project forward. As a result, what you learn is immediately relevant and can be applied straight away.
2. Ask your seniors
One thing I regret not doing more often during my Master's and PhD was asking senior students and researchers how they coded, whether I could work alongside them on a project, or whether we could do some pair programming. The reason I rarely asked was that I worried they might view me as incompetent. However, now that I am on the other side, I never assume a student's skill level. It varies enormously from person to person. Instead, I try to assess students where they are and help them improve from there.
Working closely with someone more experienced can dramatically accelerate your learning. They often know exactly what you need to learn, where to learn it, and which gaps in your understanding are holding you back. If you have access to good mentors, use that resource, even if you are a little unsure of yourself. If you lack mentors within your institute, consider attending a summer school, for example, one focused on coding, machine learning, or computational neuroscience.
3. Consider your long-term goals
Finally, think carefully about why you want to learn these technical skills. What do you want to use them for beyond your Master's or PhD?
If you are interested in industry roles that involve substantial coding, it is worth looking at job advertisements for positions you would ideally like to hold in the future. These listings often specify the technical skills they expect, whether that involves Python, SQL, Unix, cloud computing, machine learning, or other tools. You can then tailor some of your Master's or PhD projects to develop these skills alongside your research.
If you plan to stay in academia, it is still valuable to build a portfolio of your technical work. Early in my PhD, I created a GitHub account where I documented most of my projects. This has served both as a record of my work and as a public portfolio of my programming experience. Even now, as a postdoc, I often refer people to my GitHub when they ask about my coding background.
📜 Something to read
📜 Article - inspirethemind - I often read the Inspire the Mind blog and particularly enjoyed this week's article, "When Reality Feels Far Away", written by Merritt Millman. What this blog from King's College does especially well is bring together the experiences of scientists with the voices of people with lived experience of mental health conditions. I often find that scientific articles and books do not fully capture the day-to-day experience of living with these conditions, nor do they convey why I became so fascinated by psychiatric research in the first place. If you are curious about mental health research, I would highly recommend giving this blog a read from time to time.
🧠PS: I am considering working more closely with a small number of Master's and PhD students, with the goal of accelerating your progress towards completing your degree, publishing one or two high-impact papers, and making the research journey as smooth as possible. If this sounds interesting to you, feel free to fill out the audience survey below.
