View on GitHub

lets-learn-jobs

The open archive of GU-MAD's advice for CS majors

Introduction and Disclaimer

This guide is collective advice gathered from the computer science students at Gonzaga University. It should not be considered “professional” advice.

Feel free to submit pull requests or suggest edits by creating an issue.

TLDR

  1. Apply early. August and September for Summer internships.
  2. Prep for code challenges.
  3. Apply to way more companies than you think is necessary. Over 30.

Contents


Building your Technical Profile

Your technical profile consists of 4 basic things:

  1. Skills and abilities (programming languages, libraries, tools)
  2. Experience (jobs or internships that you’ve had)
  3. Projects
  4. GPA and classes

Each of these generally have their own section on a resume, typically as:

Side note: If you have a GPA lower than 3.0, don’t put it on your resume. If they ask about it, don’t lie. Many companies don’t care about your GPA and it does not mean you are a poor engineer.

Skills

Generally, you want to provide a list of skills to allow the resume reviewer to quickly identify if you’re a good fit for the job.

How to put skills on your resume

There are many ways to do this, however the most common is to provide a breakdown based on the above categories.

For example:

- Languages:
- Libraries & Frameworks:
- Tools:

You may also choose to specify competency, either by listing in order of familiarity, or by listing grouped by level of proficiency

Tips

Side Projects

For many people, classes alone are probably not enough to get the type of job you want. Having experience through side projects shows initiative and lets employers know that you can learn on your own.

Make a personal website to showcase your side projects

Many companies will ask for your website. It’s better to have one than not. It doesn’t need to be fancy, just some HTML and Bootstrap for style. Include

  1. Short bio
  2. Information about side projects. Include a list of collaborators and technologies used. Link to the projects if they are deployed or on an app store. Use images and graphs. This is a chance to add a lot more information than you could fit on your resume.

Optional things for your website

  1. Link to GitHub, LinkedIn, Twitter, etc.
  2. Copy of resume
  3. Email

How to get started with side projects

For most, this generally comes down to finding something you’re interested in and trying to build it. However, when I first started building things, I had a lot of difficulty just figuring out how to get started. Here’s what I recommend:

  1. Get a team. Other people will keep you motivated as long as you keep them motivated. It basically creates social pressure to continue.
  2. Build a game, an app, or a web app. There are sooooooooo many tutorials, docs and libraries in almost every language for these, so it’s crazy easy to get into.
  3. Find a tutorial to simply get something on your screen.
  4. Set a very small goal for yourself, for example: “Move a block on the screen with the arrow keys”, or “connect to a database”. From here, you can incrementally build out a larger project, but small goals make it achievable.

Resumes

In general, your career center can help you write a resume. It’s advised to seek advice from them first. This section will instead try to focus on specifics of applying for software jobs.

Common Mistakes

  1. Don’t use PDF. Some companies will scan your resume for keywords or just to fill out their own forms. PDFs will make it more difficult to apply for a job online and makes it more likely you will get weeded out by a keyword-searcher.
  2. Single page. 1 page. Please, seriously. 1 page.
  3. You don’t need an objective, personal statement, or self-summary.

General Resume Structure

- Name, email, phone
- Education
- Projects/Experience
- Skills

Projects on a Resume

Put a project or two on your resume. If you don’t have personal projects, put the biggest class project you have. Make sure it’s clear that it’s a class project, but having something is better than nothing.

Include:

  1. The language and libraries you used.
  2. Some metric to show the size of the project (time taken to complete, user statistics, lines of code, ect)
  3. When the project was created.
  4. A short description of the project.

An example side project on a resume might look like:

# Projects

## Doohicky.io [Summer, 2016]
- Combines foo with bar whenever a user clicks a button.
- Built with Node.js and React.
- Hosted on AWS.
- 5,000 daily active users

Skills

In general you want to include three items in this section:

Hard skills are better than soft skills. You probably don’t need to put “teamwork” or “communication” on your resume.

Misc


Finding Companies and Applying

Once you have built up your profile, you need to start applying for companies. If you go to a school that has little to no connections and has a minimal career fair, you need to start applying to companies yourself.

General tips

Lists of companies

Reaching out to people

You can always reach out to people at certain companies. Don’t have connections? Does GU not provide any help for 99.9% of the companies you’re interested in?

Find people on LinkedIn. Make sure that you’re looking for a University Recruiter if you’re looking at a big company. Want to contact a university recruiter at XYZ Company?

Type this:

site:linkedin.com (inurl:in OR inurl:pub) -inurl:dir -inurl:job -inurl:jobs -inurl:jobs2 -intitle:profiles -inurl:groups "University Recruiter at <COMPANY>"

Into google and replace <Company> with your company you’re interested in.

Alternatively, you can send people messages on Twitter or via email. Always remember to try to make the best possible first impresssion.

Taking advantage of where you live.

Are you from a big city? Do you not have a job for the summer? Go on meetup.com.

There’s lots of CS related meetups for various tech. This is a fantastic way to network and can really help you find people in your area who might be able to introduce you to a hiring manager.


Interviews

There are several types of “interviews” that you might experience:

  1. Online code challenges
  2. Technical Interviews
  3. Behavioral Interviews
  4. “Homework” projects

The career center should be able to give you lots of advice on behavioral interviews. However, the vast majority of your interview experience will be code challenges and technical interviews.

Online code challenges

These are typically timed algorithm and data structure challenges. They are generally conducted through an online portal.

Technical Interviews

