I did my master's thesis last month and have seen one excellent PhD position in my field. The title and the project description was very close to my master's thesis. My master's thesis relates to one of those standards which is very new, and I can guess the number of peoples which work on it are few -- especially those persons which did or are doing a master thesis in that field.

On the other side I got my degrees with honours -- both bachelors and masters. So I have good situation for that PhD position.

One of the requirements is strong programming ability, which I do not have. I am not so good in programming. (By the way in just 6 months, I can improve that). Also the place is top five (or maybe one) rank with high salary. I do not know whether I should apply for that position or not? I afraid my bad programming skill have a bad effect on advisor's decision about me.

What I should do?

A part of requirements is

... very good programming skills and experience....

which I do not have.

Also the professor is number one person in that field and kind person. So that is one of the most important opportunities in my life. I do not have those skills which are required to apply to the programme. But by that time, I will improve my weak points.

  • 9
    I do a PhD where 95% of the work is Matlab programming. In the lab, we are around 10. Almost nobody knew Matlab when they got accepted, even if practically all the work is done in Matlab. Try. Mar 23, 2015 at 13:12
  • @AnderBiguri thanks for sharing that experience.
    – M R R
    Mar 23, 2015 at 13:27
  • 2
    @AnderBiguri perhaps the requirements are to prevent bad software quality. If the OP applies, he should make a big effort to upgrade his skills before starting the position. Mar 23, 2015 at 19:02
  • 1
    @TemplateRex Definitely if he applies he should work very hard into getting those skills upgraded, however he should try. Mar 23, 2015 at 20:01
  • 4
    The answer depends on the position. I disagree with a lot of the answers below. I don't agree that it's boilerplate. If I advertise for something that specific, I want that thing. I don't agree that requirements are lower than industry. I do numerical modeling. I want someone who can code like a champ and understand the science for some projects. If that's the case, maybe move on. If not, apply. If unsure, maybe ask the professor.
    – Fadecomic
    Mar 23, 2015 at 20:53

12 Answers 12


I am not sure I agree with Enthusiastic Student. There are two points to consider here:

  • Do they really need a strong programmer, or is this just something that they traditionally write into their position announcements without giving it much thought? Frankly, in industry like in academia, job descriptions are often given much less thought than people seem to assume. In my old group, we basically had one boilerplate job requirements text which was used for all kinds of positions. This included pretty much the cited text, but we certainly had PhD students that were not good programmers and they still (sometimes) did ok.
  • Can you learn to program sufficiently, either before starting or at least within acceptable time frame after starting? This largely depends on how good a programmer they really need, how much you currently suck at programming, and whether you learn to program quickly or not (programming, specifically, seems to be one of those skills that comes much more easily to some than to others).

To figure both things out, you should get in touch with the professor or one of his students to get a feel for what their stance on these issues is. For some position, you really need to be an excellent programmer, and for those, there is indeed no point in applying. For others, being able to hack together a workable prototype in reasonable time is sufficient, and most people should be able to learn that. When contacting them, be diplomatic and don't tell them outright that you are bad at programming. Get a feel for what you are really supposed to do, and decide for yourself whether you will be able to do it or learn to do it quickly. Then decide whether to apply.

  • 8
    I would highly disagree with this answer. I'm currently an undergraduate at a top tier research lab that consists of mostly graduate students. Unless there is something spectacular about a candidate in our field (hardware, FPGAs, etc.), if they can't program, we don't want them. If the requirement is to be able to program, then there is probably some computational aspect and therefore you must be able to program. Mar 22, 2015 at 18:07
  • 15
    @SnakesandCoffee: sure, it sounds like your group is a place where strong programming is a non-negotiable requirement, and maybe that’s what OP will be told if they get in touch with the place. But as this answer says, it could also turn out that the programming was desired but not absolutely required — an applicant’s strengths in other areas could make up for their programming weakness. So it is certainly worth asking.
    – PLL
    Mar 22, 2015 at 18:40
  • 11
    @SnakesandCoffee I am sure there are positions where they really need a good programmer (my lab would be one of those), but that does not mean that a student should give up just because of a line in the job posting.
    – xLeitix
    Mar 22, 2015 at 19:39
  • 3
    @SnakesandCoffee There are tons of websites like Code Academy that dole out basic programming skills to complete newbies, free of charge, in a manner that is designed for people with no programming knowledge. I firmly believe that if my English major roommate was able to write a GPA calculator in Ruby in a day to win a $20 bet, that someone with a master's degree can do it too. High-performance computing, distributing computing, stuff like that sure, you need the skills. But if OP were doing anything like that, he would likely already have programming knowledge. Mar 23, 2015 at 16:30
  • 3
    @ChrisCirefice there is a big difference between monkey programming, where all you need is to add few numbers or iterate the list and a good programmer. The sites you provided are targeting people who want to impress their grandmother with "look grandma, I can add 3 numbers". To be a good programmer and you need way more than that and this transition does not happen over night (in fact a lot of people who are doing programming for a living for the last 5 years are not able to make a switch) Mar 24, 2015 at 0:31

You should definitely apply. Because it doesn't hurt to try.

  • If you are accepted, it's fantastic.
  • If you are rejected, the biggest lost is a possible application fee of less than $100 (in EU, the application is often free).

If you do not try, since you like this position that much, you may regret forever.

Note that the level of programming skills to be considered "good" in academia is very different, i.e. much lower, from that in industry. Any CS graduate student should be able to learn a new programming language and do some basic programming with it within 1 week. That may already be "good" enough.

  • 10
    "should be able to learn a new programming language and do some basic programming with it within 1 week." Not if you are not a decent programmer (in some language) to begin with. The OP's post sounds like he is not.
    – xLeitix
    Mar 22, 2015 at 15:20
  • 5
    I wouldn't call being accepted into such a program "fantastic". You relocate to a new city only to be stuck in a position you're not qualified for, where you waste everyone's time and likely won't be able to successfully finish your PhD. Mar 23, 2015 at 6:38
  • I'm assuming from the OP's question that he/she is not a CS grad student. I do agree that a CS grad student should be able to do at least basic programming in a week in any language, but that's precisely because they do (or at least should) have strong programming skills.
    – reirab
    Mar 23, 2015 at 16:15
  • 1
    And then professors are surprised when they see hundreds of unqualified candidates. Surely it does not hurt to try. But it does not hurt him to try, because it definitely hurts professor and hiring committee. The reasons of spammers is similar: it does not hurt them to send a few thousand viagra emails and you know what, that [email protected] has never told that he does not want to get such email (if he told, may be he was not sure). Mar 24, 2015 at 0:38

Do not worry that much about the exact requirements. The process of creating a job/position offer is the following:

  • the job: screwing screws with a screwdriver
  • the actual requirements: ability to twist your wrist

This does not sound cool/expanded enough so we add some more requirements:

  • experience with a screwdriver
  • business acumen to understand the implications of the strategy of the company
  • fluent English, German and Swahili - in case the purchase order for the screwdriver was from there
  • ability to convey an idea, in case one would need to do a PowerPoint on the usage of screwdrivers

Then come the candidates, usually interested in Liberal Arts or Musicology. None has seen a screw.

Then come you, and say that you are very good in production lines and have seen videos on how to use a screwdriver, and that it honestly does not look hard and you are willing to work hard to understand the subtleties of the job. Heck, you have even purchased a screwdriver to get some experience ahead of time.

The jury has not even seen the job offer, they know what they need and except if the experience with a screwdriver is an absolute must -- you look like a reasonable candidate.

There is of course the chance of the screwdriver maniac who has been doing this for the last 10 years, enthusiastic about the business consequences and having published a paper on that in Swahili (and then presented in with PowerPoint on a conference). Bad luck, he is a better fit but at least you tried.

  • +1 In my limited experience with (academic and industry) hiring, this is exactly what happens most of the time. Mar 24, 2015 at 7:14

