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!