Chris Mar

The Art of Ruby Technical Interviews

The Art of Ruby Technical Interviews

by Chris Mar

The video "The Art of Ruby Technical Interviews" presented by Chris Mar offers valuable insights for new Ruby developers preparing for technical interviews. With over 15 years of interviewing experience, Mar addresses common challenges faced by early-career developers and provides practical strategies for success in the interview process.

Key points discussed in the video include:

- Preparation and Experience: Mar emphasizes the importance of building meaningful projects to showcase skills. He suggests selecting a personal passion project, such as creating a website for managing a collection, which adds depth to a portfolio.
- Using Ruby Gems: He recommends utilizing widely adopted gems, particularly Devise, which many companies use, to demonstrate familiarity with industry standards.
- Community Engagement: Mar encourages reaching out to the Ruby community for collaboration and learning opportunities, including sharing projects on platforms like GitHub and Heroku.
- Open Source Contribution: Getting involved in open source development can enhance both knowledge and resume visibility. Mar highlights that even contributing documentation is a meaningful way to engage.
- Interview Techniques: Understanding interview formats, particularly the whiteboard technique, is crucial. Candidates should practice problem-solving out loud and demonstrate clear thought processes while coding.

- Understanding the Ruby Ecosystem: Staying informed about the latest developments in Ruby through podcasts and community events helps candidates make relevant inquiries during interviews.
- Articulating Thought Process: When faced with algorithmic questions, it’s important to clarify questions, demonstrate clear reasoning, and show the ability to optimize solutions collaboratively.

- Culture Fit and Curiosity: Mar stresses that interviewers seek candidates who are eager to learn, demonstrate curiosity, and show a willingness to solve problems collaboratively.

- Final Touches: Preparing thoughtful questions for the interviewer and personalizing applications—through customized cover letters and displaying genuine interest in the company—can differentiate candidates.

In conclusion, Mar's talk emphasizes that success in Ruby technical interviews lies not only in technical ability but also in project engagement, community involvement, and confidence in expressing one's thought process during problem-solving. His insights aim to empower aspiring Ruby developers to approach interviews effectively and make a positive impression.

