Finding an Internship
When and how do I start looking for a job or internship?
Ideally, you will start preparing for graduation during your freshman year! A common mistake students make is to wait to start building a portfolio or projects and skills until their senior year. Until you have some experience, you won’t be ready to tackle large programming projects, but there are several things you can do right away to start building up your resume:
Grades
One of the most important things you can do is focus on your classes and get your GPA as high as possible. Many employers look for a GPA of 3.0 or higher – and you can lose a lot of opportunities if you don't maintain that "B-average".
If your grades aren’t that high – you can probably still find a job – but it’s much harder and you will need to make up for it in other ways. Some job listings even ask for a GPA of 3.25 or 3.5! This is especially true for internships and research opportunities, where employers are cautious about investing resources which may not have any immediate return for the company.
However, GPA isn't the only important thing you need to focus on. Why? Because what employers really want to see is evidence that you can do the job they're hiring you for. The best way to acquire and demonstrate that ability is through experience and some of the best ways to get experience don't have anything to do with your classes.
Student Organizations
Participating in the ACM (Association for Computing Machinery) and other clubs can be a good way to learn new skills, make connections, and build your credentials. Our ACM chapter does lots of workshops that can help you get started with side projects or skill development. Participation in ACM can itself be a resume line, especially if you get involved with leadership, or do well in ACM regional programming contests.
If you're less interested in programming and more interested in other aspects of computer science, we also have a Cyber Security Club and a Game Development club.
Side Projects
One of the simplest ways to build your portfolio is to work on a project of your own. Write a game, build a database, create a web site, or set up a Linux web server. Teach yourself a new programming language or software library by working through online tutorials.
A side project doesn’t need to be overly complicated or challenging. Employers appreciate students who take the initiative to do something outside of class and just seeing a project through to completion without a professor supervising your work counts for a lot.
Possibly the best resume line you can have is a project that real users are actually using. Contributing to an open source project is one of the easiest ways to do this. Open source projects, such as Firefox, KDE, and LibreOffice allow anyone to download the code, make changes, and upload their contributions back into the code base. A contribution could be something as simple as fixing a bug, or adding a missing feature.
Field Trips
Another great way to get experience is to meet and interact with programmers, sysadmins, and security experts from industry. Our area has a lot of really neat groups that meet on a regular basis to network and share ideas. I sometimes take students on field trips to visit these groups – but you can also just go yourself (or with a group of friends)!
Some local groups:
- BeCraft (Charlottesville): https://www.meetup.com/becraft/
- RVA Data Hackers (Richmond): https://www.meetup.com/RVA-Data-Hackers/
- RichSec/RVASec (Richmond): https://rvasec.com/rvasec-monthly/
- HackRVA (Richmond): https://www.hackrva.org/
Okay, but how do I start looking for a job or internship?
Start by looking over your resume to be sure it's up-to-date and has everything you need. Then start looking for job postings.
Finding open positions
The best way to find a job is to have a strong network of contacts helping you look. Talk to family members, friends, alumni, people from church, or coworkers to get leads on job openings or internships. A significant number of our students have found jobs or good internships through these kinds of connections.
Participate in ACM and other student organizations that can help you connect to alumni. Go to industry meetup groups and introduce yourself (it helps to have a few business cards in your wallet or purse that you can pass around if someone asks for one – and maybe a copy or two of your resume). If you’re in a Greek organization, check with your “brothers” or “sisters” about helping you find opportunities. Even if they are in a different major, they may know someone in our field who can help.
You should also have a professional looking web site and LinkedIn profile. An awful lot of employers are using LinkedIn to recruit these days, so make sure your information on LinkedIn is accurate and up to date.
Plan to visit at least one job or career fair. While there usually aren’t too many computer science or cyber security positions available at Longwood’s career fairs, there are usually at least one or two worth exploring. If you’re able to travel, there are a lot of really large job fairs in the state specifically targeted at software developers, Cybersecurity, and I.T. roles. Longwood students have had a lot of luck at the NSWCDD (Naval Surface Warfare Center Dahlgren Division) job fair, but there are usually also really large job fairs in Richmond and Blacksburg every year.
If your network fails to turn up opportunities, you can start looking at job search sites like dice.com and indeed.com. Dice focuses primarily on technical jobs, so it's great for people in our field. Indeed focuses on local jobs, and I've often found opportunities for students there, particularly in the Richmond area. Don’t forget to also look at usajobs.gov (the federal government’s job search engine).
Many of the jobs you will see want several years of experience and you won't be qualified for them, so you should focus on "entry-level" jobs. A good way to start is to include the words "entry-level" in your search terms. For example, you might search for "entry-level system administrator" or "entry-level Linux" or "entry-level C++" or possibly "entry-level SQL".
You can also start picking companies you are interested in working for and checking their web sites for job listings. Most of them will have “Careers” link somewhere on the page. Often in the navigation bar under “About this company” or in a footer at the bottom of the page.
What happens next?
Once your resume is in good shape and you’ve started exploring job listings, you should begin preparing for the job interview. This is one thing the career services office does really well, in my opinion. Schedule a practice interview with them!
They may not be able to help you prepare for a technical screening, but they can give you some good general advice about interview techniques, how to dress, how to follow up, what to expect, and so forth. Just having the extra practice can make you seem more confident and prepared – a critical part of making a good impression.
To prepare for the technical interview, I highly recommend reading through at least part of the book Programming Interviews Exposed which I have used in the Senior Seminar. You can probably find a copy in the library. It is probably a little dated now, but it reviews a lot of really important computer science material (data structures, discrete math, etc.) that many employers use in technical screenings.
Another resource is careerdean.com which is a web forum specifically targeted at Computer Science/I.T. career advice.
The Job Application
The number one rule is: be honest! Don’t exaggerate or “stretch” your accomplishments. These are entry-level positions and employers will expect some gaps and inexperience. The worst thing you can do is look dishonest or unreliable.
You should tune your resume toward each job application. Pick out the key skills and buzzwords from the job posting and see if you can fit them into your resume. This will help you get past automated job screening software that often matches keywords from the job posting to your resume and throws away any application that doesn’t have enough “hits”.
It’s a good idea to do some research on the company before applying so that you can show that you’ve “done your homework” in response to some of the questions on the application. Try to identify their main products or services, company values, and anything unique or special that separates them from other companies in the field.
Usually, you will apply by filling out an online form. The form will usually have a place for you to attack your resume. Sometimes, though, you’ll need to apply by e-mail. If you send your resume by e-mail, you should include a short “cover letter” (typically three paragraphs long) in which you describe how you found the job opportunity, why you’re interested in it and think you’d be a good match, and asking them to schedule an interview for you. This is a good place to slip in a few things that show you’ve done your research on the company or to highlight particular skills or projects that demonstrate you are a good fit.