Your Junior year is the year to start making decisions. You’ve had two years to become a decent programmer and be exposed to a few different areas of computing. If you were lucky, you had the chance to gain some work experience in a lab or during an internship. If not, this is the year to make that happen. Work experience doesn’t just make you a more attractive applicant. Companies would much rather hire a past intern than an entirely new applicant. You’ll have a much less stressful Senior year if you go into it with a job lined up for after you graduate.
Not all career specializations have the same prerequisites.
You probably have more room in your schedule to take electives that interest you than you did before. Use these to explore areas that you are interested in. Software engineering is not the only career path available to computer science majors. Your university may have elective courses to prepare you for networking, systems, web development, front end design, and graphics. Employers looking for specific roles such as these will prefer to see a related internship, course, or personal project on your resume. Have different versions of your resume for different specializations. If you are more interested in one, learn what it takes to make a career of it.
I became interested in machine learning as a sophomore. At first, I thought that the only way to work on machine learning during your career is to do research and or grad school. However, machine learning is a specialization that has started to move from research into engineering. Grad school is no longer a necessity to work on machine learning during your career. I may be biased but having some background in machine learning will be beneficial as more companies apply it to their systems.
Exploring options and sub areas during your Junior year is good, but you’ll want to start making decisions as the year goes on. Companies recruit heavily in the Fall. If you know what you want to do post-graduation you can look for related internships. If you don’t make the decision, it might be made for you when the company you interned for makes you a full time offer that seems too tempting to pass up. I don’t think you should be picky about your first job out of college, but you don’t need to accept the first offer you receive either. If you can time it right, having multiple offers on the table at once gives you power to negotiate your salary.
You don’t need a masters to get a PhD.
Even if you think you’ve decided what your future career path will be, you should be constantly reassessing your plan. Use your Junior year to figure this out because it’s more difficult to change course next year. If you want to go to grad school, it’ll be easier if you decide that now. Many students decide to go to grad school last minute, but that will severely limit your options. If you want to be accepted directly into a PhD program or a top tier master’s program, you’ll need to prepare during your Junior year or sooner. If you didn’t know, you can be admitted directly into a PhD program from your undergrad. If you are positive you want a PhD, it will save you time and a lot of money. Unlike master’s, PhD programs should be fully paid for and provide you with a stipend. However, PhD programs come with a high opportunity cost. Five to six years is a long time on a small stipend.
You don’t need a PhD to do research.
Computer science students generally consider grad school if they are interested in research. If you aren’t, make sure you have a good reason before planning to go to grad school. The extra time, debt, and opportunity cost are generally not worth whatever salary boost you may get. Professional experience can be worth just as much, and you’ll be paid a lot more.
If you are interested in research, be aware that you don’t necessarily need a PhD. I know many students who have been hired as researchers in industry with only a master’s or less. Even though master’s programs are expensive they may be cheaper than PhD programs if you factor in opportunity cost. PhDs are necessary if you want to be a professor. They also can help you build your research portfolio if you didn’t have a successful enough master’s to land your dream research job. Also consider that many leadership positions seem to be solely occupied by researchers with PhDs. Despite the financial opportunity cost, getting a PhD can be a valuable experience in other ways.
You probably need research experience to get into a PhD program.
If you decide that you’re interested in research or grad school, you should start talking to professors and working in their labs if you haven’t already. Contact all the professors you are interested in working with based on their homepage and in person conversations if you can manage it. In person is preferable because websites are rarely kept current. Prioritize the professors you are most interested in. You may be able to change later, but that means starting over on your projects. Your goal should be to have your name on a publication by the time you apply to grad schools next Fall.
You will probably be put on a project with a more experienced lab member or grad student. This is great because you are more likely to publish with someone who knows what they are doing. Being first author on a paper is much better of course, so if you are confident in your ability or have been doing research for a while find out your professor’s policy on having undergraduates lead projects. This varies by department and by professor, so don’t be discouraged if you aren’t able to lead your own project.
Research is difficult, and I only have a few tips for undergraduates starting out. Talk to other students in your lab. Everyone has different strengths, and they will know things that you don’t. Most people I’ve talked to have been glad to let me bounce ideas off them. Most ideas I’ve had turned out to be bad ones. I figured this out a lot sooner when I allowed someone else to critique my idea and question my assumptions. This doesn’t mean you always need to throw out ideas when someone doesn’t agree with you. If you believe strongly in an idea, continue researching and experimenting until you are convinced it does or doesn’t work. However, you shouldn’t spend too long on any one idea. Experiment with multiple solutions to your problem. I’ve wasted weeks tweaking and debugging ideas that didn’t end up going anywhere. If you’re stuck, don’t keep spinning your wheels endlessly. Put down that idea and try another. You can always come back to it later.
Multiple letters of recommendation mean working with multiple professors.
I was not able to publish by the time I was applying to PhD programs. If you find yourself in the same boat, that’s ok. There are other ways to demonstrate that you have research experience. After publications, your essays and letters of recommendation will demonstrate your ability to do research. Plan which professors you want to write your letters. Try to avoid asking professors who don’t know you outside of class. If you are working in a lab at your university, this professor should be your first letter writer. You’ll usually be asked for three letters of recommendation, so you’ll need to connect with other professors. You can do this through office visits or working on collaborative projects with multiple professors. If you have a class project that relates to your research, visit that professor outside of class to discuss your project. If you do, that professor will have more to say in a letter about your abilities and initiative.
An ideal way to have better letters of recommendation is by doing research at other universities during the summer. Some departments or professors have funding for visiting researchers. However, it isn’t common, and you’ll have to do a lot of digging around on the web. An easier solution is NSF’s Research Experience for Undergraduates. Their website lists dozens of universities with federally funded summer research programs for undergrads. You can search by field and see the specialties of each university. Applications are straight forward and are usually due early in the calendar year. I applied to several my Junior year but ended up doing a research internship at USC that was not part of NSF’s program.
Remember that your Senior year is too late to prepare your post-graduation plans. The summer between your Junior and Senior year is invaluable, and it is best to plan early in your Junior year how to use it to your benefit. Don’t be afraid of decision making and planning. Decisions need to be made eventually, by you or someone else. If you work hard now, next year will be far less stressful.