00:00:14.320 Alright, welcome everyone! Before I get started today, I just want to ask who here is a Ruby expert for this interview session? Okay, great! So, this session is about Ruby technical interviews. My name is Chris Mar, and I'm a software engineer at Custom Inc. I've been doing technical interviews for over 15 years. I started with C++ interviews, then moved on to Java interviews, and now I focus on Ruby interviews. Throughout all this time, early career developers have always faced similar challenges in their interviews.
00:00:30.079 You've been learning Ruby, and there are many great resources available. Maybe you're attending a bootcamp, taking online coding courses, or reading books. Now, you're ready to start interviewing for your first job. The first thing you'll notice when you look at job descriptions is that they often require one to two years of experience. They may also specify that applicants should have experience with a scripting language. If you don’t have any experience, going into these interviews can leave you with nothing interesting to discuss. So, how do you gain that experience?
00:01:06.260 You build something. This is my number one recommendation: build something meaningful. Don’t just build anything; find something in your life that you’re passionate about and create a project around that. For instance, if you collect Magic: The Gathering cards, consider building a website to manage your collection. Instead of just displaying your cards, create something interesting. Maybe you could write an algorithm to calculate the future value of your cards next year. This adds an intriguing element to your project.
00:01:30.020 As you start building, reach out into the community and utilize some gems. Dive into the Ruby community to find helpful gems. If you only have time to pull in one gem, always choose Devise. Every company you interview with is likely to use it. Once you've created this project on your laptop, push your code to GitHub. If you haven’t done this before, this is a cathartic moment where you share what you’ve created with the world.
00:01:58.759 After you push it to GitHub, deploy it to a platform like Heroku. The reason for this step is to demonstrate that you can create something on your laptop and get it production-ready for everyone to use. Include the link to your project along with your resume. Before we interview you, we will likely look at that link and appreciate how well you’ve crafted your Magic: The Gathering website and how you’ve calculated future values. This can lead to interesting discussions during the interview.
00:02:12.480 Just like when you invite someone over to your house, you want to tidy up your source code before you showcase it. Clean it up by removing any commented-out code and ensuring that the indentation looks neat. One important skill for a developer is the ability to explain what they have built. There's a technique called rubber duck debugging: keep a rubber duck on your desk, and if you're stuck on a problem, talk to the duck about it. Often, the solution will become clear during this process.
00:02:48.390 In a similar fashion, find a duck and practice describing what you've built. You may want to describe your project to non-technical people in your life. For instance, you could tell your parents about the website you've built for your Magic: The Gathering cards, explaining how you've determined their future value. Then, attend local meetups and share your project with some technical folks to see what questions they have.
00:03:03.220 Now, all the learning you’ve done—from coding school, boot camps, and your passion projects—will fill about half of your resume. The next step that you should take to fill out the other half is to contribute to open source. Even if you don’t feel like you have enough Ruby knowledge to contribute to projects, every project needs documentation. Understand that being able to read someone else's source code, comprehend it, and then document it is challenging. If you can create a pull request and engage with the project team to get it merged, that’s a great demonstration of your abilities.
00:03:39.540 A friend of mine, Kevin, is known for his pedantic contributions. He approached many high-profile projects on GitHub and pointed out that they were using the en dash (–) in the years of their licenses instead of the grammatically correct em dash (—). While this may seem trivial, he got engaged with many project teams and is now one of the top ten contributors on Bootstrap. Now, with a lot of experience, you can build a solid resume.
00:04:11.890 Here’s the secret: most developers are quite busy, and during the interview process, they may quickly scan your resume, asking questions based on what you’ve written. Therefore, you have the opportunity to construct the conversation beforehand. Make sure to include your significant projects, books you’ve read, and classes you've completed on your resume. By doing this, you can practice conversing about them before you even step into the interview room.
00:04:52.860 In terms of practice, remember that a technical interview is quite different from just writing Ruby on your laptop. Typically, during an interview, you'll be asked to solve a problem on a whiteboard. If you have never done this before, the context switch can be disorienting. Therefore, I recommend finding a whiteboard somewhere to practice solving problems while talking aloud to yourself. For instance, say things like, 'I’m going to create this array, and now I’m going to iterate through the array.' Remember, the whiteboard doesn’t compile, so it doesn’t have to be perfect.
00:05:17.950 However, don’t remain silent throughout the process; it’s awkward for everyone when we are just watching the back of your head as you're quietly pondering a problem. Once you've practiced some coding on a whiteboard, also work on your domain modeling. This involves creating things like UML diagrams, ActiveRecord models, or Ruby classes to demonstrate how they relate to each other.
00:05:36.590 Consider how you would model a conference. For example, you could describe that a conference has many sessions, each session has one speaker, and each session has many attendees. When writing on the whiteboard, start in the center, as this gives you more space for annotations or inserting code whenever required.
00:06:18.150 Before entering any interview, remember that Ruby is a community, and it’s vital to understand what’s happening in that community. At RubyConf, you have a great opportunity to learn from thought leaders in the Ruby ecosystem. Attend their talks, ask insightful questions, and engage in discussions with them.
00:06:40.240 Additionally, podcasts are an excellent resource for staying updated on the Ruby community. You can listen to Ruby 5 for short episodes detailing the latest news in Ruby, but if you have time for only one podcast, I would recommend 'Ruby Rogues', which interviews many prominent figures in the Ruby community and offers an extensive back catalog.
00:07:14.630 Stay informed about new updates, such as Ruby 2.3, which is currently in preview. If you know what’s upcoming, you can ask insightful questions during your interview, such as inquiring about the new navigation operator in Ruby 2.3 or the Law of Demeter. If you are interviewing for a Rails position, familiarize yourself with Action Cable, the new WebSocket framework.
00:07:35.930 During the interview, the interviewer may ask you about your preferred code editor. Never say, 'I use whatever you want me to use.' Always have an answer ready. Developers care deeply about their tools and take pride in their craft. Say something like, 'I primarily use Atom, RSpec, or Cucumber.' This shows you're engaged and competent.
00:08:05.260 It's worth mentioning that a lot of people might claim to be Ruby experts on their resumes. Be cautious with that; if the resume circulates among developers before your interview, they will have high expectations. Expect to demonstrate your knowledge under scrutiny.
00:08:22.590 When you come into the interview, you will need to impress the developers who are seeking candidates with curious minds. This means being coachable, passionate about solving problems, and enthusiastic. Interestingly, Ruby experts are not what companies are specifically looking for. Instead, they're interested in candidates who are willing to learn and grow.
00:09:05.580 During your interviews, remember that engineers will likely conduct the technical portions. We will come from our desks, enjoying solving problems, to interview you. Our goal is to discover if we can work together to solve problems, so project your willingness to collaborate.
00:09:40.200 Given that we spend so much time on our computers, we genuinely wish to find someone who can solve problems with us. You don’t have to know Ruby extensively; as a mentor, I can teach you. Within the initial hour of your interview, I will decide if we can efficiently collaborate at our desks over the long term. This is essential as I may end up spending more time with you than my own spouse.
00:10:04.920 Once you're on board, my manager will want to know how much Ruby knowledge you possess. Most Ruby interviews will focus heavily on the Enumerable module, so if you’re new to Ruby, ensure you're familiar with it. If you're short on time, learn how to use methods like map and inject, as they frequently come up in interview scenarios.
00:10:45.460 When it comes to algorithm questions, ensure you can explain your thought process, as we seek a balance of logical reasoning and coding abilities. For example, I might ask you to determine if two integers in an array sum to a specific value. Even if you don't have a computer science background, these questions are more about how you think and less about having a perfect solution.
00:11:19.970 A wise strategy in these scenarios is to ask clarifying questions to ensure your understanding of the prompt. Then, offer a brute force solution before refining it. Look for bottlenecks and redundant lines of code, optimizing where you can. It’s perfectly okay to express your struggle with any problem; invite the interviewer to collaborate. Developers enjoy pairing with candidates who are engaged and open.
00:11:51.800 When asked during an interview, never state, 'I can just Google that.' While that’s true, the interview's purpose is to assess your thought process. As the interview wraps up, typically, the interviewer will ask if you have any questions. Always come prepared with questions, such as inquiries about the experience of using technologies mentioned during the interview or how the company utilizes tools.
00:12:14.900 It's important to emphasize fit within the company’s culture. Not all places will be a good match for you, but there will be the right spot. Keep in mind that the interviewer genuinely wants to hire you; hiring is a time-consuming process. To facilitate hiring, candidates should be ready to interact naturally and display curiosity.
00:12:44.130 After the talk concluded, there were numerous questions. If you have any queries about interviewing or resumes, feel free to ask. One participant raised a pertinent question about the hard questions asked during interviews. Many technical interviews ask challenging questions; for instance, a classic question is, 'How many windows are in Seattle's buildings?' This is more about the candidate's approach to reasoning the problem rather than finding the precise answer.
00:13:22.190 Another individual asked about available resources beyond traditional methods for preparing for interviews. I shared that while the 'Cracking the Coding Interview' book is popular, it can be quite involved. It contains details about 189 algorithms and could be overwhelming, but you don’t need to memorize all of them. Instead, focus on a few common patterns or concepts that arise repeatedly in interviews.
00:13:57.900 When dealing with problems or algorithms, the approach is crucial; explore the problem with clear reasoning. Practice articulating your thought processes out loud. Over the years of interviewing, I have often found that asking candidates the same question multiple times reveals varied and intriguing techniques.
00:14:41.900 There were also comments about hiring practices and various candidate sources. The essence is not to settle on one excellent background; we have engaged candidates with diverse experiences—from college graduates to those who went through boot camps, and even self-taught individuals. Why am I saying this? Because we would prefer those who are eager to learn.
00:15:17.020 Someone also asked about dos and don’ts when it comes to blogging. I strongly encourage you to share your thoughts online, as maintaining a blog can showcase your ideas and expertise. Keep in mind this resource is valuable as it allows companies to learn about you before an interview. It's a great conversation starter.
00:15:52.070 One closing thought on how to stand out when you send a cold resume. With hundreds of resumes pouring in daily, the standout candidates are those who take the time to research the company. A personalized cover letter can make a difference in how your application is perceived. It captures attention if it’s clear that you genuinely want to work with them.
00:16:25.100 Furthermore, participate in local meetup groups to network with developers at companies that interest you. They are often present in these spaces and could connect you to relevant information related to job applications. If you show genuine interest in what they are doing and express curiosity about their projects, that connection is invaluable.
00:17:00.130 In terms of project involvement, whether you’re contributing to open-source or creating personal projects, don’t underestimate the value of sharing your interest with the community. For senior engineers, reviewing GitHub projects is often more telling than resumes, so consider it your portfolio. Once you have examples of your work available, the next step is to engage actively in discussions about your projects.
00:17:37.020 Regarding candidate homework, experimentation is ongoing. We’ve evolved over time, moving from cold tests to sending out problems for candidates to complete before their interviews. The aim is to facilitate better results, where candidates can showcase their solutions and prompt engaging discussions during the interview.
00:18:13.360 The candidates often ask how much time they should allocate to these assignments. We believe projects should take around one or two hours of effort—not an exhaustive commitment. Ensure the expectations are reasonable, firmly aligning your inquiry with the company’s requirements without overwhelming you.
00:18:51.230 Concerning making candidates feel comfortable during interviews, it’s essential to bring the conversation back to personal interests when tension arises. Getting candidates to talk about hobbies can help break the ice and make them more relaxed. Sometimes talking about personal projects can reignite the energy in the room and facilitate a shift back to technical topics.
00:19:25.400 The quitting or acceptance rate for candidates also carries importance, as well as all the factors involved in the querying process. Hiring forces engineering managers to step away from their tasks, so understanding candidate experiences is crucial in making that dialogue enjoyable and effective.
00:19:57.360 In conclusion, if you're interested in discussing interviews further, feel free to approach any of us at the conference. We're eager to help with any tips or questions you may have around resumes, Ruby, or just general advice. Don’t hesitate to reach out on Twitter at CMR. Thank you!