by Co-Founder Jeremy Rossmann
This article is a written version of a popular talk we give at hackathons across the country. It comes from what we've learned working with hundreds of students as they were applying for their very first tech internships. Over the years, we've developed a core set of strategies that greatly improve an applicant's chances of landing their dream internship.
First in a two-part series, this post will cover the shifts in the technology landscape that explain employers' current needs as well as the steps you can and must take to improve your profile before you start applying. The next post will cover strategies for applying and interviewing.
What Tech Companies are Looking For and Why
Ten to fifteen years ago, big tech companies were still building the infrastructure of the web. Google was perfecting modern search. Amazon revolutionized the way we shop. Apple was building the infrastructure for the App Store. The majority of the challenges in tech were related to scaling and optimizing this infrastructure, so the majority of jobs tended to require a strong mathematical background. You could spend a decade as a software engineer and never build something that a user would directly interact with, but shave off a few fractions of a second off your company's search engine.
Today, that has changed. The infrastructure is more or less in place which has allowed more companies than ever before to launch products using that infrastructure. The majority of new jobs now involve using software to create great products as opposed to optimizing infrastructure. While mathematical foundations are critical, product skills are now more in demand than purely technical skills among employers.
Today, no matter the industry you are interested in, be it biology, finance, or even farming, there are opportunities for programmers who are excited to use software to solve real problems. Thanks to the power and reach of the internet, every major company is a now a tech company. Check out the career page for The New York Times and see how many programmers they're hiring compared to journalists!
Triplebyte, Silicon Valley's most selective recruiting firm surveyed top Y Combinator funded companies and found that product-focused engineers were the most in demand across a selection of 25 companies.
So what does this tell you about applying for internships? We are in the golden age of the portfolio. Don't bomb your algorithms class, but don't count on your GPA to get you a job interview. Never before has what you've built mattered more than your grades or your school's brand. You need to show that you are the kind of programmer who is sensitive to the needs of the end user, who can make good product decisions and who has a track record of following through and finishing projects.
The first step is to make sure to be exposing yourself to as many opportunities to improve your portfolio as possible. This almost always means you have to look outside of class. Look for hackathons, clubs, and like-minded peers you can join to surround yourself with a community of people who build and finish projects. If you don't know where to start and you have a Mac, you can take our free introductory CS course here. If you don’t have a Mac, we recommend getting started with courses from Treehouse.
Think about learning programming and working on projects like people think about going to the gym. Let incremental weekly gains compound by making a regular habit out of programming on personal projects on a weekly basis. We recommend blocking off time to do so on your calendar, and ideally to do this with friends. If your high school doesn't have a CS club, consider starting a Hack Club to bring together a community around learning programming and building projects.
The next step is documenting and showcasing your work in a way recruiters will appreciate. To showcase your projects effectively, you'll need a resume, a personal website, and a presence on GitHub.
Keep it to one page, and keep it basic. No fancy fonts or weird styling. A lot of companies will take your resume and scrape it for data about you without a human ever actually reading it. You might even get graded by an algorithm, so be sure to use the same sorts of terms that you see in the job postings and make your language action-oriented.
Make sure that everything you include can be backed up in an interview. If you're only starting to learn a language, it's better to say that you have introductory knowledge than to try to pass yourself off as an expert--you'll get caught. Don't include a picture or any sort of description of yourself outside of your qualifications--that's where your personal website comes into play.
If you're not on GitHub, the good news is that it's never too late to start. GitHub is a tool that is invaluable to programmers. It lets them track versions of their projects, share their code, and contribute to open source projects. Get on GitHub as soon as you possibly can and upload all of your projects. Every last one of them. Don't wait until your code is clean. A person with ten unfinished projects on GitHub is infinitely more hireable than a person with just one project to their name.
Once all of your projects are on GitHub, spend at least fifteen minutes per day working on your code and pushing it to Github. GitHub will publicly display your longest streak of days spent coding, so you want to make that streak as impressive as possible. It's also a great idea to find an open source project that you admire, check its issues page, and find a small way to contribute. The more open source projects that you can successfully contribute to, the more valuable you will look to employers.
Your website, like your resume, should be clean and simple, but it should highlight your personality, your passions, and most importantly, your projects. Ideally, your website features at least three projects. You should include the name of each project, a photo to go with it, and a brief description - and the whole thing should be clickable. When someone clicks on the project, it should take them to a place where they can either use the project or see the code on Github.
Put the projects that you are proudest of at the top. If you have unfinished projects that you started at a hackathon, include them, but make it clear that they are hackathon projects. That will help justify any unresolved sloppiness. You can also include projects that you made in school, but don't say that you made them in school unless it's obvious by looking at the project. You want to project an image of always working on your own projects on your own time.
Time to Start Applying...
Once you have these three pieces in place, your portfolio is ready to go. You'll be able to show any potential employer what you're capable of and why they should give you an interview.