I am a postdoc helping in the supervision of a PhD student who is finishing his 2nd year now. This is in Europe, meaning the student came in with a MSc degree and these 2 years have been of research. "Helping in the supervision" actually means here that my professor is nominally appointed as supervisor but I am doing all of the actual supervision (my professor is not familiar with the details of our project, just the "big picture").

The project is on computational physics/chemistry, and the PhD student has a background in chemistry with no prior computational knowledge. At the time of hiring we were under pressure to get the project going and complementing my physics background with someone who actually knows chemistry seemed like a good idea back then. Also the student was very motivated.

I have been spending a large amount of time teaching this student lots of physics and programming/scripting, which is needed to carry out the project. I assumed I would need to spend a lot of time at the beginning because of the background mismatch, so that was no problem. I thought things would improve with time. Unfortunately, they have not. The student is terrible at any kind of programming and has a lot of trouble learning new concepts, but what worries me the most is his attitude.

He basically is obsessed with getting results but is overlooking learning, in the form of reading books and papers and working hard on a problem for a period of time. If I tell him to "bang his head against the wall" for a couple of weeks trying to crack a problem before seeking advice from me (like we all have done during our PhDs), he gets frustrated after one or two days and starts sending me lots of desperate emails begging for me to intervene. This is a "gimme teh codez" kind of student, looking to avoid any problem which is of any real difficulty. I spend long meeting sessions explaining the theoretical and practical details of some approach, but he only seems interested when I write code that he can copy paste and use to get results (without even understanding the code, let alone the underlying physics).

Because of this I have to do lots of debugging and finding the same little (and large) mistakes that arise now and again because the student does not understand what he's doing. I have discussed many times with him that he needs to focus on understanding theory and code, instead of just getting results. But this is to no avail. I get the impression the student wants to do a technician's job rather than a scientist's job, but still get a PhD out of it.

As a result, I find myself working personally on any part of his project which has any hint of difficulty in it, spending way too many hours a week doing supervision, and getting increasingly frustrated at the lack of progress on the project. At this point, it would be fair to say that I could myself get everything he has to do (and more) done just in the time I spent meeting with him.

I have brought some of these concerns up, but the student won't accept they need to adjust how they work, instead claiming the tasks are too complicated (believe me, they're not), the professor does not help enough, the project is not well organized, etc. I don't know what to do - this student is getting easily 10 times more help than I did during my PhD (and I had a good experience).

To complicate things, I am just a postdoc so I have not a wide experience supervising different students that would tell me whether this case is common or isolated.

Am I expecting too much from my student? Is the problem I'm having a common one? How can I improve his attitude towards learning and working? How to deal with a bad research student?

  • 1
    Comments are not for extended discussion; this conversation has been moved to chat.
    – ff524
    Commented Oct 22, 2017 at 2:06

13 Answers 13


Since I have been that student at the beginning of my PhD, I think I can give you some perspective. I was very motivated when I started, but I didn't know anything about research, so I lost my motivation when I had to be on my own.

I tried the same approach as your student with my PhD adviser, and he told me he's not going to do my work or homework because I have to be able to do everything myself. Obviously, everything I did as a PhD student, I can still do now, so it worked.

But, you have to establish your boundaries. You have to set some discipline, and the first thing is to reduce the interaction with your student. Set a meeting, once a week. One day before the meeting, your student should put in writing, briefly, what progress he made, and what problems he encountered -- that should be discussed in the first half of the meeting. The rest of the meeting will be you telling him what needs to be done next. You should not talk with or help your student outside these meetings, and you should ignore those abusive "help now!!!" emails he's writing you.

If your student just wants to do his job quick, as you describe, you have to realize his output won't be something you can rely on. You need to give him two types of assignments. Some imply things he already does well, so he doesn't lose completely his courage, and the others imply him learning new stuff. The latter have to be easier. You do not help him with them beyond suggesting papers or books to look things up. In case of programming, suggest SE for him to look for help, and give him some examples to get him started and nothing else. Under no conditions you should do his work.

There are things you should demand from your student. If he has to present data to you, the data should be in the format your group is already using, if there is code that he needs to write, it should be documented, and he has to present tests that it's working. If you assigned him to read a certain paper, you have to make sure he read it. If you told him to search for literature, he needs to be able to discuss what he found and how is that relevant for the project and so on.

Since you are a postdoc, you probably can't enforce things properly. If you were his adviser, you could tell him to follow your discipline, or find another adviser. As a postdoc, you could go to the boss, tell them about what's going on and that the student consumes too much of your time. Tell them you are thinking of setting a discipline and ask them to back you up, especially since you are doing their job. Anyway, whatever you do, once you set your new set of rules, don't let him cross them, or break them yourself.

Edit - in response to @CaffeineAddiction comment claiming that, as an adviser you need to introduce the student to the basics.

The job of the adviser is not to introduce you to the foundations of whatever field. Part of that job is to teach the student how to introduce themselves to the basics. In other words, you don't teach the man to fish, you teach the man to teach himself how to fish. The basics should have been covered in classes. If they were not, you do have to make a compromise, and intervene when the student seems to have a block and doesn't make progress. But, you do that simply because you don't want to lose the student.

That's what I do. If my student has no background, I give him an easy test case, I suggest them a class to take, I recommend a book, or two, and give them one of the not so complex code that works. The code is a model, and might contain a few layers of complexity. My job is to make the student aware of this, and guide them to search for the knowledge they need to improve the code, or write their own.

I took the code as an example, since that was the original question. But, when you start research in my field, you don't get a code. You get a paper with a bunch of formulas. To understand those formulas, you need a few years of reading textbooks and other research papers. It's very easy to get lost in the process, in other words, spending 6 months on trying to understand something completely irrelevant. The adviser's job is to offer limited guidance to understanding that paper, help you recognize your blocks and address them. The heavy lifting is still yours.

As far as I understand, there are only two valuable skills that an adviser is responsible to teach a PhD student. The first is to teach the student how to learn on their own a completely new subject. The second skill an adviser must teach is how to do research. Many advisers skip the first skill because of many reasons, but mostly because of the lack of time. Then they complain about students with technician mentality. But, learning that first skill, also teaches you the right attitude towards the unknown, which is essential in research.

  • Your third paragraph is very similar to a scrum / agile methodology. You have a daily standup that is nothing more than "Yesterday, I _____. Today, I plan to _____. I am blocked from ____ by ____." Takes no more than 30-60 seconds per person. It's useful for most people to write this down or say this because it forces you to at least have a general direction for the day. You also get a trail of "I was hoping to ___ and ___ today. I did those. It was a good day." Or "I was blocked from doing ___ by ___, but I was able to resolve the block by ___."
    – corsiKa
    Commented Oct 24, 2017 at 17:17
  • I think talking explicitly about the importance of being independent is essential. For example, I come from a culture where people are used to being told how to do things rather than what to do. It took me some time to adapt. But I realized it is a problem only when my bachelor thesis supervisor told me explicitly that I'm expected to be more independent. Your student could be coming from such a culture and simply does not comprehend that he's not as independent a he should be. Commented Oct 24, 2017 at 18:23
  • 7
    I am a BS in Comp Sci, taking someone from another field and throwing them at code is a recipe for disaster ... even within my field programmers with less than 2 years of experience are not to be trusted. Your student most likely doesn't have the foundation he needs for computer science ... maybe instead of doing code for him instead introduce him to very simplistic parts of the foundation aspects of computer science ... like flow control, data structures, and abstraction. Maybe point him at the first 50 or so problems of projecteuler.net ... teach the man to fish and you help yourself. Commented Oct 24, 2017 at 20:59
  • To answer to your edit : then maybe the advisor need to help the student in settings up deadlines, like "you have 6 months to learn what you need into programming for our job". With eventually a bit more details "1st month, languages, data structure, basic algorithms,...". I'am the kind to panic if we don't tell me that I have two weeks and that I'am stucks since two days. Also because programming is such large fields, he can help the students to focus on what he really need (forget the web, forget the UI, you need raw calculations, loop through datas, recursion)
    – Walfrat
    Commented Oct 25, 2017 at 13:28
  • @Walfrat Setting up realistic deadlines is, to some extent, the adviser's job. What you are talking about, is what I would tell the student during our bi-weekly discussions. It would be unrealistic for me to expect results before the students are trained to some extent. You are also right that you need to help the student keep focus on what is important, but keep in mind that this is also a skill that they need to acquire by doing research. So you can help the student with that, but you can't overdo it.
    – user21264
    Commented Oct 25, 2017 at 15:52

