My recent experiences as a newly minted computer science grad and frequent interviewee have taught me some great lessons on what to do—and what not to do—to get a job in your chosen field. Computer science majors may have slightly better job prospects than the person with a BA in Victorian literature, but you still need to know how to set yourself apart from all of the other job seekers, many of whom have a lot more experience than you. Here are my five tips for landing a job in tech.
Internships are one of the most important things you can do during college to prepare for the job search. I participated in two summer programs through Duke University that placed me at internships with startups in San Francisco and gave me a living stipend. While large Silicon Valley companies like Google and Facebook pay their interns handsomely, startups might not. I turned down internships at startups that couldn’t pay me. However, a funded startup is likely to pay software engineering interns.
I switched my major from Public Policy to Computer Science during my senior year of college. My lack of programming internships was an obstacle during my job search. Hiring managers often wouldn’t call me back for a technical interview because of this. But even my non-technical internships were more valuable than nothing. Through these internships I gained connections in Silicon Valley, learned basic professional etiquette and developed a variety of marketable skills. My current job is at a company that hosted an intern during one of my Duke summer internship programs.
If you are a current college student, look for summer internship funding through your school’s career center and your academic department. Start looking for internships in the fall semester. Larger companies have more formalized internship application processes and earlier application deadlines. Startups often don’t have formal application processes so you’ll need to reach out to the founders personally. In my experience startups choose their interns in the spring, sometimes close to the end of the spring semester. This is great if you’re looking for a last minute internship.
2. Put Yourself Online
My GitHub profile was empty at the beginning of my job search. I had no personal projects and never contributed to open source. I didn’t think I had enough time during the school year to do either of these things. Companies asked for my GitHub profile and I didn’t feel comfortable applying to jobs with an empty one. So I did online tutorials and added the code I wrote for them to my GitHub. (I focused on Zed A. Shaw’s LearnXTheHardWay tutorials. He has them for Python, Ruby, C, SQL, Regex and the command line.) This gave me the confidence I needed to apply to jobs and didn’t go unnoticed by hiring managers. My commitment to adding code to my GitHub everyday even led me to contribute documentation to an open source project. GitHub is the most important online profile for your job search. Don’t underestimate the message conveyed by even a small amount of code on your profile. It shows that you can use Git for version control and have confidence in your code.
While I rarely tweet, I used my Twitter account to communicate with companies throughout my job search. I tweeted questions at companies and let them know when I applied for their jobs. When applying for a job, I always asked the company on Twitter whom I should address my cover letter to since I know that addressing my cover letter to “To Whom It May Concern” made me seem like a less serious candidate. Sometimes my Tweets led straight to a phone call and I didn’t even need to write a cover letter! The responses I received on Twitter were more frequent and more enthusiastic than what I have experienced through email. I think that the public nature of my Twitter communication meant that companies risked looking bad if they didn’t respond to me. My Tweets were a public validation of their attractiveness to job seekers. Since Tweets are less than 140 characters they also are easy to read and respond to.
My LinkedIn profile has also been fully filled out since the beginning of college. A complete LinkedIn profile is a basic requirement for the job search and filling it out is not that difficult if you have an up-to-date resume.
3. Do Your Research
I considered company size, location, gender ratio within the engineering department, perks and technical challenges when I applied for jobs. I used CrunchBase to find number of employees, details about funding, press mentions, office location, and the names of executives. I then looked up the companies on LinkedIn to see if I had any connections to its employees. I put this information along with job descriptions in a mega spreadsheet. I then used the company profiles on The Muse to see the human side of companies. While some information about company culture couldn’t be quantified in a spreadsheet, I included it in my cover letters.
Software engineering job descriptions almost always call for software development experience which you can gain through an internship, major personal project or semester-long class project. Most job descriptions call for a degree in Computer Science or a related technical subject, but just a degree is never sufficient. I ranked the jobs as “Safe”, “Fit” or “Reach” based on how much experience they asked for. I quickly learned that my minimal experience (no internships, personal projects or class projects) meant that no jobs were “Safe.” “Junior” and “New Grad” positions were a “Fit” for me while general software engineering roles were a “Reach.” I came to this conclusion after applying to several software engineering jobs that weren’t specifically entry level. If you have extensive programming experience you might find that different jobs are “Reach”, “Fit” and “Safe.”
Regardless of your background, doing your research is crucial if you want to land a job that you enjoy. For example, I have several friends who work in the Peninsula (a region south of San Francisco where Apple, Google, Facebook and many other well known companies are headquartered) but desire to live in San Francisco. While the commute is doable, it does have an effect on your quality of life. I knew I wanted to live in San Francisco so I focused my job search on companies that were headquarted in the city. Twitter, Pinterest and Dropbox are three of the most well known companies headquartered in San Francisco.
4. Be Choosy
I only applied to jobs that excited me. Prestige and name recognition didn’t matter as much as a personal connection with the product and company culture. I could afford to be choosy because there are so many software engineering jobs in Silicon Valley. Limiting the amount of applications allowed me to balance a challenging course load and the job search.
I wrote unique cover letters for each company that highlighted my personal connections to their employees, experience with their product or service, interest in their technologies and anything else I thought was appropriate. For example, I wrote that I liked that there were so many plants in the company’s office. In a cover letter for a job that would use Ruby on Rails I wrote I had done Michael Hartl’s Ruby on Rails tutorial and explained why I liked the Rails framework.
Being choosy also allowed me to reflect on what I was looking for in my first job out of college and land a job I enjoy. My current job allows me to work from home, doesn’t expect unsustainable working hours, surrounds me with smart and accomplished peers, gives me the freedom to try out different teams and technologies, and offers new challenges each day.
5. Prepare for Technical Interviews
Once you get past the hiring manager with your resume, cover letter and online presence, you will face a series of technical interviews. This style of interview was my main surprise during the job search. At first technical interviews seemed brutal compared to my previous interviewing experience, but they became easier as I gained experience.
I bombed my first technical interview. I was able to talk through a solution but froze when I had to code. I rewrote and deleted the same line over and over again as the time passed. Finally the interviewer told me he was out of time and the interview was over. While my next technical interviews went better, even the interviews for the job I eventually accepted sometimes left me exhausted and certain that I hadn’t made it to the next round.
I prepared for technical interviews in several ways. I used the popular book Cracking The Coding Interview for explanations of the concepts I needed to know about and as a huge source of practice problems. The number of websites and books with practice problems is overwhelming so I valued having one source of high quality problems sorted by topic and difficulty. I also took a half credit problem solving seminar during the spring semester of my senior year and asked my friends to give me mock interviews.
Since I was still in school, the Computer Science concepts tested in coding interviews were familiar to me. But I also needed to learn how to perform during a technical interview. For example, you must remain calm when you don’t know something and ask for hints when needed. You must also articulate your thoughts while you are solving a problem. Doing well at technical interviews is vital for landing a software engineering job. The book Cracking The Coding Interview and your programmer friends are a fantastic resource.
Throughout the job search I felt that I was just not experienced enough to get a software engineering job. I wondered if I needed to do an internship or a developer bootcamp before I could be hired. However, I found that companies were willing to hire me based on my degree, non-technical internship experience, online presence and performance on technical interviews. Doing my research and choosing the jobs that best suited me further increased my chances of being hired for a job that I would love.