Back when I was in seventh grade, my Biology teacher, Miss Bloom, sprung a pop-quiz to test how well we comprehended our prior night’s reading assignment. Half the class went pale as Miss Bloom handed out the Scantrons (aka an optical answer sheet). And even though I lugged my 20-pound text to-and-from school and spent an hour reading the 15-page assignment, my mind was still engulfed in panic at the prospect of having to write a test. But, I resolutely steeled myself to do my best.
After reading the first question, feeling confident that the correct answer was “A”, I glanced down in preparation to fill in the “A” bubble. Much to my surprise, my Scantron contained a dent in one bubble for each question. Miss Bloom had created her answer sheet on top of my copy!
I was suddenly in a position to ace the quiz in record time. Quite the dilemma! After glancing at the first five answers — I’m not perfect — I approached Miss Bloom with my answer sheet, explained the situation and received a clean Scantron. Final score, 18 out of 20, likely a few points higher than normal.
I’m now several years removed from that test, and interviewing for a position in Software Development is a far cry from a pop-quiz in seventh-grade Biology. Those of us interviewing usually have a degree in Computer Science (or a related field), many years of experience, expertise in multiple programming languages, design patterns, tools, and techniques. We should be prepared to ace the test. Emotions, trick questions, pressure, anxiety all play a part in making interviewing a dreadful experience.
At TextNow, we want candidates to feel great about their interview experience. Independent of a job offer, we want you to think that your time was well spent, you enjoyed the experience, learned from the experience and feel that you are better off having gone through the experience. So to get you a leg up I’d like to dent your Scantron (so to speak) as I walk you through our entire process, giving you the answers to help reduce pressure and anxiety while increasing your sense of satisfaction and enjoyment.
First, an outline of our interview process for a position in Software Development:
- Recruiter Phone Screen
- Hiring Manager Phone Screen
- Code Pair Phone Screen
- Problem Solving
- Object Oriented Analysis & Design
- Coding Best Practices
- Interpersonal Skills Assessment
In this post, I’ll cover everything you need to know to get high-marks during our Phone Screen Interviews. Ready for the answers? Read on, my future peers in Software Development.
Your chance to make a good first impression is on the phone. One of TextNow’s talented in-house recruiters will set up a call. Assuming all goes well on this initial call, you’ll next get on a call with the hiring manager. After hitting it off with the hiring manager, you’ll get to code pair with one of our developers — a chance to show off your skills.
Recruiter Phone Screening
Our recruiters (having already cross-checked your resume with the job requirements) want to get on a call with you to learn about your current situation, share with you the excitement at TextNow, and ask you a few high-level questions to make sure you’re for real. Here are a few sample questions:
Question: What’s the minimum power of 2 that produces a number that exceeds 3,500,000?
Just kidding. Most good software developers had the powers of 2 memorized at one point in time, much like I use to know the capital of every state in the United States. I’m sure you can re-memorize your powers of 2 in a matter of a few hours if it turns out to be important for your position. Here are some real examples of questions, although not the exact questions:
Question: For this position, you’ll be coding in <insert language here>. How long have you been coding in this language? How would you rate yourself on a scale of 1 to 10?
Answer: I’ve been professionally coding in <insert language here> for X years, and I consider myself a Y out of 10.
Okay, I hear you calling my bluff. You want to know what the magic numbers are for X and Y. Really, it’s just a question to generate conversation. You can be new with <insert language here>, but if you have experience with a related language then that’s fine. We can all learn a related language in a matter of days, as it’s mostly just syntax, a bit of semantics, and maybe a new IDE. Your expertise in the language or related language is important. We’d like you to be at level 6, 7, or 8 (9 means you can teach the language; 10 is you created the language). If you are below a 6, then we’ll find out later during the code paring so only lie if you want to see how far you can get in our process before your lie catches up with you. Please don’t lie.
Question: I see that earlier in your career you worked at <insert company name here> for X years/months. Tell me what you enjoyed the most, what you enjoyed the least, and why you finally decided to move on to your next opportunity?
Answer: We are looking for passion and sincerity in your answer. There’s always something enjoyable about a past experience, but we understand that life happens — conflicts, business decisions, career growth opportunities. Relax and let it flow. There are no wrong answers here unless you give off an impression of being a jerk. We have a policy of not hiring “Brilliant Jerks.”
Hiring Manager Phone Screening
Congrats! You’ve convinced our recruiter that, on paper at least, you are qualified for the position. The next step is to meet your potential new manager.
You’ll likely be spending as much time — or more — with your manager and peers as you do with your spouse and kids. (Yikes!!!) It’s essential that you enjoy your interactions with your manager. We want you to get a feeling that your manager has your best interests at heart — career growth, compensation, continuous feedback. Here are a few potential questions you might be asked along with answers:
Question: We’ve got a MySQL database table with a MyISAM engine, and the entire table is locked every 30 seconds for approximately 3 seconds causing 10% of traffic to timeout. How do you suggest we fix this problem?
Answer: Okay, I’m just being silly again. Our hiring manager will not be asking you questions related to our current production problems.
Here’s a more realistic set of questions:
Question: At this point, you’ve spoken to our recruiter and may have done some initial research to learn more about TextNow. Tell me what you know about TextNow. How do we make money? Have you tried our product?
Answer: TextNow provides both an “Over-the-Top” (OTT) service and a Wireless Service (operating as a Mobile Virtual Network Operator — MVNO). Our OTT service is a free app for iOS/Android where you can get a phone number and place/receive text/calls for free using a Wi-Fi network. We make money on our OTT services through advertising and in-app purchases. Our MVNO service offers up a low-cost wireless service that leverages our cool technology to create text and calling solutions. We make money on our MVNO service through a monthly subscription fee. Your biggest takeaway should be: download our free app and service to learn more about TextNow before your screening call.
Question: Describe your ideal next job.
Answer: When describing your “ideal” next job, try to focus on times in your career where the work you performed gave you the highest levels of satisfaction. For example, I love to code, yet as I matured in my career, I found that I can get satisfaction vicariously through other developers that I help train. However, coding is my first love, and I always want to find time to roll up my sleeves for a few hours each day — when possible.
Question: When pushing your code, we ask our developers to include an automated set of unit tests. How do you test your code before pushing? How do you know when you are done testing?
Answer: Many philosophies exist for how to ensure your code is “correct.” Unit testing is the best place to start because you are testing a small section of code, mocking out external resources and working with a debugging capable IDE to quickly squash bugs. For the TextNow problem space, we encourage “Statement Coverage Unit Testing.” We know when we are done testing when all lines of code have coverage by at least one test case. Our minimum standard is statement coverage; however, we often augment these tests with additional tests to check boundary conditions and various input permutations. We’re careful to not go overboard in such a way that could require high maintenance on our test suites.
If you enjoy coding as a profession, then our code pairing interview is similar to taking a final exam in a course where you’re an expert with the material. Sure, you’ll have a heightened level of anxiety going into the interview; however, our trained interviewers will start by making a personal connection with you, make sure you are comfortable, and interact positively with you throughout the 45 minutes.
For example, I start my code pairing interviews by looking for something we have in common. Maybe you stated on your resume that you enjoy stunt-kite flying on the weekend … I TOO enjoy stunt-kite flying! We can have a brief discussion about good wind, bad wind and how frustrated we get when there isn’t any wind at all.
Now that we’ve connected, it’s time to code. In advance of our code pairing interview, we’ll send you a link to the HackerRank website where you can work a simple problem to get comfortable with an online IDE. Our code pairing session goes something like this:
- You’ll select the language you’d like to code in (C++, Ruby, PHP, Go, etc.)
- Your interviewer will paste in the problem description. We select problems that should be easy to solve. Most experienced programmers can solve the problem in ~15 minutes. For example, “Given a non-empty list of dates, return the month that contains the most days where the numerical value for the day is a multiple of 3”.
- We ask that you try to think out loud as you code up your solution. Feel free to ask questions and use the Internet to get syntax help. For example, I can never remember the syntax to extract the day or month from a date field in PHP.
- Once your coding is complete, we’ll ask you questions about your code:
- What more would you do to your code before you request a review?
- What kinds of tests would you write to ensure your code is correct?
- How would you deal with the case where no months contain a day that is a multiple of 3?
Next, we’ll have a discussion around code refactoring related to your solution. For example, “How would you refactor your solution if I told you that there are 25MM machines across the world that want to send your program a list of dates and your job is to produce an answer once an hour based on data received in the past hour?”
Below are a few notes for you to keep in mind as you answer our code pairing questions.
- Be sure to select a language where you are most comfortable. If you code daily in PHP, but the position you are interviewing for requires Ruby skills, and you are only book-smart with Ruby, then code in PHP.
- Discuss the problem you are solving with your interviewer. Echo back what you believe to be the expectations. “So, you’d like me to write a function that takes a string of dates as input and returns a numeric value for the winning month as output? How would you like me to deal with the case where there are no winning months? Or, a tie in winning months?”
- As you code, try to think out loud. Yeah, be that developer that sits in the same room with you that’s constantly spewing their sub-conscious thoughts to the point where everyone around them has succumbed to their noise canceling Beats. Feel free to ask your interviewer questions. After all, anytime we get stuck on a problem, it’s better to draw in a peer for a 5-minute over-the-shoulder session than it is to wander around in your thoughts for the next three hours.
- Coding during an interview is much like coding on a white-board with peers. By default, we cut corners in best-practices. Once you’ve completed the assignment or even while you are coding, be sure to tell your interviewer when you are cutting corners. Most common corner cutting:
- Code commenting — when and where are comments in your code appropriate
- Code styling — ideally code style used by all developers looks the same
- Error handling — how would you deal with invalid input or a potential bug in your algorithm
- Testing — what are the minimum tests required to ensure statement coverage
Our code and refactoring questions are the same for both entry level and senior level developers. Instead of dreaming up questions based on the desired skill-level, we’ve created an answer key that helps us determine if you meet our minimum bar for the position.
So, if you are interviewing for a summer internship and break out in a profuse sweat when your interviewer asks you how you would change your code to handle parallel input from twenty-five million machines across the world, don’t panic. Instead, be honest, tell your interviewer that you have absolutely no idea, and let your interviewer ask a few leading questions to get your thoughts rolling.
There you go, answers in hand! You should now be able to talk your way through our initial phone screens, and then pull off an 18 out of 20 score in our code pairing interview to earn an on-site half-day visit where you’ll get a chance to meet our team to help you decide on the best next step in your career. You’re welcome. Good luck, and post your feedback, because we’re always looking to improve.
Interested in joining the TextNow team? Check out recent job openings! Who is TextNow? Check out the video below — we can’t wait to meet you!