Years ago I wrote a huge guide about job searching in my final year as a STEM undergraduate, and I’ve updated it off and on ever since. I wrote it specifically because I had just gone from the applicant to the recruiter and saw both sides, so I had all my advice fresh in my head.
Now, with the knowledge that I have and looking back on my experience, if I were to go back in time and re-do the entire process of choosing and applying for jobs as an undergraduate, this is what I would do, in 5 steps.
Step 1: Figure out personal skills and advantages
What do I mean by “skills and advantages”? For you to figure out these two things:
- what activities make you hit “flow state”
- what annoyances you are OK with dealing with that others aren’t
Think using the following concept: you can figure out what you’d be good at (job-wise) by understanding what things you are able to deal with that other people aren’t. For example, some people can’t stand the tedious nature of programming. If you can, and you enjoy it to the point where you hit “flow state” while working on programing projects, then congrats, in my opinion you have found an optimal career starting point.
Some job functions may not be as obvious as this, but the idea is to try to understand yourself better about 1) what you enjoy doing so much that you forget to eat and sleep (flow state) and 2) what you are willing to deal with (that others aren’t) that gives you a particular edge. The intersection of these two can provide insight into potential career trajectories.
Step 2: Learn about types of jobs in the desired industry
Mistakes I made: I could have done a lot more research about the job functions themselves. I blindly applied to data [analyst, scientist, engineer] positions without really thinking about it, I was just looking for any initial opportunity. Sure, this worked out just fine, but if I could go back and do this again, I know now that it is worth the time to research what type(s) of job function(s) are most interesting, not only to best fit yourself personally, but also so that your chosen projects to make a portfolio out of will be as relevant as possible.
Bottom line:
- understand different job functions/titles by talking to people, reading, researching
- use the Internet, LinkedIn, YouTube, friends in these positions as a resource
- look/listen closely for what the day to day actually entails, and what technologies are used most
Note: I should mention that you should apply for any internships you qualify for to get some initial experience no matter what it is - if you can get your foot in the door to get some experience, do it. For me, I did apply to many things but got no opportunities. This is an area where the name of your degree matters a lot.
I’d strongly recommend using YouTube as a resource to hear from people who have actually been in industry and what they’ve experienced. There are so many YouTubers who share their experiences as (insert job title here), both positively and negatively. I watched a video from a data scientist years after I started my career, and realized everything he was saying was what I had taken years to see and understand about the field from being adjacent to it as a data engineer. I could have seen his video before I graduated and gained significant insight right off the bat.
Step 3: Learn to use multiple relevant technologies used in the industry
Mistakes I made: I wanted to do data science, and I dove so deep into R that I essentially ignored SQL and DS python libraries like Pandas, sklearn, etc. It wasn’t a mistake to learn R, but I focused too much on it and didn’t branch out. I barely dabbled in basic SQL. I knew Python, but not the DS libraries, which could have been useful to show on my portfolio.
Bottom line:
- Understand what main 3-5 technologies (apps, packages, programming languages) are most relevant for both the desired industry and job type
- Split up your learning and projects to understand basic-to-intermediate level operation of these
Note that if you can’t get the tech for free because it’s proprietary, then you might be able to ask the university you’re at for a student license (if you can’t get one for free anyways), especially if you’re doing a research project that uses the tech. This is a great way to get access to programs like special CAD software or other tech that requires a license.
Step 4: Build a portfolio that shows work ethic, adaptation and resilience
Mistakes I made: I had a good technical GitHub portfolio, but much of it was just surface-level explanations of the projects. It lacked the depth of what went right and wrong, extensions for the future, how I optimized my workflow throughout the project, where I struggled most, how I thought we could improve stakeholder communications, etc.
Bottom line:
- Focus on projects that exercise your skills in the relevant technologies
- Be able to explain all steps you took, purpose of project, scope, etc. (writing the portfolio helps you with this)
- Build up a portfolio that is neat, orderly, and visually appealing
- Discuss your mistakes and struggles
Charts, graphs, graphics, pictures of your research, a GUI, etc. all make a portfolio more dynamic. It is too easy to just write about what you did and have a wall of text on GitHub connected to a bunch of programming files. Make it more dynamic and enjoyable to read - make it into a story about your project, what went wrong, what went right, takeaways from the experience, future work etc.
Step 5: Apply to jobs, with an emphasis on development programs
Mistakes I made: I did not focus on development programs as closely as I could have. I definitely started applying early enough (fall before spring graduation) to find more than just the few I applied to. I still focused too much on applying to tons of jobs that required 1-3 or 2-4 years of experience, which were long shots for a fresh graduate. Also, I did not apply to many co-op/intern positions even for recent grads, because I wanted a full-time job guarantee. I should have applied for more of those, because a lot of them may offer full-time opportunities after the internship, or at the very least be a backup plan if I didn’t find anything.
Bottom line:
- Start applying for jobs in or before your 2nd-to-last semester (use my keyword tips on pages 9-10). Catch jobs as soon as they are posted by regularly searching for them.
- Focus on development programs and put your best foot forward on those applications
- Use my example questions (on page 11) to show further interest in the company, job, etc. Don’t waste the opportunity to talk more with the recruiter!
Seriously, development programs are your best bet to gain concrete experience while also having time to learn on company dime. You can find them by using my link above about keywords like “college grad” and “new graduate” - these sorts of keywords will find more pinpointed opportunities best fit for fresh graduates. These are competitive, and the applications are normally more lengthy, requiring essays or larger portfolios, assignments, etc., but it is worth it to put your best foot forward on these and really spend the time to make a good application.
Final Notes
These steps lay out the basics of what I would do if I were an undergraduate today and wanted to be prepared for a first step into industry. These are a good foundation and not comprehensive, but I think these are all highly important to be a successful undergraduate job-searcher who wants to be proactive in their career trajectory as soon as possible.
Note: Master’s as a backup – I did apply to Master’s programs as a backup in case I was not hired, and I think this is a good idea. If you miss the boat of the fresh graduate hiring opportunities, you might be unemployed for a while trying to scrape something together for yourself. Having a program ready to start a few months out after graduation serves not only to ease worries of sitting around doing nothing while applying for jobs, but also lets you continue deferring loan payments if applicable. In my case, I was hired before I needed to accept any of the offers for the M.S. programs, so it worked out well.
Note: Student loans – If you are in massive debt and haven’t decided what to do before the final year, my advice is to aim to get your foot into the door of software work. Start early to learn Python and begin to market yourself as a junior software engineer. These positions pay extraordinarily well (60k+ easily to begin, and normally 100k+ in roughly the first 3 years), and you can make short work of those big loans. All scientific fields have their associated programming packages and standards, and companies need programmers that understand both the computing and their field.
Note: RELAX – Mistake I made: I tried to impress everybody and probably failed many times. I could have been more honest and talked more openly through how I was thinking about the position with the recruiter(s) instead of hiding my questions that I thought were stupid. Being open and honest and showing true interest in the position are more important than having a perfect answer for every question.
It is OK to not have experience. Have backup plans (my plan was to continue for M.S.) in case nothing works out. Try to treat the interviews as conversations to get to know the opportunity and company better, instead of interrogations about your skills. Recruiters who are working to find fresh undergraduates to hire understand that experience levels will be limited. Being prepared by learning the right technology, starting early in the job search, and knowing your strengths all help to make you a more confident and hire-able candidate.
Reminder: “plans are useless but planning is indispensable” – Dwight D. Eisenhower. Use this guide non-religiously to get your head on the right track with regards to your journey, and learn from my mistakes.
Good luck!
Dan