How to ace your initial programming job screen
July 02, 2019
Author: Dave Cohen
Your resume and cover letter surely made a positive impact, but the most important evaluation has yet to come.
If you’re searching for your first software development job, the process can be daunting. You may have heard that after sending your resume to a company, there’s an initial screen. This is usually done over the phone, but sometimes it happens in-person. Your resume and cover letter (the first impression) surely made a positive impact, but the most important evaluation has yet to come: making a human connection with a company recruiter. They’ll be mentally noting how you speak, your confidence level, how passionate you are, and much more.
Having done around 28 phone screens, I want to share what I’ve learned from those experiences.
What I’ll discuss:
- Preparing and rehearsing responses to common questions
- Types of companies and roles
- What companies value
- *Some of my phone screen experiences*
- Words of motivation: keep going despite the “mistakes”
There are a lot of potentially difficult things to navigate during phone screens. Oftentimes, you don’t know a whole lot about the company and/or the company doesn’t know much about you. In all likelihood you’ll be nervous. Your voice might start quivering…you’ll hear that and it’ll make you even more nervous! Many times the interviewer will have a “cold” sounding voice and won’t give you much feedback on your responses. These things are all perfectly normal. Being prepared is key.
What to prepare
A more in-depth statement about why you’ve applied to their company
It’s wise to rehearse these few topics out loud. Even if went over these in your cover letter, making them more habitual by practicing your response will help ease your nerves while conversing.
What about the company and position appeals to you and why you’re a good fit
example:
“I’m naturally drawn towards companies that are providing high-quality software that’s used by many people around the world. I am eager to apply what I’ve learned to large, enterprise codebases.”
You’ll definitely want to expand on this as much as possible, hopefully sharing some citing personal anecdotes:
“Having been the sole owner of a business, I know how helpful it can be to have software that makes managing finances easier.”
Examples from your past projects that fit the role
example:
“I built a tool that allows users to make financial projections and track their budgets. Users can create accounts and safely save their data. My experience writing financial software would fit in nicely with the role.”
Having a broad idea of what the role might entail is critical. You may not get a complete picture from reading the job description. You’ll quickly want to gather a few pieces of information: Two types of companies:
- Product company: Prepare thoughts on how you might create scalable, sustainable solutions around one product idea. This might be through creating custom tooling, using pre-built tooling, and multiple repos that solve smaller problems related to the core software.
- Agency: Prepare thoughts on how you would start projects, how you’d decide the larger architecture, how you enjoy finding the right tools for the job.
…and three types of roles:
- Full stack (back end focused): Prepare thoughts on correctly creating and organizing databases, algorithms, data structures, etc. You’ll also want to show enthusiasm for the front end.
- Support: Prepare thoughts on how you’ve communicated ideas to developers and non-developers as well as creating tooling for custom purposes.
- UI/UX: Prepare thoughts on separation of front end layers like layout, font, API calls, templating, etc as well as making the great experiences for users.
If you get a chance to ask about any of these up front, go for it!
Answers for questions you don’t have a substantial answer for
In most interviews, you’ll be asked questions for which you just don’t have a great answer. If you don’t have a lot of experience or aren’t the best with something the recruiter is asking about, here are some ways of replying:
“I don’t have a lot of experience with (subject) but I would love to learn more about it.”
“While I haven’t done much with (subject), I have a fair bit of experience with (related subject.)”
“I haven’t heard of that, actually. I’m going to look into it after our call.”
Sometimes, though, just saying “I don’t know” is the right way to go. That last thing you want to do is start making something up or “BS-ing” your way through an answer. That’s a red flag because companies would rather not have people who skirt around issues. Direct and honest communication is the key - writing software is difficult enough as is!
Prepare a statement about your salary needs
Some companies will ask your desired salary range in the first conversation! Given this potentially daunting fact, I recommend first starting your research with these four items:
- Average developer salaries in your area
- Average junior* developer salaries in your area
- Average developer salaries at the company
- Average junior* developer salaries at the company
*junior or whatever level you’re at
At the very least, you’ll be prepared with numbers that should seem fair for your area, the company, and the given role.
This question in particular gave me a lot of anxiety because I didn’t feel like I was yet “worth” a market rate. Despite this feeling, you should absolutely ask for a fair rate. Don’t undermine your skills - and don’t contribute to companies taking advantage of people and driving market rates lower.
This topic is worth a whole article in itself! I recommend taking a look at the article below, then practicing your spiel.
An interesting quote:
But, what about when you are asked to name a number first? Don’t do it. Just say “no.”
He then goes to explain what to say. It’s a little unconventional compared to the advice to “start high, then come down.” I think the above article has an interesting and well-reasoned approach, so check it out!
Details on technical competence
Most roles require a developer to have competence in specific languages, tooling, and/or tech stacks. If the role is a heavy Java or Python role and you don’t have significant experience in either area, it might be a deal-breaker right away. A quick evaluation for yourself:
- Have you built a project (not based on a tutorial) with the specific language or stack?
- Do you have significant experience in a very similar environment and are confident you could pick up the new tech? (Example: the job wants a Vue.js developer, but you’ve only worked in React.)
Be prepared to explain how your experience fits what they need technically. It’s always good to show enthusiasm for learning their specific tech if you don’t already know it.
More on company values
Every company has values which are prioritized differently from one company to the next. A small startup may prioritize experience so that they can develop their products faster. A more established company may place more emphasis on culture fit. Here are the values I’ve found to be the most relevant in evaluating your fit with a company:
- Culture fit: the candidate’s background, personality, style, and/or traits indicate they’ll fit into a unified team.
- Experience: the candidate has started and finished many large projects. They could do this alone or lead a team. A high level of confidence is required and the company is usually seeking a senior-level engineer.
- General knowledge: The candidate is able to “see the big picture.” They aren’t stuck in a single mindset, language, or framework. They are very enthusiastic about learning and can do so quickly.
- Specific knowledge: The candidate is an expert in specific tools, methodologies, languages, or frameworks.
- Pay: The candidate is willing to accept a definite maximum salary. (I’m not kidding - this is a real thing!)
- Client interaction: The candidate is cool with working with clients, traveling, or other interactive / non-coding duties.
Some of my phone screen experiences
When the culture fit was right
I have a background as a musician. Through a Slack group that connects the tech scene in my city, I met the CTO of a small company. The company built some really cool music promotion and distribution software. My initial screen was in-person. As we were talking, I realized that a small startup could fit me well. All of my previous development experience was in small groups or solo. The CTO appreciated my creativity and entrepreneurial spirit. This was a great culture fit, but I didn’t wind up working for this company (for different reasons.)
When the culture fit was wrong
This company was an agency that was beginning to move its focus to one client in particular. The recruiter discussed how the role was great for a junior developer and the juniors would get a chance to “ramp up” very quickly. I discovered later that the pay was well-below average, they wanted people to work from 7am to 7pm, and there was a heavy drinking culture amongst the co-workers. I’m not sure what the red flag was upfront. The company seemed more interested in “selling” itself to me, rather than seeing if I was the right fit. In the end, it seemed like they just wanted cheap labor from someone impressionable.
When I didn’t have enough experience
I made it all the way to an onsite interview with this company. I told the recruiter in the initial screen that I had some good experience but I wasn’t necessarily ready to be a team lead. She said “that’s totally fine!” But in the next phone screen with 2 developers, one of them said in a stern voice, “We need someone to lead the team!!!” I definitely fluffed my way through a few of the questions. The onsite didn’t go particularly well - I wasn’t prepared for the vanilla JavaScript challenge they had me do.
When I had just the right amount of experience
My first full-time development job was with a company that put heavy emphasis on candidates completing the onsite code challenge. 3 months into my job search, I’d become much better with doing code challenges in-person. This one asked for unit tests and I prepared for by studying unit-testing for a solid 48 hours ahead of time! They didn’t ask questions to evaluate “culture fit,” the interviewers decided they liked me well enough to make me an offer.
When I didn’t have enough general knowledge for a full stack role
I went to a “full stack” bootcamp, so I fancied myself as a full stack developer. This company put particular emphasis on being very well-rounded in front and back end development. Their database questions were difficult for me. I tried my best, but I didn’t know the exact trivia the interviewer was asking me.
When I had the right amount of general knowledge
This very small company was using Angular and blockchain technology. I didn’t know much about either. However, I did great with their question about recursion and pretty good with their design questions. I didn’t get an offer because they found someone with more related experience, but the CTO gauged if I was willing to work part-time.
When I didn’t have the right specific knowledge
- One company was very concerned by the fact that I didn’t have experience with D3 (even though it wasn’t in the job listing)
- A bank was concerned that I didn’t have enough experience with security, namely with sanitizing front-end input
- Another company was overly obsessed with object oriented programming principles
These things can be learned, but it was of utmost importance to those companies that I knew them already.
When I had the right specific knowledge
The CTO of one company that I applied to let me know that I was rather late in their interviewing process, but liked the fact that I knew Python and JavaScript. I made it to the onsite round, but they gave the offer to someone who applied earlier in the process.
When the pay was too low
In more than one case, I found out that the companies were paying below the average market value for junior developers. On the initial phone screen with this aggressive company, they asked me what my target salary was. (The following numbers are made up because the real numbers don’t matter:) I said “Between 9 and 10.” They asked if I could go lower. I said “well, it depends on the role and what else the company can provide.” I then said I could go to maybe 8. He then said “would you take 7?” I said “based on what I previously said, not knowing the role or the company, probably not? But I would consider it if you came back with something more concrete.” After talking to this pushy recruiter, I had already decided to decline if they were to get back to me.
When the travel and client interaction weren’t right
An acquaintance of mine sent my resume to this company. The CTO mentioned that my acquaintance had just come back from a week-long trip to another state. He later asked if working with clients was “Yay” or a “Meh.” I gave a pretty lackluster answer. I’m fairly certain that was a dealbreaker for the CTO. In retrospect, the emphasis on travel and client interaction really doesn’t appeal to me anyways.
Wrap up
Having gone through all of these phone screens has been a valuable experience. From these, I’ve been made multiple offers and have now worked full-time with two companies. I’m also able to more easily see early indicators of fit. I’ll ask these questions to myself right away:
Do I feel confident about my technical knowledge and experience? Am I excited about the company’s culture and products? Is the phone interview going in such a way that I don’t get the impression that I’m being negatively judged? Possibly most importantly, do I feel like the company will value my contributions and pay me a fair rate?
I realize now that all my “mistakes” during phone screens were all part of learning how to navigate this industry. Sure, I could’ve had better answers. Sure, I could’ve been more targeted about what I was looking for. But sometimes you just have to “go for it” and see what sticks.
Resources
Considering a career in tech? I’ve collected my thoughts and resources here.