New Course Launch!
I’m ecstatic to announce the launch of Udacity’s newest course: “Technical Interview | Algorithms and Data Structures in Python.” But what is a technical interview, and what specific skills do you need to master, in order to perform well in one?
Let’s start by talking about “the technical interview”. When you’re interviewing for pretty much any job that requires coding, you’ll be asked a mix of behavioral, job-skills, and algorithmic questions. Behavioral questions are meant to assess personality traits, and usually revolve around your actions in past experiences and hypothetical situations. Questions related to job skills focus on your knowledge as it applies directly to the job you’re interviewing for, like your ability to use classifiers if you’re applying for a data science job or whether you really know the Activity lifecycle as an Android developer. Algorithmic questions are meant to provide your potential employer with insight into your thought processes. You’re normally given a vague problem and asked to write code in your language of choice to solve it within a time limit.
“Algorithmic questions are meant to provide your potential employer with insight into your thought processes.”
Most Udacity courses are meant to help you with the jobs-skills questions—to teach you the tools and terms you need to know in your actual job. Although these questions are certainly “technical,” when we talk about “technical interview” we normally focus on the algorithm questions. Questions about job skills are actually less widely used than you’d expect. For some roles, particularly at bigger companies, the entire technical part of your interview may be algorithmic questions. If you’re a junior developer, companies will generally make one of two assumptions about you, either a) that you already have the necessary skills, based on projects and experiences listed on your résumé, or b) that you’ll be able to quickly learn the skills on the job.
Given that many of your interviews for programming jobs will be algorithmic, this raises the question—how do I prepare for having my thought processes tested? It turns out that across companies and across roles, these questions and the answers expected are actually fairly standardized. The way that you convey your thoughts about a problem tells an interviewer a lot about your algorithmic thinking, and thus a lot of what interviewers look for is in how you communicate about a problem. In fact, how you express your thoughts often carries more weight than whether you can solve the problem.
“The way that you convey your thoughts about a problem tells an interviewer a lot about your algorithmic thinking. In fact, how you express your thoughts often carries more weight than whether you can solve the problem.”
There’s something else very important to note—many questions of this type require background knowledge of common algorithms and data structures. This background knowledge is taught in university courses to computer science majors, but it’s often not used every day in programming jobs. If you work with a graph database, you’ll probably have a good idea of what a graph is, but most normal developers won’t encounter them on the job. There are a multitude of of amazing developers out there who have plenty of prior experience in their field, but they can often be at a disadvantage when facing questions of this kind, if they either don’t have a computer science degree, or are some years away from the classroom.
I built this course with two goals in mind: teaching the skills taught in university courses that pop up often in algorithmic technical interviews, and showing students how to think algorithmically, while exploring how to express their thoughts in the way interviewers want to see. Changing the entire industry standard won’t happen overnight, but at Udacity we’re doing our best to try and make tech careers accessible to everyone, even people from non-traditional backgrounds.
I built this course with two goals in mind: teaching the skills taught in university courses that pop up often in algorithmic technical interviews, and showing students how to think algorithmically.
The course is mainly composed of lessons about common algorithms and data structures. There are no proofs, no Turing machines, no advanced mathematics—we only address what you need to know for a technical interview, and primarily focus on algorithmic thinking: in what circumstances should you use this data structure? How much extra memory will this algorithm require? How do you test that nothing breaks with weird inputs?
Towards the end there’s a lesson about breaking down algorithmic questions and how to communicate your thoughts with an interviewer. We’ve even provided a way for you to practice interviewing live with other software developers and Udacity students through a partnership with Pramp, the free online platform for practicing technical interviews. Udacity students can sign up with their Udacity credentials on Pramp to get unlimited live interview practice (even though the number of interviews is normally restricted!). You’ll get matched with a peer with similar skills and interview each other using provided algorithms questions. We’re very eager to share this opportunity with you—practice makes perfect!—and Pramp provides one of the best platforms for getting that practice.
The course is available for free right now. You don’t need knowledge of any particular programming language to understand the conceptual explanations, but there are examples and exercises in Python. Thus, the course is also included in our Python based Nanodegree programs: Full Stack, Data Analyst and Machine Learning. Along with the course you’ll have access to a project, where you’ll complete practice interview questions and get detailed feedback from a qualified grader.
Interviewing for a new job is daunting, but Udacity’s new course will take some of the mystery out of one of the most stressful parts. With plenty of practice and instruction on both algorithms and data structures, as well as algorithmic thinking, you’ll be more than ready to succeed at your next technical interview.
Happy learning, and good luck on any technical interviews!