Apply! That's how I got my first TA position (in another field though). I didn't have the required level of knowledge of certain areas but still applied. They trusted my abilities to read up on such stuff on my own (I had proven to be able at other occasions during my studies), so they gave me the chance. I caught up what I was still lacking and they were very happy with the result.

You seem to have a lot of potential since you graduated with honours. Mention this as well in your application. Show them that you are willing and able to catch up anything you still lack of.

They do not need you to fit perfectly but to be willing and able to work hard for the good of the institution and scientific progress.


I see two issues:

  1. You are concerned about not being perfect for the position. Nobody is perfect for any position. Put your name out there and let the lab manager or PI weigh your strengths and weaknesses against other candidates. A PhD program is for training scientists. If you already had the skills, you'd be applying for faculty positions. This is perfectly fine.
  2. You mention this is nearly identical to your masters work. This is probably OK for a PhD position, but you would typically be applying for PhD and post-doc positions based on seeking training in a new skill rather than just using what you already know. This, I think, strengthens my first point, but I hope changes the way you perceive a "perfect" position.

Best of luck.


Personally I would apply for both and be completely drop dead honest with your experience (how much time, what languages, etc.). That's the best policy. If they want a really experienced developer, honestly, a PhD or candidate is probably not the best place to find that. If they need someone that can code to some degree to implement some particular structures that you have a good understanding of based on your experience, then it may be a good fit.

My expectation is that something like this would be proto-typed by people with specialized knowledge, but refactored by developers specifically before any actual production release/use. Again, I would clarify exactly what you know and don't, the interviewer will know that you can learn based on your education, and as long as you're honest about what you've done should not have any unrealistic expectations on how quickly you can come up to speed on things you don't know.

You can learn the basics of a language in a few weeks or months generally, and the real question is what level of complexity does the actual code rise to?

I would expect that you would be writing either sample code for a new architecture/design or a library to be used by others. Both are much simpler than production code so you don't need the entire skill set that an experienced (5-10 years experience) developer brings to the job. Not that either is without its pitfalls, especially the latter! But generally you will not be using as much of the language's API for these as a developer at that level of experience would have direct experience with.


One of the requirements is strong programming ability which I do not have that. I am not too good programmer.

Simply do not apply for the programme.

  • 6
    @alex Here there are two different stories. Whether you are eligible for the programme or not and whether that professor wants to work with such unskilled applicant or not. At your current state, you say that you do not have required programming skills, so why should you put yourself and that research project in trouble and accept programming duties as part of your PhD programme when you do not have required skills? Of course you can send email to the professor and clearly state that you are not a good programmer but have strong CV. He then can decide whether he wants such student or not.
    – enthu
    Mar 22, 2015 at 11:51
  • 2
    @alex Also, I have the feeling that if in the requirements it is clearly stated that they need a student with good programming knowledge and experience, you need very good programming knowledge and need to be so skilled to accept their research project.
    – enthu
    Mar 22, 2015 at 11:54
  • 20
    I disagree. People state all kinds of things that they often don't really need in job listings. No reason to get immediately discouraged.
    – xLeitix
    Mar 22, 2015 at 12:35
  • 6
    All job postings should describe the perfect candidate. There is no such thing as the perfect candidate. It's the person doing the hiring who must weigh the strengths and weaknesses of each candidate against each other, along with personality issues and things that come up in interviews.
    – mightypile
    Mar 22, 2015 at 15:40
  • 2
    +1 for being one of the few realistic answers. Sure, job descriptions often contain unnecessary noise but those generally aren't prefixed with the qualifier "very good". To me that doesn't seem like a minor or flexible requirement but indicates a core job requirement.
    – Lilienthal
    Mar 23, 2015 at 9:57

The originally selected answer simply says not to apply. The fact that you chose this as the answer is sad, since it looks like you're giving up. Few people exactly match a CV's prerequisites (or if they do they are probably overqualified). Skill are not inate but are acquired.

If the only deficiency is that you do not think your programming is as good as the professor expects, then spend some time coding and convince yourself otherwise. I'd bet there are probably other candidates who think they are good programmers and are actually worse than you.

