Recently, I helped a friend screen a candidate for a software engineering role. The candidate was an undergraduate computer science student, expecting to graduate in a few months. Here is the feedback I sent them after the interview.
Congratulations on completing your first Software Engineering job interview!
Normally companies don’t give feedback to candidates after interviews. I won’t explain why, but in this case, I hope I can help you land your first job.
The most important thing you can do is practice programming 4-6 hours a day, 5 days a week, until you get your first job. You need to work out your brain like a muscle, and have a natural feel for programming. These workouts are needed in order to make it through a job interview and have the skills you need to do the job you are trying to get.
There’s two ways to get started:
Do challenges on https://leetcode.com/, https://adventofcode.com/ or https://www.topcoder.com/community/practice.
Pick a programming project that you want to do, and do it. This can be a web application, game, or utility. For example, when I wanted to learn Node.js and brush up on web development, I wrote a blog engine: https://github.com/GWBasic/z3. Now that I’m trying to learn Rust, I’m writing a surround-sound upmixer: https://github.com/GWBasic/soft_matrix
In general, the above activities should be for fun and to “build your programming muscles.” You need these programming muscles to make it through a typical job interview. Don’t worry about being too ambitious, either. The experience is more important than starting a project you’ll never finish.
The second most important thing you can do is be patient. When I graduated, it took me 4 months to find a job. I even worked at a Best Buy for 2 weeks for “beer money.” More recently, in 2020 I applied to 57 jobs over a 20 week period. I chose where I applied carefully, (but I was open-minded about where I applied and didn’t SPAM my resume.)
The pattern that I followed was:
- At the beginning of the month I applied to about 10 jobs
- For the rest of the month I worked on my skills
- I scheduled callbacks, screenings, ect, throughout the rest of the month
(Also, don’t forget that you’re going to work for 40+ years, so if you need a vacation or otherwise want to do something that’s hard to do while you have a full-time job, do it now!)
When job interviews come your way, take them even if you don’t think you can get the job! It’s better to flub up on an interview for a job that you don’t think you can get; and use that as practice for the job interview that you really want!
Third, your college’s career office doesn’t know much about interviewing for software jobs:
- Very few software developers wear suits and ties to job interviews.
- Use nuance when saying “I can learn” at the end of an interview
If you don’t like wearing suits, consider:
- Skip the tie, but keep the shirt and the button-down shirt
- A suit with a high-quality shirt without a collar, like a turtleneck, or solid colored t-shirt
- A high-quality button down shirt without the coat (useful on hot days.)
- Or, have fun with the suit! It doesn’t need to be a conservative suit. Have some fun with the shirt and tie if you want to.
In general, you should feel comfortable, both physically and emotionally, with what you wear. (Just don’t show up in a grubby t-shirt or a bargain basement polo shirt.)
The “Say ‘I can learn’” advice doesn’t really work in software interviews. It’s much more important to be comfortable programming, and have a good rapport with your interviewer(s). I can explain the nuance better on the phone if you’d like me to.
Finally, it’s okay to decide that you don’t like programming, and choose to follow a different career. Your degree can be used in careers that don’t require as much programming: Quality Assurance, Sales, Support, Customer Development, the list goes on. There are also jobs that just want any college degree, like Enterprise Rent-A-Car. And, there are science research jobs where you will do a small amount of programming, but the focus is on the science and research.
So, in conclusion, I wish you a lot of luck in your early career!
Regarding my comments about the "Say 'I can learn'" interview technique:
(Context: Some job interviewing clinics advise candidates that, if they think the interview is going poorly, to say something like, "I know I didn't answer this question well, but I can learn.")
I didn't want to extrapolate on this technique in the email, because I didn't want the feedback to be taken personally.
In this case, the candidate struggled with very basic programming concepts; concepts that they should know before they start the job. My interviewing style is to give the candidate all instructions they need for the task to perform in the interview; if they can't perform the task, they haven't demonstrated that they "can learn."
I told the candidate to "call the method on the object, put the result in a variable, and then pass it to the constructor." These are fundamental tasks in programming, and any Computer Science graduate should be 100% comfortable doing them. This is why I suggested that the candidate practice 4-6 hours a day.
In general, in a software engineering interview, the candidate is being screened to determine if they have the needed skills for the job. If they don't have the skills for the job, it's much easier (for the company) to interview another candidate than to spend months, or years, training the candidate. This is especially the case with junior developers, where there is a huge risk that they will not develop the skills needed to do the job.
The problem is, when a candidate uses the "Say 'I can learn'" technique in an software engineering interview, it shows that the candidate doesn't understand the fundamental requirements of the job.
Instead, it's best that the candidate thank the interviewer, ask for suggestions on skills to work on, and continue to keep searching.