It is that time of the year again and I’ve decided to make one big post on the frequently asked questions I get around this time of the year.
1. Finding Internships
There is no substitute for real experience and projects. Full stop. The earlier you have an internship, the more highly sought after you will be, the faster you will grow and mature, and the more options you will have down-the-road. Say you hated your job and now you want to try grad school / research route –very good option for those who despise industry.
First things first, read “Applying for Internships: and Other Things That Made Me Cry” https://medium.com/@codertwalker/applying-for-internships-and-other-things-that-made-me-cry-8e49581b2179#.rihh7wj76. Spot on.
“Surprisingly, when I talk to students in my department the number one reason why they haven’t had any internships is simply because they haven’t applied for any.” => sadly, this is becoming far too common and it will hurt you big time in the future. It also shows lack of work ethic. No opportunity is ever given to you. Also because the competition is so fierce, there is no excuse to not have an internship or two under your belt.
“I generally recommend students start applying for internships after completing their first full year of computer science courses.” => The earlier, the better. If you only have one internship by your senior year and you didn’t like what you did in your internship, then you may be in-the-dark on what you full-time position after graduation will be. The more experience you have, the more knowledge and options you will have (and earning power).
A former student of mine wrote:
“@0xmchow @codertwalker True that, having no CS job experience under my belt made my first job search out of college way harder!” — Andy Haskell (@AndyHaskell2013), September 19, 2016. Source: https://twitter.com/AndyHaskell2013/status/777703814551986176
If you haven’t done so already, read “The Best Thing To Do In Early Summer for Undergraduates: Prepare For Opportunities Next Summer” https://mchow01.github.io/career/2017/06/21/prepare-for-next-summer.html. I thoroughly enjoyed writing this and it should have the tips on what you need to do to land your first internship.
If you are a freshman or sophomore, there is absolutely nothing wrong with that you never had any real tech experience –that’s perfectly okay and normal, don’t panic. If I was interviewing you for an internship opportunity, two important starting questions I will ask you:
“Tell me about your first job” => The reason why I ask this question: to see your work ethic and track record. If you are curious about my first job, I was a bookseller at Barnes and Noble; started working there in the summer after my sophomore year in high school in 1996, worked there for five years. I had a blast working there.
“What drove your interest into studying Computer Science?” => The reason why I ask this question: to see if you have genuine interest in Computer Science and you didn’t go into CS because of the money or for material reasons. Many of my friends ask this as an interview question now because of the spike in the number of undergraduates pursuing a CS degree across the country.
2. Technical Interviews
To quote Bill Langengberg (Tufts Class of 2001): “for the love of God, PRACTICE! Even “A” students will not necessarily be able to breeze through a technical interview. https://codefights.com/interview-practice and https://www.hackerrank.com. Practice easy and medium difficulty problems. (Hard ones don’t fit in the time allotted.) You should be able to complete them in 20-30 minutes. Patterns should emerge when you’ve done enough of them. They should also be fun.”
Also read http://blog.triplebyte.com/how-to-pass-a-programming-interview, one of the most thorough articles I’ve seen on the topic. Discussion on Hacker News: https://news.ycombinator.com/item?id=11246917
Cyber Security interviews are a bit different. Read:
- Lesley Carhart’s article “Starting an InfoSec Career – The Megamix – Chapter 7”: https://tisiphone.net/2016/08/26/starting-an-infosec-career-the-megamix-chapter-7/
- Daniel Miessler’s Cyber Security Interview Questions, 2018 Update: https://danielmiessler.com/study/infosec_interview_questions/
3. Grad School
If I had a magic wand to make one change, I want to see all undergraduates have at least one internship and at least one research experience. If you are planning to go to grad school to gain more experience or to be more marketable, then you are going to grad school for the wrong reasons. Again, there is no substitute for real experience and projects. When I write letters of recommendation for former students to grad school, the first question I ask is “why?” A great reason is to delve deeper into a certain area in CS like systems, to specialize in a topic. A former student of mine from over 5 years ago wrote to me an excellent and heartfelt reason why he finally wanted to go back to get a Master Degree:
“I feel like I cut some corners and didn’t learn enough in my four years at Tufts, for instance I never took a class in operating systems, computer networking, ML etc. I’ve gotten pretty far in the general field of software engineering, but I’m now at the stage of my career where I need to pick a vertical and do a deep dive into it to advance my career, rather then be a general all-round software engineer. Grad school will give me a platform to learn new areas of computer science, and to pick one or two areas to focus on.” => Bam.
A great guide for Ph.D. grad school application (which is a bit different for Master’s Degree) is available at https://etherpad.openstack.org/p/graduate-application maintained by Remy Wang (Tufts Class of 2017, now Ph.D. candidate at University of Washington, https://homes.cs.washington.edu/~remywang/).
4. The Importance of Projects and Activities Outside of the Classroom
I am no longer using the term “side project” because it is too narrow and Software Engineering-heavy. If you are aiming for a career in Cyber Security, doing Capture The Flag competitions or building a malware lab is equivalent to doing a software side project. My friend and colleague Matt Weinberg (A ‘08 and F ‘17), now a security analyst at a well known financial services company, asks Cyber Security candidates what activities they do outside of the classroom.
Nonetheless, having a portfolio is very important. Industry or grad school, doesn’t matter, non-negotiable. Read https://mchow01.github.io/tech/career/education/2017/01/16/the-importance-of-side-projects.html
If you are applying to the top tech companies and startups, projects outside the classroom are looked at highly. I know for sure that Facebook weigh side projects very heavily as evident by this line: “prospective interns should make sure to highlight projects they’ve worked on outside of the classroom.” Source: https://www.businessinsider.com/what-is-it-like-to-intern-at-facebook-2016-8/#so-what-does-facebook-look-for-in-its-interns-11. Ditto with Google as evident by this line: “Yes, a top-tier school or a high GPA can help but what Google is really looking for are builders. Show them that you have a passion outside of the classroom. You can do anything from starting a little project like a simple website, or even launching a full on startup. Just demonstrate that you have the creativity, passion, and drive to start something from beginning to end.” Source: https://medium.com/@andretacuyan/how-to-increase-your-chances-of-getting-an-internship-at-google-2fed4ce91b35
Even friend and colleague Norman Ramsey wrote on Stack Exchange: “If you didn’t get the chance to build a number of interesting projects during your education, shame on your instructors. But you can build those projects now. Scour web sites for interesting problems.” Source: https://programmers.stackexchange.com/questions/43528/im-graduating-with-a-computer-science-degree-but-i-dont-feel-like-i-know-how-t/43545#43545