T'is better to have tried and failed than never to have tried at all.

  • This does not provide an answer to the question. To critique or request clarification from an author, leave a comment below their post.
    – jakebeal
    Mar 23, 2015 at 3:50
  • @jakebeal It is an answer, actually. It says he should apply, and justifies this on the basis that programming experience is subjective, and that people are accepted for positions despite not meeting ask the criteria. The critique of the other answer was just a bonus.
    – beldaz
    Mar 23, 2015 at 4:07
  • @beldaz Then perhaps you would care to remove the first paragraph, which would have been better as a comment?
    – jakebeal
    Mar 23, 2015 at 4:23
  1. If they want PhD level for a programming related job, this could be development in a physics level? I would speak with a recruiter about this opportunity to gauge where you stand, what your comfortable with and if you think your current major isn't sufficient, it would not take very long to fill the gaps in learning how to code. The problem is for that type of role they may also be seeking senior level developer skills and methodologies. They could be looking for CMMI, Scrum, Agile, or other frameworks that you may or may not have studied.

  2. Are you qualified to answer programming related questions when it comes to the interview..... maybe... how good are you with formulas? Programming isn't difficult, programming to make intelligent decisions is the tricky part. If you are GREAT with psychology and physics, you could be a great developer. If you can prove that you are qualified to systematically respond to an intelligent user response with a an action based on pivotal logic statements, for loops, and combine this with several datasets... you might be qualified.

What the title of the position is, can usually give some relativity to the role you might be considering applying for...

All things considered, try to dig up more info about the company, the role, and it never hurts to reach out and inquire. :)


I would also go with the "apply" people

Be honest about your lack of programming skills and whether or not you are willing and able to upgrade them (may ask for tips from them).

Then let them decide how hard the requirements are.


If you really want to do something, then apply for it. This is my advice for jobs, scholarships, PhD positions, community service programs--whatever. You might not be accepted, but applying is the only way you stand a chance. Also, you probably stand a better chance than you think. Lots of positions have stringent requirements in theory, but that doesn't mean candidates meeting those requirements are easy to find. Not everyone has "very good programming skills" (or a fluent second language, or 5 years of experience, or whatever the "requirements" are). They will take the best candidate, even if the best candidate isn't perfect.

In your case, you seem to be highly qualified overall. Let them know about your master's thesis. Let them know about other experiences that seem relevant. Make sure they see you as a unique opportunity. Don't lie about your skills, though--if you say you're a great programmer, you'll be screwed when they find out you aren't. Maybe you can turn a negative into a positive. (E.g., "I don't have a lot of programming experience yet, but I have other computer skills, and I'd be willing to learn whatever you need me to do.")

The fact is, if you think you have what it takes, and you can explain why you think that, other people will tend to agree.


What do you mean when you say that you are 'not so good in programming'? Does this mean you have no experience with programming or that you have experience but simply aren't very good? I will assume the former, as it is a bit worrying if you have programming experience and still feel it will take 6 months to become proficient.

I would apply and be very honest about your programming skills or lack thereof in this case. Then it's a case of convincing them that you have the ability, and are motivated, to pick up those programming skills. Do you have any examples where you quickly picked up something technical in your previous degrees?

Ultimately, if they want a hot-shot programmer then you have no chance. In this case, they won't take your word that you are a good programmer; rather, they will expect to see evidence of programs, etc. you have built. Given how generally they have written the programming requirement, however, it wouldn't surprise me if they are just looking for somebody who will have no problem with the programming requirement of the project. It sounds like you are a good candidate in other respects so they might be willing to take you on if you can convince them you can develop the programming skills in due course.

It might not take long to pick up programming expertise once you start your PhD. I (a PhD student in mathematical biology) had never coded a line before I started my PhD and am now proficient in several languages - it only took me about a month of coding before I started building a numerical simulation that I used in the first publication from my PhD. So it definitely can be done but it is dependent on 1. how quickly you pick it up, and 2. (possibly more importantly) your motivation to learn/enjoyment of programming, as the only way to get good at programming is to spend a lot of time programming.

You must log in to answer this question.

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