RESUME WRITING 101
A resume is a brief document that clearly summarizes your education, your professional goals and accomplishments, and your applicable skills. A resume is often an employer’s first impression of an applicant, so it is important to have a good one that will help you stand out and land the interview! Employers on average spend less than 10 seconds reading each resume they receive, so make sure to stick to the highlights and organize your information on the page so that the recruiter’s eye is drawn to the important info first. Summarizing your entire academic and professional life into bullet points can be challenging, so please use the helpful hints below when shaping your resume. This page will focus on the two key elements of a successful resume: format and content. Additional links to other helpful resources are provided below.
It’s a good idea to refer to sample resumes when constructing your own resume to determine which types of information should be included and how this information should be organized. Columbia’s Center for Career Education has a sample engineering resume on their website.
- Your resume should be limited to one 8.5″ x 11″ page.
- Each section should be clearly identified with its own header.
- Stick to the basic professional fonts: Times New Roman, Arial, Tahoma, etc. Don’t use anything too ornate or blocky. Pick one font and stick with it for the entire resume.
- Font size should be 10 – 12. No more, no less.
- Margins should be no smaller than 0.5″ on all sides.
- No big blocks of text! Use bullet points to summarize your accomplishments.
- List all education and experience in reverse chronological order. Your most recent experiences are usually the most relevant, so they should be listed first.
- White space is your friend. Don’t feel like you need to fill up the entire page, margin to margin, with text. Give the recruiter some breathing room on the page. This will enable them to focus on the important pieces of information, rather than having to search through text to find those pieces.
- Use the bold, underlining, and italic functions to draw the eye to important sections. But don’t go overboard! Too many formatting flourishes will make the resume look messy.
- Be consistent. If your Education section header is bold, make sure all your other section headers are bold too. Text should all be aligned consistently as well.
- Spell check and proofread! Never send out a resume with spelling or grammatical errors. Set your language preference in Microsoft Word to U.S. English so that spell check will pick up any errors. (Review tab -> Language -> Set Proofing Language).
Your resume should include (in the following order):
- Your contact information: name, professional or school e-mail address, address, phone number. If you have a website, feel free to include the URL in this section as long as all of the website content is strictly professional. This information should always be at the top of the resume, with your name bolder and larger than the rest of the contact info. Your name is the only item on your resume that can exceed 12-pt font. But don’t get crazy with it — keep it smaller than 24-pt.
- Education: Higher education only! Do not include high school information. List each college/university that you attended along with the degree awarded and field of study. You can include your GPA in this section, but it’s only a good idea to do so if it is above 3.0. Do not list all of the courses you have taken or plan to take — instead, list the 2-3 courses that are most relevant to the jobs you are applying for, and be sure you can discuss the course content in depth.
- Professional Experience:
- Each organization should get a line that includes the organization name & location, your position, and the duration of your time working for the organization.
- Follow each organization’s title line with a bullet-pointed description of your experience. Don’t just list your responsibilities as they were laid out in your job description. Highlight your actual accomplishments on the job — if you solved a specific problem, took initiative on a certain project, organized an event… these are the things employers want to see. Try to start each bullet point with an action verb, and quantify your successes – employers like to see numbers!
- Don’t give the blow-by-blow account of your time on the job. Each job should get 2-3 bullet points, and each bullet point should be no longer than 2 lines. Make your point and keep it concise!
- Research/Academic Project Experience: If you haven’t had much professional experience, you can bulk up your resume with your project experience. These can be school-based projects or independent projects — as long as you’ve done a significant amount of the technical work, you can list it. Project experiences should be formatted the same way as professional experiences, with a title line for each project followed by 2-3 bullet points highlighting the work being done.This is a great opportunity to showcase your technical skills in action! Which programming languages, operating systems, applications, etc did you use? How did you use them?
- Technical Skills: As a computer scientist, you should always include a list of the languages and technical skills that you have mastered on your resume. If you’ve listed a skill on your resume, it is fair game in a technical interview so only list the skills that you feel comfortable using on a day-to-day basis!
- Activities/awards/leadership: This extra information can be added to the resume only if a) it is very relevant to your professional goals or b) your resume is light on professional or project experience.
Your resume should NOT include:
- Personal information — age, race, citizenship, etc.
- Use of the first person — don’t start sentences with “I”
- An objective statement. Your objective is to get the job you applied for, which is already implied by the fact that you submitted your resume for consideration. An objective statement does nothing more at that point than waste vital page space.
- Irrelevant experiences. You may have had a great time working as a lifeguard that one summer, but that won’t help you land a job in the computer science industry.
- Images, graphics, or different ink colors.
- Salary info from previous jobs.
RESUME WRITING RESOURCES
- Center for Career Education – Career Planning Guide
- Center for Career Education – Basic Resume Tips
- Career Cup – This Is What a GOOD Resume Should Look Like
- Mashable – 12 Simple Tweaks That Make Your Resume Easier to Review
TECHNICAL INTERVIEW 101
The hiring process for an open position can often span several weeks, involving multiple rounds of interviews with multiple engineers, recruiters, and hiring managers. When interviewing for a technical job (i.e. software developer/engineer, project manager, data scientist, etc), you should expect at least one of these rounds to be a technical or coding interview. The technical interview is the employer’s chance to put your hard, analytical skills to the test and get a feel for how you solve problems. Many first time interviewees think of the technical interview as an intimidating barrier to entry to their dream job, but it’s a hurdle that can be overcome with practice and preparation. Below are a few helpful hints to help you get ready for your technical interviews.
HOW TO PREPARE FOR A TECHNICAL INTERVIEW
- Do your research. Look up information about the work being done at the company. This can often provide clues about the skills they will be looking for in a new employee. Also, be sure to read the job description thoroughly. The job posting will likely include a list of skills that the employer expects all applicants to have.
- Brush up on your basics. If it’s been awhile since you’ve taken an algorithms or data structures class, review the material! Everyone gets rusty with skills they don’t use everyday.
- Practice whiteboarding. It is very likely that you will be asked to code live on a whiteboard during your technical interview. If you aren’t used to working/problem solving in front of others, have a couple of friends watch while you solve some practice questions on a whiteboard.
- Be ready to discuss your resume in depth. The interviewer isn’t going to just ask about what you did in previous jobs or projects. They are going to want to hear about challenges you faced, failures you overcame, successes that you are particularly proud of, leadership roles you took on, etc.
- The morning of your interview, choose your outfit accordingly. In addition to assessing your ability to answer technical questions, interviewers are also assessing your cultural fit with the company — can they see you working in the company’s environment? For most companies in the tech world, business casual dress is acceptable for interviews. For most start-ups, you can skew more toward casual dress. If you are interviewing with a company in the financial sector, suits are still expected. If you are unsure of the company’s culture, business casual is a good bet.
WHAT TO DO DURING A TECHNICAL INTERVIEW
- Take your time. Don’t feel like you have to start working immediately as soon as a question is asked. Take a minute or two to gather your thoughts, think about the ‘big picture’ of the question, and determine how you will set out to solve it. But don’t solve the whole thing in your head! The interviewers will want to see your thought process in action, and it’s safe to assume they aren’t mind readers.
- Communicate. While you are solving a problem, talk through your thought process and the solution at which you arrive. This will show the interviewers exactly how you approached the problem, and if you start to go wrong somewhere, they will be able to catch it and nudge you in the right direction. If you can’t clearly communicate the work that you do, you won’t be considered a strong candidate, even if you come up with the correct solution.
- If you don’t know the answer to a question, be honest and say that you don’t know. It will look worse if you try to fumble your way through an answer. But if you admit to not knowing something, it is important to demonstrate your willingness and interest in learning. Doing some post-interview research and following up with a solution will show that you are invested in the work and eager to broaden your skill set.
- Ask questions. Interviewers want to see that you are engaged in the process and not just going through the motions. If something is confusing, ask for clarification.
- Cracking the Coding Interview
- The Interview and Beyond section has general interview strategies, technical questions, and offer negotiations (highly recommended) – Prioritize Chapters 1-4, 8, 9, and 11. These cover core topics
- Code Complete: A Practical Handbook of Software Construction
- Widely considered as one of the best practical programming guides – The Second Edition is fully updated and revised with new code samples
Online Coding Practice Tools:
- HackerRank – leading end-to-end hub of technical practice problems (highly recommended)
- Collaborative & Hands-on experience with general programming interview-level questions
- Leetcode – versatile platform for enhancing fundamental coding skills (highly recommended)
- One of the largest pools of coding questions, along with structured fundamentals training
- Firecode.io – daily technical interview practice with emphasis on fundamentals
- CareerCup – peer forum for interview questions and a mock interview service
- Python Tutor – programming fundamentals and code visualization
- Pramp – coding interview practices and live feedback & exercises
- HackerRank – leading end-to-end hub of technical practice problems (highly recommended)
- Algorist – A helpful wiki page that you can use as a self-study guide and resource
- Source 1 – Thorough guide on system design
- Source 2 – Breaks down how to solve system design questions with videos
- Source 3 – Breaks down how to solve system design questions
- Source 4 – System Design PRactice Problems. From here, use the system’s primer to make sure the answer you have is correct.
- Most companies do not require that you know any specific programming language before interviewing for a tech position. However, familiarity with a prominent language is generally a prerequisite for success. You should be familiar with the syntax of languages such as Java, Python, C#, C/C++, or Ruby. You should also know some of the languages’ nuances, such as how memory management works, or the most commonly used collections, libraries, etc.
- A lot of work at large companies involves storing and providing access to data in efficient ways. This requires a strong background in data structures. You’ll need to understand the inner workings of common data structures and be able to compare and contrast their usage in various applications. You will be expected to know the runtimes for common operations as well as how they use memory.
- Interviews typically will not be focused on rote memorization of algorithms. However, having a good understanding of the most common algorithms will likely make solving some of the questions a lot easier. Consider reviewing common algorithms such as traversals, divide and conquer, breadth-first search vs. depth-first search and understand the tradeoffs for each. Knowing the runtimes, theoretical limitations, and basic implementation strategies of different classes of algorithms is more important than memorizing the specific details of any given algorithm.
- Expect to be asked to write syntactically correct code—no pseudo code. If you feel a bit rusty coding without an IDE or coding in a specific language, it’s a good idea to dust off the cobwebs and get comfortable coding with a pen and paper. The most important thing a Software Development Engineer does is write scalable, robust, and well-tested code. These are the main evaluation criteria for your code. Make sure that you check for edge cases and validate that no bad input can slip through. This is your chance to show off your coding ability.
- Good design is paramount to extensible, bug-free, long-lived code. Employers know it’s possible to solve any given software problem in almost limitless ways, but when software needs to be extensible and maintainable, good software design is critical to success. One way to build lasting software is to use object-oriented design best practices. You should have a working knowledge of a few common and useful design patterns, along with how to write software in an object-oriented way. You likely won’t be asked to describe the details of how specific design patterns work, but expect to have to defend your design choices.
- Many of the challenges tech people face arise when figuring out how to most efficiently retrieve and store data for future use. You should be familiar with broad database concepts and their applications. The more you know about tradeoffs between relational and non-relational databases, the better prepared you will be.
- Systems have to work under very strict tolerances at a high load. It’s important to have an understanding of a few basic distributed computing concepts. Understanding topics such as service-oriented architectures, map-reduce, distributed caching, load balancing, and others, will help you formulate answers to some of the more complicated distributed architecture questions you might encounter.
- You typically won’t need to know how to build your own operating system from scratch, but you should be familiar with some OS topics that can affect code performance (e.g. memory management, processes, threads, synchronization, paging, and multithreading).
- Employers expect their engineers to be familiar with the fundamentals of how the internet works. Brush up on how browsers function at a high level, from DNS lookups and TCP/IP, to socket connections. Having a solid understanding of the fundamentals of how the world wide web works is a requirement.
General Machine Learning & Artificial Intelligence:
- Expect to be asked about data-driven modeling, train/test protocols, error analysis, and statistical significance. For example, given a problem definition, you should be able to formulate it as a machine learning problem and propose a solution, including ideas for data sources, annotation, modeling approaches, and potential pitfalls. Understand the basic AI/ML methods and algorithms – revisit your favorite ML and AI textbooks.
- Example/Standard Q: How would you design Facebook Newsfeed Ranking?
- Most important here is to know your ML basics really well. But be sure you can talk in detail about your favorite classification and regression algorithms. (How do you train it? SGD? What’s the cost function? How do you assess your model’s performance? How do you know if your model is overfitting/underfitting, and how do you address it? Do you regularize? How? Etc..)
ONLINE RESOURCES FOR TECH INTERVIEW TIPS
- Mashable – How to Ace Your Technical Interview
- Forbes – How to Ace Your Technical Interview
- About.com – Top 50 Tech Interview Questions
- Vault – 6 Interview Tips From Tech Recruiters
- Google Recruiters Share Technical Interview Tips
- CareerCup – Recent Interview Questions
- Business Insider – How to Nail an Interview in Software Engineering