I applied for PhD programs in CS (Computer Science) in the US for Fall 2024. Throughout the whole application process, I felt like I made a lot of mistakes. The reason for writing this was so that others don’t make the same mistakes as mine. In this write-up, I share my journey, what I think I did right, reflect on the mistakes, and what I would have done differently if I were to go through it again (I am really happy and lucky that I don't have to go through it again 🥶)
Note: Since I am from CS background, most of the things might only be relevant if you are also from CS. But some of them are generic. Be sure to take anything you read here with a grain of salt.
"It takes a wise man to learn from his mistakes, but an even wiser man to learn from others' mistakes" - some random dude on the internet
Deciding whether to pursue a PhD is one of the biggest dilemmas many face. If you're still uncertain, there's no easy answer I can provide. You probably have to ask yourself a lot of questions to be fully sure. However, I can share my personal journey.
Initially, I had no desire to pursue graduate school. Of course, after years of going through Bangladeshi academia, I developed a certain level of hatred towards formal education. I didn't want to continue memorizing stuff for exams forever. So, getting back to academia was initially a big NO for me. But after graduating and spending some time in the industry, my perspective shifted and I had a change of heart. I realized that I didn't want to be a traditional Software Engineer for the rest of my career as tempting and least-effort path that might have been for me. The kind of problems that interested me were a bit different. I figured out I needed to become a Research Scientist to work on those problems. And you gotta have a PhD to become one. Dammit academia, I am back :-(
If you are one of those persons who wants to do a PhD just to go abroad, then thats a different story :-)
Now that you're certain about wanting a PhD, the next question is: When should you apply? Should you apply immediately, or wait until you have a "strong" profile? While the actual answer depends on your exact circumstances and your sub field of research, the general advice from me is to apply immediately when you are sure and have a sufficiently good profile that you are confident about, specially if you are into super competitive ML fields like CV (Computer Vision) and NLP (Natural Language Processing). To determine if your profile is strong enough, it's best to consult seniors who have gone through the process and understand the research landscape of your subfield.
The rate at which the ML subfields are progressing is simply mind-boggling and is very difficult to keep up unless of course you are already associated with big labs or have gazillion flops casually lying around your basement (aka you have access to vast computational resources). What you consider a good profile for this season, might be considered below average for the next season.
With top machine learning conferences receiving over 10,000 paper submissions each year and accepting a few thousand, the situation is likely to worsen as even high school students are joining the party. I know I might sound depressing, but having been going through the process, stalking a lot of students, and seen a lot of applicants' profile on discord and reddit, I can tell you that the competition is fierce. So, if you are sure that you want to do a PhD, then apply immediately. You can always reapply if you don't get in. But if you wait, you might be too late. There are trade-offs both ways. You can give this a read.
In my case, my initial plan was to apply for Fall 25 since I had a few pending works that weren't published yet. But, one of my teachers, who is also a PhD student now, advised and encouraged me to apply for Fall 24. One of the main reasons he mentioned was that having my current job for one more year won't help me much after my graduation. So it makes sense to start my PhD as soon as possible.
TLDR: Go for it. You will never be good enough :-)
(I am strictly speaking from CS perspective here)
If you are applying for MS, then you should definitely give GRE. Most universities require it. But if you are applying for PhD, then it depends. Some universities require it, some don't. Some universities say it's optional. Post COVID, most top schools (I'm talking about top 50) don't require it. There are some exceptions. Like CMU MLD requires GRE. So, be sure to check the requirements of your intended programs.
As to how important GRE is, even if it is optional, it depends on your profile. If you have adequate research experience, then GRE actually doesn't matter that much (my personal take, please do your own research).
Start very early. I can't stress this enough. One of my biggest mistake was not starting early enough.
I started preparing for my applications very late. By the time I was done shortlisting universities and professors, it was already early November. When I started mailing professors, I almost got no reply. Professors are overwhelmed with e-mails during that time and is very unlikely to give a reply. The correct time, in my opinion, is to start mailing is early August. My friends who had a very successful run this season started mailing professors during that time. They got replies, and even had early interviews. If you are getting interviews that early, and it goes well, you have gotten yourself into a very strong position even before the application deadline. You can consider those as "safe shots" and this can give you the confidence and room to apply to more ambitious schools.
Also, be sure to keep enough time for your SOP. It's not something that you can write overnight (I mean you can, but it won't be good). You probably have to go through 3 or 4 iterations before settling on the final one. Try to first write on your own without taking inspiration from others. Then read others' SOPs. You can find a lot of them online. This notion website has a good collection. Now you can rewrite taking inspiration from others. But be sure not to get yourself caught in surviorship bias. Then get feedback from your friends, seniors, mentors, etc. This part is very important. They can give you a lot of insights that you might have missed. You get an idea how time consuming the whole process can be. So, start early.
TLDR: Start everything early.
My research experience was mainly in Computer Vision. Plus I had NLP background from projects and competitions. My research interest is in vision-language or multimodal learning. Doing a bit of research, I found that this kind of work was mainly done in NLP labs. So, I applied mostly to NLP programs, with a few exceptions.
Now when it comes to shortlisting, this is where I made one of my biggest mistakes. I mainly followed US News (CS) Ranking and csrakings.org. But for very weird reason, I didn't check the NLP subranking. I mainly focused on the overall ranking. Somehow, it just slipped from my mind. I was mainly looking at the top 50/60 schools from the ranks above. I had a few schools from 1-10, a lot in 11-40, and a few in 41-60. Kind of like a normal distribution. I was totally oblivious to the fact that some schools might be very good in NLP but not in the overall ranking. I just went through the NLP labs from the overall ranking and shortlisted based on how interesting and aligned the lab works were with my interest.
Some time later after the application deadline, I got into a global discord server for CS Fall 24, where I met a lot of other applicants. One day, I was listening to a conversation about which schools are good for NLP, and which are the top 10s. When someone was listing their top 10s, I was having a deja vu. I was like "Oh no, I applied to a lot of them". Then I checked the NLP subranking from CS Rankings. Boy, I was in for a surprise. I apparently applied to 6 of the top 10, and 11 of the top 20 NLP schools :-) Oh my normal distribution :-) I instantly understood that it was Joeover (got only into 1 at the end of the day). I should have applied to more schools in the 20-50 range for NLP. The takeaway is that subfield ranking is very important. Be sure to check that.
People generally also apply to some schools where they are almost sure to get in. Basically, apply in the ranking space where you are confident to get in for sure. This is sometimes called safety schools. This is where I made another mistake. By the time I was done with my final shortlist, somehow there weere no such schools in my list :-)
I made another very big mistake (perhaps the biggest one). I didn't apply to places where most of the alumni from my university (or country) go. If a lot of your alumni is already present in a university, generally, this means that the professors are familiar with your university and the quality of students coming from there. This gives you a very big advantage. And after seeing the results for this fall, I can tell you that this is very true. A lot of my friends and seniors who applied to the universities where a lot of our alumni go, got in.
TLDR: At the end of the day, the whole admission process has so many uncertainties. You can never be sure where you will get in. So, it's always better to apply to a wide range of schools. While doing so, you should keep in mind ranking, research fit, location, alumni network, acceptance rate, etc.
I can't stress enough how important LORs are. They are probably the most important part of your application. If someone very well known in your subfield can vouch for you, then it puts you in an extraordinary strong position. In the discord server that I mentioned earlier, I saw a lot of people who got into top schools with mediocre profiles just because they had very strong LORs. In most cases, they were already doing their bachelors or masters from US and were already working in top labs. You might think that this is unfair if you are internation student, but it is what it is. You will be competing against them and I think it's better to be aware of the reality which I wasn't when I was applying.
I think the following is a good thumb rule to decide whom to take LORs from:
a) someone who can vouch for your research potential. This can be your thesis advisor, a professor you collaborated with, a professor under whom you did a research project, etc.
b) if he/she also happens to be from the subfield you are applying to, then it's a big plus.
c) and if he is well known in the field, then it's a big big plus.
If you can't find someone that fits the criteria above, you can also take LORs from other 2 criteria. But the first one is the most important.
- someone who can vouch for your academic potential. This can be any of your academic professors who taught you in a course, or a project supervisor, etc.
- someone senior from your workplace who can vouch for your professional potential.
In my case, all my LORs were from professors who could vouch for my research potential. But sicne my past research was mostly in CV and I was applying to NLP programs (reason mentioned above), none of them were from the subfield I was applying to. I could have taken from 2 other professors with whom I did NLP projects and research internships. In hindsight, I should have taken from them.
The whole PhD application process is very stressful and overwhelming. It is easy to give up at any point in the process. You will need a very strong support system to get yourself through. In my case, I had incredibly supportive friends (shout out to @najib-haq, @mustari-sadia and @mashiatmm), and seniors who went out of their way to help me. Don't hesitate to ask for help. People are generally very helpful. I reached out to seniors that I have never met or talked to before, and all of them helped me with everything they could.
The PhD application process has been getting tougher day by day. I think there are some reality checks that everyone should have before applying. It makes life easier and helps you make better decisions. After the whole layoff fiasco began in the post-COVID world, it has gotten harder to get a job in the industry (I'm talking about CS). Instead of completing an MSc and getting into the industry, most of the people now apply for a PhD. At least this was the case this fall. This made the PhD application incredibly competitive this time. The same could be the case for coming seasons too.
One other reality check that I wish I had was the insane competition that is currently present in some of the CS subfields (like in CV and NLP). I mean I knew that it was super competitive to get in those subfields but I had no idea how insane it is to get into one of the top labs. If you are aiming for the top 5 or 10 schools in CV/NLP, then you should have at least 1-2 first-author papers in top-tier conferences like CVPR, NeurIPS, ICML, ICLR, ACL, EMNLP, etc. If you don't have that, then you should have a very strong recommendation letter from someone who is quite known in the field. The most surprising part was that hundreds of people actually have the criteria mentioned above. It feels like you almost need a PhD to get into a PhD. But if you are not in one the highly competitive and saturated subfields, then things are a bit easier. The expectation is not that high, specially in terms of publications. But it is competitive nevertheless. After going through other applicants' profile, I was almost sure that I was not getting in anywhere even if I did research for 5 more years :-) I felt like I was extremely lucky.
Which brings us to my last point, people often underestimate how important luck is. The whole process is so much stochastic. No matter how much effort you put, if it wasn’t destined for you, it won’t reach you. Don’t over stress too much. Put in your efforts and it’ll somehow work out in the end :’)
If you have read the whole thing, I hope it was helpful for you in some ways. If you want to ask me something, feel free to send me an email. All the best for your PhD application! As for me, my biggest challenge is yet to come. I have to survive the PhD now :-) Do keep me in your prayers.
If you are instead interested to read from people who had a successful PhD application run, you can read advice from my talented friend Mushtari Sadia on how to acutally do PhD application here.
Some resources that I found helpful during my application process:
- CS PhD Statement of Purpose
- Applying to Ph.D. Programs in Computer Science - very insightful advices from a CMU professor
- Ph.D. Applications: FAQ - a very good FAQ by a UW professor
- How to email
- Student Perspectives on Applying to NLP PhD Programs
- Applying for a PhD in NLP
- Applying to PhD programs in NLP
In the spirit of open source, I am sharing my SOP here. I hope it helps you in some ways.