I am currently on my second PhD since I dropped out of the first one. I was the "nightmare student," and so I'd like to give you my perspective. This may not be relevant, but I started out as highly enthusiastic and motivated but got disillusioned as the level was much higher than I anticipated. Like your student I was moving into a physics field with a different background (biology) and had no real coding experience.

I experienced something that can only be described as "turbulence." I became so paranoid and insecure that I couldn't do anything by myself. My supervisor and project postdoc would send me some code, or a task they needed to do, and I would freeze. I'm an intelligent person but my brain couldn't focus. I'd read Stack Exchange and be unable to implement the solutions. If a solution varied even slightly, I wouldn't be able to implement it.

There was some underlying psychological problem. Insecurity, anxiety, stress -- whatever it was, I was a nightmare to be around. I never became independent and the more boundaries people tried to put up with me, the worse I got.

When I eventually quit, it was the greatest relief of my life. My postdoc hated me and was openly criticising me for my lack of independence. For some people that works, but for me it made me freeze even more. I'd panic, I was desperate for validation, and just couldn't concentrate.

Objectively I agree with every other comment here: set boundaries, he needs to become independent, don't exhaust yourself. But for me, those responses made me worse. Deep down I didn't think I was capable but couldn't admit it to myself so was stressed out and needy. Paradoxically, what would have helped me most would have been to be reassured that I could do it as a person. E.g., that I was fundamentally worthy and deserving of my place in the department, and that my weaknesses were not inherent parts of me, but skills that could be overcome.

Sounds so stupid!!! I'm sure many people will feel cynical about that, with good reason. But if I'd had that space to feel emotionally secure I would have felt more grounded, safe and able to solve my problems. In the end, feeling valued and secure would have saved my PhD when being criticised only made me more insecure, but that's just my experience. I know this must sound ridiculous. It was just my situation.

The only positive for me is that I now know everything to avoid on my second PhD. But it would have been preferable to get here without wasting 3 years' of public funding and annoying a lot of people.

  • 43
    I don't think it sounds stupid at all. Furthermore, I think this answer is at least as valuable as the other ones which do not really take into account the human side of the question.
    – YYY
    Commented Oct 20, 2017 at 14:16
  • 25
    I think it's a very important point you make. If the adviser is worth his salt, they should recognize that you have some psychological hangup and try to help you address it. I also had many of my own, and most of my advisers didn't even realize.
    – user21264
    Commented Oct 20, 2017 at 16:23
  • 22
    This is a very valuable perspective. Probably worth noting that "set boundaries" and "provide positive and hopeful comments" are not necessarily mutually exclusive!
    – AJK
    Commented Oct 20, 2017 at 22:51

I get the impression the student wants to do a technician's, rather than a scientist's, job but still get a PhD out of it.

From what you've described, this seems like a very accurate assessment, and it's the crux of the matter. You need to get this message across to your student. Magicsowon's answer does a great job covering the practical aspects of how to (attempt to) get the student out of their bad habits. I think also explaining the situation to them very clearly is an important component. You have already brought up some concerns with him, but perhaps there is room to be more blunt/direct. You need to get the following points across:

  • The difference between a technician and a researcher, as alluded to in the quote above. A PhD is not awarded just for putting in a certain number of hours. It is a certification that you have the ability/potential to be an independent researcher. Merely working through a set of tasks with one's hand held throughout does not demonstrate that ability.
  • Someone who has been showing no initiative and requires that much help is going to really struggle in their thesis defence.
  • Difficulties such as "tasks are too complicated..., the professor does not help enough, the project is not well organized" are ones that will crop up throughout a scientific career. If the student cannot find strategies to cope with them, they cannot be a successful scientist.
  • 4
    No offense but many PhD students are like that "...getting PhD with technician mentality..". Great answer (+1).
    – Coder
    Commented Oct 20, 2017 at 14:08
  • 1
    Is this 'project' the student is working on really synonymous with their full capacity as a PhD student? I think it unfair of both you and the OP to confound the two competencies. If you hate your boss, your job, or programming that doesn't mean you won't be a world-class doctor of chemistry. The OP is telling us how the situation is inconvenient for him, not what the graduate student is experiencing. Rather than attacking (and then dismissing) the student's capacity the comments here should be about mediating the working relationship.
    – Quixy
    Commented Oct 24, 2017 at 4:53
  • 1
    @Quixotic I take your point; sorry if my answer came across as excessively harsh. However, while you are quite right that this student may have abilities that are not coming to the fore in the current project, unfortunately for them, the current project is what they are going to be judged on. Commented Oct 24, 2017 at 8:15
  • 1
    @User2390246 And I understand your point that intellectual weakness in one area may be predictive of overall deficiency, however university employees are meant to be managers and expert educators. The OP is not demonstrating traits of either, nor are most commentators; everyone is venting and predicting student doom. Just because the OP is in the position of authority it doesn't mean that he is doing a good job or his judgment of the student is accurate. The student deserves a structured, ethical environment.
    – Quixy
    Commented Oct 25, 2017 at 2:35