These can be short interviews with an engineer or day-long interviews on campus. They can cover a variety of topics, but are often very similar to the online-code challenges.

Tips for in-person technical interviews:

Behavioral Interviews

These are usually 30 min to an hour with an HR person. They’ll ask you questions like “Describe a time you failed. What did you learn?” or “What is a project you are really proud of?”. The key here is to realize that every question is merely a different spin on why should we hire you?

A nice general format to answer these questions is like such:

  1. Tell the story: not too much detail, just enough, usually 30 sec to 1 min.
  2. Explain how this experience will help this company: This is really what you want to get to. (“Through this challenge, I learned how to use online resources to solve problems, and this will make me a more effective employee because I can independently figure things out and you don’t need anyone to hold my hand.”)
Tips

It’s important to practice. Look up “20 common interview questions” on Google. Practice with a friend. Work on being concise, clear, and poised.

Homework Projects

Some companies might give you a small project to do in order to prove your abilities. If you’re the type of person that dislikes short time limits and really likes building things, then you might like this.

Tips

Nerves

When you get into an interview, do you blank out? Does a timed code challenge make you go cold and completely freak? Then this section is for you.

If you have nerves, don’t feel bad about telling your interviewer upfront. No reasonable company would count that against you.

However, it’s still nice to not have nerves.

There’s generally two strategies to dealing with nerves during interviews:

  1. Repetition of the process
  2. Hippie-Dippie Magic

Dealing with Nerves through Repetition

You need to become more comfortable with the process of interviewing if you want to not be afraid of it. Not only will repetition and practice make you less afraid of the concept, you will become better overall, which will help you pass despite the fear.

Replicate the environment as much as you can.

Dealing with Nerves through Hippie-Dippie Magic

Meditation

If you haven’t ever done any meditation or similar exercises, it probably seems like hippie-dippie stuff. It might be. But it’s super helpful.

Meditation is all about observation. When you get nervous during an interview, your immediate reaction is to try and fight it.

But this generally doesn’t work very well; your brain is really great at keeping you afraid. So this makes you even more nervous and that creates a feedback loop.

So instead, when you feel nervous, step back and watch what your body and brain is doing. Treat it like a rollercoaster. Let your brain take you for a ride. Don’t fight it, just let it pass. It’s all just hormones, your body can only pump it out for a little while anyway.

If nerves are really a problem, you may find it helpful to practice meditation overall. “Observing” instead of experiencing the fear is something that is easier said than done. But it’s a muscle that you can build over time. Try doing this every morning after you brush your teeth.

Muscle Tightening

Another thing you can try is muscle tightening. This is an exercise that is used by therapists and mental health folks all over the country and will trick your body into thinking it’s doing A-okay.

It works best if you are sitting or lying down, but in a pinch it can be done while standing up. Although that might require a bit of balance.

  1. Starting with your right hand, tighten and hold your muscle.
  2. While continuing to hold your hand tight, start tightening the rest of your arm.
  3. Then, tighten your shoulder, then your abs, and the other arm.
  4. Continue to let this spread throughout your body, down your legs and up to your face.
  5. Hold this for 30 seconds.
  6. Then slowly, starting with your right hand, release muscle by muscle. So first your hand, then your arm, then your shoulder and so on.

You might want to try this now and see how you feel.

Practicing

Both the online code challenges and technical interviews typically give you a problem to solve and then ask you to write an algorithm to solve it. Many can be solved by recognizing a particular data structure or common algorithm.

You need to practice these before you do them. Start practicing before you get the challenge. You can practice these through a number of websites, but here are our favorites:

  1. Hackerrank
  2. Leetcode
  3. Codewars
  4. Firecode.io

Tips

CS Concepts

Outside of algorithms and data structures, there are certain CS concepts that an interview might ask about that you should have a solid understanding of.

Big O

Big O is the efficiency of an algorithm.

Algorithms and Data Structures


Offers

If all goes well, a company will eventually send you an offer. This section is about what’s normal, what’s not, and advice about handling offers.

After the interview

Within 24 hours, send a thank you email to your interviewer(s) and/or recruiter. Thank them for their time and attention, mention something specific from the interview (i.e “I really enjoyed our discussion of XYZ” or “After speaking with you, I’ve been spending some time looking into uses of XYZ”), and offer up additional information (“Please feel free to reach out if there is anything else you need from me”).

Tips

If you hear nothing

If you haven’t hear within the timeframe they advised, or at most within a week, send a quick follow-up email. A simple example would be:

Dear X,

Thank you again for taking the time to speak with me {on X date}.
When we last spoke, you mentioned I should expect to hear back {within Y timeframe}.
Do you have any update for me, or is there anything additional you need from me?

Thanks again,
{Name}

If you didn’t get the offer

If you got rejected by a company you were really invested in, don’t worry.

Pay

Software internships are paid. Often, they are paid much more than other jobs. How much you get paid is highly region dependent, but in general, larger cities pay more (but are also more expensive to live in). Some of the larger household name companies can pay around 45$/hour. However, a small company in a small city might pay around 12$/hour.

Dear X,

I want to again express my thanks for extending me an offer. I believe that I can bring {skills A, B, and C} to {Company Z}.
I feel that my skills are valued at {propose increase in salary, stock, signing bonus, vesting schedule, PTO}

Thanks again,
{Name}

Discussing the offer

Do not immediately accept offers. Always do research on the salary offered, benefits, location and company.

What’s normal and what’s not