Running log of the questions I keep getting from junior undergraduate and master's students about Ph.D. applications, picking a research direction, and getting started in AI/ML. If your question isn't here, grab a slot and let's talk.
I have had several dozen conversations with junior students over the past year. The same questions come up often enough that I thought I'd write them down. What follows is my honest current thinking, not advice that will apply to everyone, but a reasonable starting point. If you disagree, that's useful data, and I'd love to hear why.
Send me an email. See the Calendar page for available time slots and more details. After we find a time that works for both of us, send me a Zoom invitation via the schedule button in your calendar. Choose Google Calendar in the Calendar tab. Click the email icon in the Attendees tab — otherwise I may not actually receive the invitation.
It would help a lot if there were a resume or a webpage I could look at beforehand so I can come to the conversation with context.
Given the current landscape, I suggest taking a summer (or longer) internship, either in person or remotely. It's the most reliable way to find a genuine fit with a potential advisor. If you perform well during the internship, you can often secure a return offer from that advisor — which is a far more stable path to a Ph.D. position than applying cold.
If you received a master's offer from a top university, I suggest you accept it and go. It is completely fine to take a master's first. You can always apply to Ph.D. programs later with a return offer, or pursue an industry job after graduation.
I do not recommend taking a gap year in China. US visas are getting harder to secure, and a year in China does not help much for building connections either.
Not everyone has a clear research interest, and an engineering role in industry is a great path. I recently feel that machine learning systems (MLSys) is a very promising area for engineers — you might consider it as a direction.
Honestly, not everyone is suited for a Ph.D. program. The best test is to try to lead a research project end-to-end, on your own — from idea to code to paper. If you find yourself enjoying the process, go for it.
Fun fact: I studied civil engineering as an undergraduate. It is completely fine if you are not a CS student — far more important is strong motivation and genuine interest.
My general suggestion is to keep reading papers and try to run the code yourself. There's no need to take specific courses at your college; the resources on the internet are enough. Also, try to work with any professor at your school who is interested in research, even if it's tangentially related.
It's always a good idea to email professors (or Ph.D. students) whose research you're interested in. Before you do, make sure you have something to show — for example, a small demo project related to their current research interest. A cold email with a concrete artifact attached is several orders of magnitude more effective than one without.
It's important to understand why we need a benchmark. Sometimes building one is necessary because you are the first to define a problem. I usually don't publish a paper that contains only a benchmark — I pair it with a strong, interesting baseline.
That said, churning out benchmarks on meaningless variants of existing problems is not good research.
Pursue a field you are genuinely interested in, and ideally one that is currently popular — this will bring more opportunities for applications, internships, and collaborations. Another important habit is to keep asking yourself what the next year's research in the field might look like. I also recommend learning from well-known, successful research labs in the area.
Make extensive use of new tools (like Claude Code and Codex), stay enthusiastic about new technologies and news, and be brave about trying new things. The field is evolving rapidly; embracing innovation and staying curious will serve you well.