Some people just don't get coding. If he's one of them, he's in the wrong PhD.

With a chemistry background he probably hasn't written any real code since school (and then only if you're lucky), but might have done a "computational chemistry" module writing simple scripts for a pre-written model or commercial software. Signing up to a computational PhD was probably an error. I've found that people don't realise how unsuited to coding they actually are until they really have to do it.

At this point you've done what you can and it's up to the real supervisor. You may need to document the bits you've done that the student is relying on It's possible he's heading towards a form of plagiarism if you wrote the code and he claims or implies that he did if/when he writes up, but even setting that aside if the progress he appears to be making is actually based on work you did, it's time that was made clear.

The supervisors options are rarely restricted to making him quit or you spend even more time on the project. There's often the possibility of changing the project to something more suitable. You could take some time to think about what skills he does have, and whether there's a role for them in your group, especially if it's not a purely computational group and there's experimental/theoretical work that would be more suitable. You don't have to find a solution but as a responsible postdoc it doesn't hurt to look for some positive possibilities.


The project is on computational physics/chemistry, and the PhD student has a background in chemistry with no prior computational knowledge. [...]

I have been spending a large amount of time teaching this student lots of physics and programming/scripting, which is needed to carry out the project. I assumed I would need to spend a lot of time at the beginning because of the background mismatch, so that was no problem. I thought things would improve with time. Unfortunately, they have not. The student is terrible at any kind of programming and has a lot of trouble learning new concepts, but what worries me the most is his attitude.

As someone with a master's in computer science who works as an industry programmer, red flags went off for me as soon as I read this in your question - but not for the student. For the way you're managing him.

Programming is an exceptionally difficult skill to learn. I would say it is equally as difficult as learning how to do research - but it is also a complete skill in and of itself. In order to get to the point I am now, as a professional programmer, I took four years of programming classes in high school, four years of a CS program in undergraduate, over 12 months in total of internships, and two years of grad school. To get to the point you want your student to be at, where I could teach myself what I needed to to write my own non-trivial programs, took me at least through high school and an entire summer spent teaching myself how to write Android apps. I know that you've gone through a similar process yourself, so this is just a reminder to you, someone who is now on the other side, that programming is very difficult to someone who doesn't have much experience.

