Awesome
Internship Guide
A list of links with a little bit of advice sprinkled in.
Feel free to make a pull request with updates!
Contents:
Just keep in mind...
- It never hurts to apply to any internship in the area you're wanting to go into (eg. Software Engineering), the worse that can happen is that the company never replies or responds with a "Sorry, we're looking for more experienced or students who are further along their academic careers" etc.
- Don't pay attention to the requirements or qualifications (most of the time). If you're pretty comfortable with Java and the internship you're applying to requires C# - a language very similar to Java - still apply! If you're willing, some of your Java knowledge can transfer to C# without a problem. Even if it was a language C++ or C, you can still learn and manage along the way since knowing 1 language makes it a lot easier (but not guaranteed to be easy).
- In cases where you should pay attention to the requirements, if you only know HTML, CSS, JS, but you're applying for an internship that requires you to know C/C++, expect a no reply at all or something similar to above.
- If you get an internship, congratulations! Don't stress about not knowing anything of feeling like you don't belong. It's pretty common. The company knows you're inexperienced and don't know much. You're not expected to go away for 5 days, then come out solving all of the bug issues and be heralded as a hero (but if you do... that's damn impressive). Working as a Software Engineer for any company usually involves a lot of cooperation between co-workers. So this is your time to find out how well your soft skills are and improve upon them! Better soft skills, means better communication, which leads to less confusion in the future.
- Internships and experiences vary from company to company. Internship at Big Company A may not apply to Big Company B. And even within the same company, intern at Company A in their office in New York will have a difference experience compared to the intern at Company A in their office in San Francisco.
- Whenever you need help or feel stuck, don't be afraid to ask a question, whether it's your manager, co-workers, etc. They've (most likely) been in your position before and understand how it feels.
Resume
Projects
Personal projects
Demonstrate your coding skills, these can be put on your resume and will be discussed in your interviews. Ideas:
- Reddit - Recruiters, what kind of CS projects impress?
- Reddit - Examples of Good Projects
- Antrikshy - How I got started with programming side projects
- Reddit - /r/learnprogramming project ideas
Open source contributions
Another way to demonstrate coding skills that recruiters love. Here are some links and guides:
- FreeCodeCamp - How to contribute to open source
- Github search for easy issues
- Github search for beginner issues
- Opensource guides
Making a resume
- Careercup resume
- Give your resume a face lift
- Reddit - Could we create a basic undergrad resume?
- Udacity resume review and feedback
- Get 7-Day free trial for free resume review. Feedback returns within 48hrs of submission.
Applying
Make a spreasheet of companies that you'd like to apply to. Have columns such as company name, website, application status, and similar. To find companies to apply to have a look at these websites:
- Github - easy application
- Intern.supply
- The Really Big Hugely Ginormous Tech Company List
- Glassdoor - Search something similar to "Software Engineer Intern" in your home/school area or anywhere you can live for a few months and work. Apply to any openings you can.
- Indeed - Use same strategy as you did with Glassdoor.
- Your imagination! If there's a company you like, have a look on their website or send them an email (typically careers@company.com).
Some companies will have a form online, but some you'll have to cold email. Apply to as many as you'd like, preferably 30+.
Interview prep
General
General guides and tips:
- Tips for Computer Science Internship Interviews
- How to land a top-notch tech internship — and a tech job — while you’re still in school
- How to talk about side projects
Books
Here are some great books on the subject:
- Gayle McDowell – Cracking the Coding Interview
- Aziz, Lee, Prakash – Elements of Programming Interviews
- Giguere, Mongan, Kindler – Programming Interviews Exposed
Study plan
You need to know your stuff before your interview (obviously).
Algorithms
Algorithms to know:
Here are some resouces to perfect your algorithms knowledge:
- Palantir - How to Ace an Algorithms Interview
- GeeksforGeeks - Top 10 algorithms in Interview Questions
- InterviewBit - Essential Algorithm Interview Questions
Data Structures
Data structures to know:
General links:
- Columbia - Data Structures for Interviews
- GeeksforGeeks - Data Structures
- Top 50 Data Structures Interview Questions
- Data Structure Interview Questions
- Scaler Topics - Data Structures
Big-O
- Rob Bell - A beginner's buide to Big O notation
- Derek Banas - Big O Notations (YouTube)
- Big-O Cheat Sheet
Practice
Now put all that you've learned to practice! I've found the best sites for this are:
Resources
Here are some general resources with brilliant communities and information: