It’s October, and I just passed my 1 year anniversary working as a software engineer at Amazon.com so I think this is a good time to share some advice that could’ve helped me get here in the first place.
##Figure out what motivates you At the end of all this job searching you’re going to end up with a straight up 9-5, 50 weeks a year job, so it’ll be worth figuring out what motivates you about the tech industry. Small teams, large teams, big companies, small companies, this industry has it all, but it may not all be for you.
Start early (but it’s not all about the job at first) People may tell you to start looking for internships the first year of college and to always have that career focused attitude throughout your 4 years; to me, college itself is extremely valuable for other reasons than simply to land a job, so my advice is to diversify your class list and scratch the surface on a variety of different topics related to computer science. I wouldn’t stress job searching over nurturing that passion for computer science. Through your professors and classes you’ll get a glimpse into the many different concepts and trajectories available within the computer science field; at first, just pay attention to what you like.
###Find an internship Internships will go a long way for getting you interviews down the line when you’re looking for a full time job, but the biggest, and equally important thing they do is allow you to immerse yourself in the industry. For a few months you’ll get a real idea of what it means to contribute to a team within the company. That kind of experience is invaluable and exposes you to the things they don’t teach you in college: stuff like project planning, testing, task estimation, developing systems at scale and working on a real team (cause let’s be honest, team projects in college are a joke).
I’d recommend interning at at least one company. From the company’s perspective, the internship program is just a multiple month interview for a full time position. From your perspective, 9-times-out-of-10, if you do a good job, you’ll end up with a job offer to take the stress off a little when you begin the real job hunt later.
###Different types of companies When I was on the job hunt I was torn between going after the big tech giants or pursuing a smaller company. What drew me in about small companies was the idea of working with newer technologies in a young, fast paced environment. I went back and forth for months and when my interviewing was over I ended up torn between Amazon and Jibe (a small company based in NYC). I was interested in Jibe because their engineers did web application development with NodeJS and other newer JS frameworks. I was worried that at Amazon I’d end up on a development team that didn’t align with my interests, and I wouldn’t be learning what I wanted to learn. In the end, I choose Amazon for a variety of factors but mostly because I was able to talk to a recruiter and get placed on a team that somewhat aligned with my interests (though, in the end, it was more of a gut feel sort of thing).
Flash forward a year and I’m glad I choose to work at Amazon. I get to see everyday how development teams run in the context of a company operating at enormous scale. I have good relationships with my managers and often talk to them about project planning, estimation, politics and how to juggle competing priorities when it comes to different projects. I have access to many industry veterans who are open to giving advice and I’m fully aware that this sort of experience is going to go a long way in the future. Additionally, on a daily basis I interact with engineers from around the company working on many different things such as video streaming, cloud services, security, UX etc. (the list is endless). If I was interested in machine learning I could walk down the hall and talk to engineers at the cutting edge of that discipline working on enormous, complex problems. I just don’t think I could’ve gotten the same level of experience in so many aspects of the industry at Jibe.
If you’re not totally sure what you’re passionate about, a larger company may be a good choice because you’ll get access to engineers working with different technologies on many different kinds of problems. Downsides of a large company could be that you’d end up working on a team that you don’t totally jive with (i.e. your teammates will be random and you won’t really know where you’ll be placed until you start). Smaller companies will give you that distinct company culture and you’ll usually have the opportunity to meet your future teammates and know exactly what you’ll work on before deciding the sign your offer letter. Either way, talking to somebody who already works at the company, or asking targeted questions to recruiters will help give you a glimpse inside the company and help you decide if it’s somewhere you’d enjoy working.
##Get the interview Let me preface this section by saying it’s important to understand where you stand in this equation. Companies are competing for top talent and it’s up to you to show them that you are worth the money. At the same time, your career goals and aspirations are not worth sacrificing for more money; you’ll regret wasting time working at a company that doesn’t care about your personal growth.
Depending on the company, career fairs may or may not get you an interview any faster than submitting your resume online. The real value of a career fair is being able to connect with employees from different companies and hear what they have to say about the job. Culture fit is extremely important. You’re going to work at this place 40 hours a week, 50ish weeks a year for multiple years, culture fit can be the difference between sitting quietly at your desk all day while the minutes tick by, or feeling energized to come into work everyday. Getting a feel for different companies and speaking to people who have been working day in and day out in the industry is what career fairs are all about.
Ask questions. Talk about what you’ve been working on.
Showing your passion for the tech industry and being excited about being a part of the company goes a long way. These guys have been standing around spewing off the same paragraph about their company all day and hearing from a million students what they did in their data structures class. I’d talk to the employees manning the booth about what it’s like to work there. Mention the side projects you’ve been working on: people like to hear about interesting projects and you can use that as the starting point instead of the abstract “I’m interested in learning more about this…” type of conversation. You could research on Glassdoor or other sites some nuanced aspect of the company that interests you and ask them about it.
If you’re talking to recruiters or engineers at a company you’re interested in, I’ve found that grabbing their name or business card so you can follow-up on LinkedIn will help much more than simply handing over your resume and walking away. This way you’ll have a contact at the company to talk with later on if you have more questions. The insider secret here is that we want to help you succeed. Most of the engineers I work with would be more than happy to answer questions or even pass on a referral if you’ve taken the effort to reach out and show that you’d be a good asset to the company. Showing your passion for the tech industry and being excited about being a part of the company goes a long way. Here are a few questions I’d recommend to get the conversation going:
I’ve been working on this thing in my spare time and I’m a big fan of android development (or something), would I get a chance to work on anything like that here? Do you tend to feel like you have a good work-life balance? What’s the team selection process work once I get an offer, would I be randomly placed or have some preference over where I go? I especially like this last question if you are talking with a medium to large company. I’ve seen first hand how working on a development team that doesn’t align with your interests can have a huge negative impact on overall happiness. Even though a company as a whole does something interesting, it doesn’t mean every team works on something that interests you. You’ll find that teams are extremely targeted towards one area of the business and may focus entirely on machine learning, or front-end web development, or network security, so being able to shop around once you have an offer is huge.
You’ll find that teams are extremely targeted towards one area of the business and may focus entirely on machine learning, or front-end web development or network security, so being able to shop around once you have an offer is huge. With startups and smaller companies you’ll probably find that the engineers work on a very specific software stack. This means if you don’t find the technology interesting you won’t have a chance to move within the company to a different team, so talking to small companies at career fairs is particularly valuable for finding out what types of work you’ll be doing.
###Build your network
Speaking from the perspective of the alumni and on behalf of numerous colleagues, we love to talk about the industry to aspiring software engineers; don’t feel like you have to go in blind. A referral from an employee who already works at the company instantly puts your resume in front of managers looking to hire instead of in a pool of applicants. When I was looking for an internship my junior year of college, I was lucky enough to have a few friends who had interned at various companies to refer me. If you don’t have a big network, I’d recommend going to your computer science department and seeing if there is an alumni program or some way to get in touch with grads who are working in the industry (you could also go on LinkedIn to find those people). Main idea here is to make a connection with somebody working at the company you’re interested in, maybe not to ask for a referral right away, but to talk with them about the company. Speaking from the perspective of the alumni and on behalf of numerous colleagues; we love to talk about the industry to aspiring software engineers, don’t feel like you have to go in blind.
Apply through multiple channels The tech industry is extremely competitive; not only for those seeking employment but even more so for the employers. With this in mind many companies have relationships with universities and will give talks, sponsor events and whatnot for computer science students. When you’re in the market for a job I’d keep these kinds of events on your radar as an opportunity to pass off your resume or network, if nothing else.
Hand off your resume at career fairs, apply online, try to get an internship with the company first and find someone who works there to refer you. The more channels the better.
##Nail the interview I’m not going to spend too much time on this section because there are much better resources out there, but hopefully I can point you in the right direction.
Talking with my colleagues, we unanimously agree that actually interviewing is the number one best means of practice, so any form of preparation that most closely simulates that environment is best. Mock interviews with friends would probably be the closest thing to the real deal, but If you want to practice solo LeetCode.com is a great interview practice site where you code solutions to interview questions right in the browser. Additionally, Cracking the Coding Interview is the gold standard for interview prep books; almost everyone I knew in college had, or borrowed a copy of, this book.
The hard part about interviewing for me was always the stress and on the spot thinking. I would prepare using the methods I just mentioned, feel confident in my problem solving skills then just go blank when I got in the room. For me, simulating that interview environment by coding on a whiteboard (or on paper) and thinking out loud helped this a bit.
Companies are looking for candidates who are passionate about computer science, are good problem solvers and have a firm grasp on the basics. The imposter syndrome can kick in when you start putting yourself out there, but in reality nobody expects you to know how to design complex distributed systems (or something crazy like that) right out of college. Companies are looking for candidates who are passionate about computer science, are good problem solvers and have a firm grasp on the basics. No need to instantly know the solution to an interview question, interviewers are just looking at how you think about the problem and move towards a solution. Perfect syntax is not necessary, in fact, most of the time pseudo code is perfectly acceptable as long as you can articulate a decently efficient solution to the problem without glaring bugs.
##In closing The job search will be challenging and stressful, but always put yourself and your career goals first. Interviewing is a skill that can be practiced and working on a side projects will help broaden your knowledge of what the industry has to offer, but figuring out what motivates you is equally as important. If you can find a company that enables you to continuously learn and challenge yourself, you’ll be happier in the long run.