If you want your student to be successful, you need to step back and give him a chance to actually learn how to program. The good news is that, since he is a grad student, he is both smart enough and at the level where it should only take a semester or two before he starts being productive. (Emphasis on starts - he won't be at the same level you are for years, for better or for worse.)

From your question, you've been teaching your student how to program for the last two years. I'm very glad to have read that. On my first read, it seemed to me that you had largely just thrown him into the deep end and asked him to swim, and there's absolutely no way that could have worked. However, to be honest, I still believe that programming is a difficult enough skill that you're not going to be able to teach it to him yourself. This isn't a failing on your part at all. It's just an acknowledgement that you're busy with your own research and the other aspects of managing this student, so your capacity to teach is limited, and your student is also taking classes, learning to read papers, learning how to carry out research - his capacity to learn programming on top of all of that is also limited.

To make sure he has an opportunity to learn programming in a way that overcomes those limitations, I strongly recommend that you ask him to take introductory computer science classes. He can probably skip some of the earliest courses and jump into 150 level courses. Then, while he is taking those, please stop giving him as many tasks that require him to be a productive programmer for a while. Is there other work he can do that exercises more of the background in chemistry you originally hired him for?

I certainly understand being frustrated that your student isn't being productive and doesn't seem to be willing to learn on his own. My point isn't that you should tolerate any student who isn't being productive. My point is that, in the specific situation you've described, I strongly suspect that the core issue is you're expecting a bit too much out of someone who has not had the time to learn a very difficult skill.

To emphasize, I think the reason you're expecting too much is because you're asking someone who has no background in programming to be an effective programmer on top of doing research. Either one of those presses an individual to their intellectual limits. There are many other things it is reasonable to ask a student to learn on their own - how to carry out an experiment, how to use the correct statistical analysis, etc. Programming is sufficiently difficult that it's in its own category, though.

If, after taking programming courses, your student is still not being productive, then I think your case that the problem is with the student's attitude is much, much stronger.

ImportanceOfBringErnest commented on my answer:

I think there is a big discrepancy between what a physicists call programming and what a programmer call programming. Mostly, if you show a code some physicist has written to a real programmer they start crying and run out of the room. So I would interprete the skills the questions talks about as really really basic and the real problem seems to be rather the attitude of the student.

I absolutely agree that the student does not need to be at the level of a professional programmer. He only needs to be able to bang out a script in a few hours that calculates some value and is done with it. Even so, I still strongly believe that it is unreasonable to expect a grad student to reach that late beginner level of programming ability on their own.

In grad school, I was a TA and often helped students with introductory CS homework. I have seen students starting out their programming careers take 10-15 minutes doing things like determining which arguments to pass into a function or writing a for loop that iterates over an array - and that only after banging their head against the problem until they realized they weren't going to get it on their own, sought me out for help, and got some hints from me. This stuff is truly very, very difficult to pick up, and it takes time and patience on the part of everyone involved for a new programmer to be successful.

Introductory programming courses are designed to guide students past the true beginner level to the point that they can write basic programs on their own. This is what the OP wants. The OP's student doesn't need to get a full computer science degree or be able to architect an enterprise system. But I still strongly believe that the only reasonable way to get the OP's student to the level the OP wants him at is to give him a chance to go through at least one introductory CS class.

  • 15
    I think there is a big discrepancy between what a physicists call programming and what a programmer call programming. Mostly, if you show a code some physicist has written to a real programmer they start crying and run out of the room. So I would interprete the skills the questions talks about as really really basic and the real problem seems to be rather the attitude of the student. Commented Oct 20, 2017 at 21:47
  • 4
    I definitely agree that the OP's student doesn't need to be at the same level as an experienced programmer to carry out the research asked of him effectively. But I think getting to the point where you can figure out how to write a non-trivial program on your own, even if it is ugly code, is still more difficult than most of these answers assume. It takes time to wrap one's head around how a computer "understands" a programming language, how to break a problem down into what it's possible for a computer to do, and to really grok ideas like functions and working with arrays/classes.
    – Kevin
    Commented Oct 20, 2017 at 22:01
  • 5
    Yes, but there is a problem with expectations. In the US, you aren't expected to have ever written code before, but if you're going for a PhD in computational XYZ, and you don't know beforehand that there will be scripting and/or development that's bad. Worse when you are unwilling to sharpen the proverbial saw in order to improve your productivity because it interferes with doing research every waking minute. That is the attitude a lot of people have. It's not that they can't, it's that they don't want to. Commented Oct 21, 2017 at 17:34
  • 3
    @Kevin That depends on the student. I did a degree in chemical engineering where the only formal computer "training" was a 2 week course in Fortran. I went on to become a professional programmer having taught myself Assembler, C, C++ and Java mostly from just reading textbooks and writing programs in my spare time while I was learning. Commented Oct 21, 2017 at 21:28
  • 2
    @ImportanceOfBeingErnest Considering the fields and we talk about computations, they may have to learn specific stuff, like "how to do when Matlab "\" is not enough". And that is damn hard. As said Kevin, I though totally the same when reading OP's post. The student couldn't know it would be that hard, OP and his supervisor should know it. Furthermore lerning programming don't require only to read, it requires a hell lot of practices with failures in order to be able to understand throughly how to do things right, basically, it's very time consuming.
    – Walfrat
    Commented Oct 24, 2017 at 13:18

I have been a PhD student, and then an advisor. I had an excellent advisor, and learned a lot from him. The key to being a successful advisor has two major components:

  • Know when to kick ass
  • Know when to provide encouragent/comfort

Those are your only responsibilities. Basic skills are the responsibility of the student. You can discuss ideas with the student, help with insights, and set expectations. If the student fails to meet expectations, he is on his way to being a former student long before he hits thesis mode. You are not responsible for saving him by doing his work.

What is critical now has already been suggested: meet once a week, set goals, in writing, and demand progress reports in writing. Email works very well for this. It also provides a CYA audit trail, protects you from being diagnosed as failing because you are doing his work as well as yours, and makes it very clear that his failure is his own problem, not yours. So when decision time comes, he can be let go because there is a written record of his failures. This is not unlike the requirements for employee evaluation that you will face if you end up in industry.

It is also worthwhile to keep time sheets on how you spend your day. I kept a simple text file. This includes time you have spent “doing his job”, that is, writing code that is critical to you but he was supposed to have written. The “virtual paper trail” is important. As observed, a PhD student is expected to work well on his own. Not have you do all his work for him.

I once had a student who was not even capable of basic freshman tasks and apparently earned their undergraduate degree by letting others do their work for them. I went to their supervisor and explained this, but nothing came of it. It took another year of wasted salary before they fired by a new supervisor.

You are not doing your grad student any favors by doing all his work, you are not doing your school any favors by covering up his failures, and you are not doing your profession any favors by churning out someone deeply unqualified to be a professional. And you are not doing yourself any favors by doing two jobs. It is time to fledge this bird.

You can’t save everyone. Some people cannot be saved because they do not understand (or refuse to admit) how unqualified they are.

  • Yup I totally agreed with the last paragraph. Some people just cannot be saved.
    – PDElearner
    Commented Dec 22, 2021 at 5:19

You say you are based in Europe, but the PhD system of mainland Europe is much different to the UK, where I live. For example I completed my PhD in 3 years, whereas my European colleagues generally tend to spend (at least) 6 years on a PhD, if this is the case then this student is still just starting out and could probably afford to take some time out to catch-up on the basics. Even if you are in the UK, 3 years to complete is an absolute minimum it would benefit him to learn these skills even if it means delaying thesis submission.

Perhaps there are some external courses for the student to attend on the more technical skills like programming, I had £3k per year to spend on training during my PhD. I would also imagine there are undergraduate courses at your institution which the student can 'sit-in' on the lectures in physics and programming, I would encourage him to attend.

Rather than giving him direct answers to his questions and coding demands, point him in the direction of published work (papers/textbooks) on the subject, be ready to discuss these with him after he has had time to absorb them (not just to read them, but to really understand the authors message). Make clear that it is not your job to do his work for him, and that he will become a much stronger scientist if he perfects these skills now.

What happens when he starts writing his thesis and he still doesn't fully understand what he is doing, the method used, and as an extension the results. He will either misrepresent results or simply miss important conclusions, unless you also write his thesis for him.

Don't get me wrong, I am all for supporting the student, especially if it is a difficult or technically challenging project, but babying them will just result in more pain in the future.

  • 10
    I am not sure which Europe you are talking about, most PhD in Europe are 3-4 years. Italy is 3 years, Switzerland 4 years, France 3-4 years, Germany 3-4 years. Commented Oct 20, 2017 at 12:10
  • 3
    @user4050: many places are in practice minimum 5 years. (dont forget 20% "institutional duties" which are supposed to pay for the employment, and which often can accidentally take up a bit more than that percentage.) Commented Oct 20, 2017 at 12:15
  • 4
    @mathreadler I don't see where you got this 5 years information, I have never seen that and I am familiar with different systems. Commented Oct 20, 2017 at 12:33
  • 3
    @user4050 : Where I got that information? You must be kidding. I have seen many students on that five year journey. 5 is the minimum, quite many who end up professors take 7,8 or even up to 10 years. Commented Oct 20, 2017 at 13:01
  • 4
    @user4050 In Belgium, a PhD can take 6 years if you are hired by the university as teaching assistant.
    – Arnaud D.
    Commented Oct 20, 2017 at 15:46

As someone who is a PhD student in computational chemistry who was new to programming when I started the PhD: Please try and be aware how alien and different coding, computer science, computer theory, etc is to someone who is used to being a physical scientist. It was a whole new world when I started and it was very difficult to motivate myself to put all my focus into learning coding and programming, when what I really felt I should be doing (and what I wanted to do) was learn about atoms and molecules. It's difficult to get over the shock at being in a position of serious research, and yet knowing basically no more than a high school senior (about coding). Most grad students I know in my friend were in similar positions as me; very, very few were CS people beforehand or had done anything more than screw around in perl or python for a few hours. I don't know how long your student has been with you, but there's a huge barrier to entry in this kind of situation, so don't set your expectations too high in regards to coding learning speed + enthusiasm, especially if they seem genuinely interested and motivated to learn in other areas.


You had a lot of great a "kind" answers which may work for most of the people, but success isn't for everyone. It's a fact you've gotta admit.

I get the impression the student wants to do a technician's, rather than a scientist's, job but still get a PhD out of it.

As sad as this would be for him, he may not be built to be anything else than a technician, and if that's the case you need to let him fail. He'll need that lesson the sooner possible.

  • If his field requires programming, how would being a technician change that?
    – JAB
    Commented Oct 20, 2017 at 14:21
  • @JAB I don't think his field necessarily requires programming, although in more and more technical jobs it's a very helpful side-qualification; neither is programming the main problem OP identifies. It's the fact that the student lacks the endurance to delve deep into a topic where he needs to learn a lot on his own before he can apply his knowledge and get some practical results. That's why he seems to much better fit a "technical" job, where tasks are typically smaller and following proven paths. Commented Oct 20, 2017 at 15:58
  • @JAB He's coming from the chemistry field and is trying to go further. To go further he needs to learn to get out of his confort zone, and learn new things even if they're not directly related to his field. Here, when the OP says "I get the impression the student wants to do a technician's job" he's speaking about a chemistry technician, aka doing lab stuff. So this is my point, maybe he's just not built to be more than a chem-lab dude, or simply not ready yet.
    – Rolexel
    Commented Oct 21, 2017 at 17:50

No, you are not expecting too much from your student. Your expectations are in line with the basic concepts of a PhD pretty much anywhere - which requires the student to be capable of independent learning and problem solving, and an understanding of the underlying fundamental concepts of his technical work. It appears you have taken the time and effort to steer him in the right direction, to no avail. If you were a PI in this situation, I would have suggested a long and frank discussion, and a discussion for the student to leave the group. Perhaps he is not suited for theoretical work, or any kind of PhD level work - in either rate he would not be a suitable fit for the current group. (Perhaps a reprieve can be given to a new PhD student, but two years is too much.)

However, as you are not the PI, perhaps the best you can do now is to establish basic but strict guidelines. As a previous answer pointed out, set times for meetings per week or bi weekly would be sufficient. Don't cave in an answer to emails between that time, but save them and address them during the meetings only. Finally, avoid giving him any kind of code directly but only provide high level direction and advice on how to proceed. By applying a 'denial of accessibility' you will have to force the student to learn on his own.

You should not have to sacrifice your own productivity to help a lazy student, and you should definitely want to avoid doing his work for him but letting him take the credit for it!

  • 3
    -1 I strongly believe the OP is, in fact, asking too much. I explain why in my answer. In short, programming is roughly as difficult as research, and it doesn't seem the OP has given their student quite enough space to get caught up on programming. That's not a matter of meeting expectations at all, and neither is it "in line with the basic concepts of a PhD."
    – Kevin
    Commented Oct 20, 2017 at 19:31
  • 4
    @Kevin it appears you are viewing at this from the perspective of a professional programmer. I'm a computational chemist and the person being described is also in the field of computational chemistry/physics. I am also familiar with computational chemistry groups which range from programming heavy to programming light. In none of these situations does it take the seven years you have described in order to do basic research in the field. Two years spent under the guidance of a hereto patient guide (OP) should be more than enough to get started independently.
    – user44476
    Commented Oct 20, 2017 at 20:08
  • 1
    Furthermore the issue at hand is the attitude of the student in question, which suggests that even if someone were to give him several years 'alone' to spend time learning programming (the idea itself is patently ridiculous), he would much rather be given the code and obtain results from it. 2 years is roughly the time to candidacy for most chemistry PhD programs, and almost half of the total 4-5 years of a PhD, fyi.
    – user44476
    Commented Oct 20, 2017 at 20:15

Your best option is probably to guide him in a way that both helps him go forward with his work and helps him develop the resilience and perseverance that are part of a good scientist.

The best way I see to do this is to link him a set of papers containing what is needed for him to reach the solution he asked you for, maybe even in the form of a query on one of your field`s research archives.

This way you avoid being "milked for teh codez" while still being a competent supervisor, teaching him how to approach problems in a correct manner.


My professor is nominally appointed as supervisor but I am doing all of the actual supervision (my professor is not familiar with the details of our project, just the "big picture").

No one is benefiting from this supervisory relationship. It's time to pull the plug. Tell your professor that it's not a good fit and that you can't supervise this student any longer. If he wants more detail, tell him that the student

  • does not have prior experience with programming, is not applying himself to learn programming, and doesn't have a natural aptitude for it

  • doesn't understand the underlying theoretical underpinnings of the project

  • is not able to work independently

If at some point your professor assigns you a different student to supervise, please don't wait so long to report back about how things are going.


Most of the 'answers' here suggest that the post-doc "save himself," but they do not provide constructive manager-employee conflict resolutions.

I want to outline some suggestions. Try to honestly, objectively assess the following:

  1. Does your employee have a learning/language barrier? If yes, seek specialist assistance for clarifying instructions to the employee.
  2. Does the employee have adequate resources to understand and execute instructions? (Consistent computer, software, textbook, tutorial access).
  3. Is the employee failing to perform due to poor scheduling? If yes, is it due to his own choices (procrastination, under-estimating time needed), or because management has failed to allocate appropriate planning stages for the project?
  4. When confronted with a new problem to solve, is there a consistent stage at which he is failing? Consider requiring documentation or a lab journal for employees so that they can demonstrate what steps they took to resolve issues.
  5. Is the employee/manager conflict emotional? An employee that dislike his boss may engage in active sabotage, while a manager who personally dislikes his employee may engage in exaggerated fault finding.
  6. Does the employee have adequate pre-requisite training/skills to perform at the level required? Consider having a third party participate in a meeting to determine if you are being unreasonable in expectations. If employee has skill inadequacies have a skill-set expert advice on a learning plan, do not invent one on your own. Refer employee to appropriate tutoring, courses, or online tutorials where he can be held accountable for completing a training session.

Motivating and correcting the student should come, once a week, in timed, structured meetings. The student should also be given time to state his own concerns, ask questions or offer solutions without interruption or ridicule. Consider the following:

  • If this is a chemist, perhaps the tutorials closer to their area of expertise.
  • If the programming is unrewarding consider offering short-term incentives, for example allow him to present a successful model or GUI to undergraduates and get a round of applause for it.
  • Find bait. If he is publication motivated, use it. If he enjoys educating others, have him write a tutorial, if he likes editing graphics, assign those.
  • Consider partnering the graduate student with a successful undergraduate who has programming expertise. Ask the graduate student to provide chemistry insight in exchange for the undergraduate learning/practicing programming at a more advanced level. If possible, hire an undergraduate to collaborate with the graduate student. Having an ally or a position of authority may invigorate both.
  • Praise what can be praised. When the student does solve a problem or does something that demonstrates initiative signal gratitude and do not be sarcastic or condescending.
  • Network the student, if possible, with someone who could have experienced a similar learning curve and motivation challenges, but who is now successful.

When positive reinforcement fails, or falters, here are some appropriate negative reinforcement techniques:

  • Document your weekly expectation and give instruction on what the employee should do to "self troubleshoot" before the next meeting. When reviewing work consider if step 1 and 2 were taken, if applicable; if 0/2, report to overhead supervisor.
  • Ask employee to be responsible for correcting his own errors. Provide annotated code, not corrected code such that he has to go in and implement corrections directly.
  • Provide task specific deadlines and meeting agendas (even if one-sentence long e-mail). If your employee is failing to respond to milestone requests through procrastination or disrespectful attitude to your position, document it and show this to the professor and/or department chair. Harassment or personal attacks are not okay.
  • Ask the student to present/summarize the purpose of individual experiments or coding that is being performed. If there is a failure to comprehend the project, ask a (qualified, objective) third party or additional participant to provide feedback. If the third party agrees there is a comprehension gap, report this to the professor.

I am not doubting that you are in a difficult, time consuming situation, but I do think you might be failing as a manager and educator if your two solutions are "do his work for him" or "fire him." Learn to manage, motivate, and document your efforts. After documenting the experience, allow the professor to make the hiring/firing decision.

You must log in to answer this question.

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