5

I am a first year CS PhD student, I find myself spend 80% of my independent study time learning many computer skills rather than the contents of my research. Does it mean I am less capable than other peer students? Below are some examples.

  • I switched to MacOS from Windows, and I learned basic Unix-like commands on terminal.
  • Never used C++ before, so have to learn this new language. How to bind C++ into a Python module.
  • Learned to connect to remote server with virtual environment using SSH, and how to set up remote connection on VSCode.
  • How to manage projects with Git and GitHub.
  • How to make an executable bash script.
  • How to make better documentation with Sphinx.
  • Learning about scientific plot with matplotlib on Python.

Not that I never used those tools before, but because I used all the tools with a copy-paste manner as an undergraduate. Now whenever I do need some tools, they do not come to me right away, and I often have to spare some effort look up and "learn" them again.

6
  • 2
    It's not at all clear to me what you mean by a "large" amount of time. Commented Jan 17, 2022 at 5:18
  • What would you do knowing that you are in the 98th percentile (say) for how much time you spend learning these things? Commented Jan 17, 2022 at 5:23
  • 2
    Not sure you're less capable than peers but your list does raise eyebrows. What was the focus of your BSc studies? I'm a physics major and people would commonly be comfortable with shell (unix commands, ssh, bash scripts) and python (especially numpy/matplotlib) by the time they finish BSc. The rest sounds like a lack of hands-on work experience which may or may not be okay. In the US I would expect it to be more normal than in Europe. FWIW, I look up things all the time after quite a bit of work experience - if you expected to have it all memorized, that's not how IT/CS works, sorry.
    – Lodinn
    Commented Jan 17, 2022 at 6:49
  • 6
    I majored in Math. I took minimum course requirement to finish a second CS major. I was a bit technophobia back then, since I only started using computer for study and work as a a first-year college student.
    – Daydream
    Commented Jan 17, 2022 at 7:05
  • 1
    As a first year PhD student I had to learn all kinds of new things. More experimental operations and data analysis techniques, but.. You will be learning things the rest of your professional life.
    – Jon Custer
    Commented Jan 17, 2022 at 16:38

3 Answers 3

5

Given your background and the info you provided in your comment, this means that you are likely spending more time on this than your peers. This doesn't mean you are 'less capable', as you put it, but simply that you need to learn this aspect first before you will be able to make decent progress in your CS research. Your peers may already know this and will make some more progress initially.

This is not necessarily good or bad, that depends on how quickly you pick it up and how good your other research skills are (discipline, reading/understanding articles, doing the actual research). Try to learn from your peers who already have this experience. Everybody will have their strengths and weaknesses that they need to work on. No need to worry as long as you put in the effort.

2

I wanna add a bit to Jeroens answer. With you having majored in Math and not CS you will of course not have as much insight into the practical work of a CS-major, so will need to (re)learn more than your peers. You can still succeed but it might not be as easy for you.

I wanna go into a bit more detail regarding the list of examples you provided us with:

I switched to MacOS from Windows, and I learned basic Unix-like commands on terminal.

This can happen to anyone who isn't used to Unix commands so I wouldn't worry about this.

Never used C++ before, so have to learn this new language. How to bind C++ into a Python module.

No one knows every programming language. That is simply impossible but only knowing Python(I might be interpreting too much here) is quite rare so you will need to put some time into learning the language that is used in your current position. Tho I think it is quite unusual that you only worked with one programming language during your CS studies it is definetly not too bad if you know the theoretical basics of programming.

Learned to connect to remote server with virtual environment using SSH, and how to set up remote connection on VSCode.

This is in my opinion one of the more basic-ish things that one learns while working in CS. As this seems to be your first more practical positions in CS it is unsurprising that you need to learn some more basic things.

How to manage projects with Git and GitHub.

I learned this in my 2nd Semester of studying CS so my guess would be that most employers would expect you to know this already but it is not particularly hard to learn.

How to make better documentation with Sphinx.

Learning about scientific plot with matplotlib on Python.

These two things are somewhat specific to the work you are doing and thus it is not a big deal that you had to learn these things. Most people need an onboarding phase at a new job until they are familiar with all the tools that are used at that specific place. As Jeroen had already pointed out it might take you a bit longer, as you have not as much experience as your peers but it is nothing that you can't easily make up.

1

It is quite natural. Note that there is no reason to learn anything in a PhD if you do not think you should use it. In my experience, the first step when facing a problem that is of a scale or complexity where automation is useful, is to find whether there are standard tools for this, ask you supervisor and your colleagues, and if not, make it yourself. When programming, I prefer simple yet powerful tools in languages with large libraries and a just strong enough type system to make it easy to understand your own code half a year later.

For example, graph drawing is a difficult problem, even if all you want is a "nice" drawing of a planar graph. There are many tools, but most of them use the same techniques, which are simply not suitable for your case. I managed to make a quite involved toolchain in Blender, Mathematica, Python, and Yed, but there are probably simpler solutions with e.g. CGAL in C++

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .