Interviewing for your first ever software engineering job is intimidating. Let’s look at how to handle things that may come up, and what can go wrong.
So, if you are like me, you have never been a software engineer before now. You might be straight out of high school, you might be changing careers, or you’ve dabbled in code. Regardless of your past, now you want to make “software engineer” an official career title.
Back in the day, I went to university and studied a B.A. in Communications. I loved it and used that degree to get into great jobs, which I know shaped my current non-coding experience. This article will try to aim straight to the heart of what is going to be required for a junior coding role. Trust me, it is for sure terrifying, exhausting, surprising…. and in the end rewarding.
I don’t have all the answers, I just provide recommendations. I hope this helps. If not, please feel free to ignore. I have done a coding bootcamp, and now I have a 90K job. Other than that, my credentials might not be suitable for your situation.
All Job Applications & Interviews Overview
Unfortunately, finding a new job is pretty much a job in and of itself. Regardless of the desired role, you need to put a great deal of time and effort into it daily. It goes without saying that applying for any new job is a numbers game.
My breakdown is as follows:
- Over 150 applications over 4 months: October 2021 — January 2022
- Over 20 official rejections (via email), 99% without even one interview — one even came on Christmas Day. Heartless company, haha.
- 9 first round interviews
- 8 coding assessments / take-home assignments (one took over 30 hours, others are timed: e.g. 10 mins to code an answer)
- 2 second round interviews
- 2 third round interviews
- 1 meeting with the CTO and 1 with the CEO
- 2 offers for a full time job
Over time this will wear you down. Surprise, the 30+ hours I spent on the massive take-home coding project, has resulted in zero calls to an interview.
It feels like throwing stuff into a black hole, so much nothing comes from so much effort.
You need to keep applying, and doing the assessments. Try to gauge how long these will take. Think of them as vital practice. They will show you where your weaknesses lie: timing v.s. panic, knowledge v.s. Google, etc.
You have trained for being a software engineer. And stupider / more nervous / less experienced people have gotten jobs where you want. The self-doubt I struggled with before, during, and to this day…. has done me zero good.
Self-belief is required, just as much as skill and initiative.
Software Developer Resume / Curriculum Vitae
This is the first thing they will see. I have looked at hundreds of other resumes in a bid to perfect mine.
Reasons why your resume gets thrown away at a glance:
- Inconsistent formatting: all spacing, fonts, colours, layout — these must be consistent throughout.
- Irrelevant bulk to fill up a page, such as hobbies, interests, jobs pre-2010. Super large headings, loads of spacing — you are wasting space to push it to being a full page or two, and it is alway very obvious.
- Weird colours: no reds, no greys, no highlighting. Just make it easy to read at a glance. Think — would I see this type of format on a website that is popular?
- Too long, when it’s an 8 point font and 800 words long, they can’t read it all. Get to the point at the top of the page. Shorten it if you need. 10 point font is good, 14 font is too big.
Reasons why your resume will be binned — not your fault
- You may not know the coding languages they need, it’s just a requirement.
- You don’t have enough experience for the role, they need a more senior level person.
- Remember, the recruiting team might have upwards of 100 resumes for one job in the first day of posting that job.
My top tips:
- Keep it to black and blue font colours only (blue for links and headings only, black for everything else), no background colours.
- Use links to your: GitHub, portfolio, blog, deployed projects. Have your email and phone number at the top.
- If you are new to coding (without professional experience) put the 3 best projects you have on the resume. These should be deployed, nice looking and fully functional from a guest perspective. Hiring Managers are not going to sign up to anything, they don’t have time for that.
- 1 page resume is great, but if you have been working for more than 10 years (even in non-tech roles) then 1.5 or 2 pages is okay. More than 2 pages is absurd — cut it down. Brief is best. I have screened people for non-tech roles, I can tell you that they only spend 2 mins per resume.
Blog / Portfolio / GitHub
If someone has told you this is not worth doing, they are wrong. I have a blog and a website portfolio that serves in addition to my GitHub. The three combine to show how much you are born to code.
Write about what you know. Have short articles that are informative, factual and in the coding language you have learned. Maybe no one in the hiring department sees them, maybe someone does. Regardless, it shows passion, ability to document your knowledge and consistent/consent coding. Not everyone is a writer, but if you can manage it — do it just for fun.
- Use Medium.com AND put it on your portfolio website.
You need to have a website of your work. Use wordpress, wix, something.
It should contain your picture, an ‘About You’ page, contact details (including LinkedIn), projects, resume. All in one place, where it looks nice and reflects your work and your style.
- Side note: don’t put your phone number or email on the website, be careful not to share that information with everyone on the internet. You will get spam calls about your car warranty. I have had so many,… without owning a car. So there’s that.
This needs to be shared, even if you don’t bother with a blog or a portfolio website. A lot of coding interviews will need your GitHub to work/submit projects as part of the interviewing process.
You need to know how to work within git and you need to show employers what you have coded before. If it is full of unfinished projects — clean it up. I didn’t clean mine up, and got away with it. But do try to contribute to open-source projects on GitHub. It looks great for you and you learn a lot.
Projects to get you started:
- An app that uses an API, such as a Weather App.
- CRUD website — a website that is deployed and that creates, reads, updates and deletes information. It could be full stack, as in front end and backend with a database and everything.
- Chat App — try to use sockets.
- To-Do List App — simple, but make it look nice.
LinkedIn is very valuable for finding jobs. There are other sites which are very similar, but LinkedIn is my go-to. You should have a profile.
Make sure your profile is exactly matching your resume. Have it nice to look at and professional. Be sure to include WHY you got into coding, your education, certificates, etc.
Get some recommendations from past employers, fellow bootcamp grads, anyone that can attest to your work-ethic, skills, and relationship building.
- Google Jobs, Indeed, CyberCoders, SimplyHired, TechFetch, it can be hard to spread yourself across all of these and apply and keep up with prospective recruiters reaching out to you. Just do LinkedIn, my top tip.
- If you can afford it, get LinkedIn Premium. It will tell you when someone views your profile, you can message people and for $32 per month, it’s worth it in the end. You get stats on your views and you can target/message people who are looking at your profile after applying.
- Stay active on LinkedIn, check your messages, and keep applying/responding. Even on weekends.
This is really hard. I hated every minute of it. It felt so needy and awkward! BUT, You want to message the people you see “hiring” on those job postings. Especially if it is your dream company or job. It costs you nothing to message them.
Trust me your dignity will still be intact and your social anxiety will fade away… eventually. If you want it, go get it.
- In your message, be original and brief, ask to chat with them about the role.
- Better yet, find someone else in the company (with the same or a higher up role) and ask them questions.
- If no one responds, don’t take it too hard. It’s not you, they might get loads of those messages.
The risk is minimal, you might learn loads and show them how interested you really are, or you might just send a message out into the void…. and hear nothing. Either way, the rewards outweighs the risks here.
For non-developer interviews, these matter a good bit.
With software development, from what I have seen, not really the case.
But, if the job asks for a cover letter, you 100% need to have a cover letter. You can find hundreds of templates online.
Personalise every single letter to the company and the role. In the cover letter, write why you want to work for this company, what you admire about their values / endeavours, how does your previous experience or current skills translate to their mission?
These are usually going to follow this pattern, provided you are successful on each stage:
- Application / Cover Letter
- 96% of these go nowhere, they get you nothing
2. Phone Screen or straight to an online assessment
- These are important, so you need to prepare. Ask as many questions that you can:
- How much is the salary, where do you work (remote / office), what coding languages will you use, what are the hours like, culture views?
- What is the interviewing process like, where will you code in the interview (LeetCode, Replit, HackerRank, other)?
3. Behavioural interview
- Be ready to say why you want to be in this job / at this company? Show interest & do research!
- Afterwards, ask for feedback, even if you think it went great. Especially if it doesn’t go well.
4. Technical Interview and/or Algorithm interview
- Can you do what you say you are skilled in? Practice, a lot. So much practice!
- Afterward, ask them for feedback. You can always improve (show them that you plan to always be improving your skills and knowledge!)
5. CTO interview or Team interview
- Interest is valued, have good questions. Be prepared for technical topics, and ask questions on that. Think of big company questions for the CTO.
- Do even more research. The CTO is a technically skilled, very high up person. Be sure you can answer their questions (it won’t be baby level coding questions). But more importantly, have some specific questions for them.
- For team interviews make sure you research who does what in the team, who is the team lead, who is the senior developer, have questions about culture, when and why there are meetings, flow of projects, typical duration of a sprint or project, etc.
- This is a great sign when you get to this stage.
6. CEO interview
- Interest is valued, have great questions on company values, projected growth areas, how can you contribute to this?
- Don’t mess up here. Again have researched questions that show you care about the company. This person is the leader, show them you appreciate their time and consideration by being super engaged with the company and its future.
- This is an excellent sign to be at this stage.
7. Offer / Acceptance of the new job.
- You may not have a lot of time to mull this over, be prepared to reply and to sign a contract soon.
- Check benefits, salary, requirements: are these inline with your goals? Ask for more, it won’t hurt at this stage.
- Is it fully remote, hybrid, do you have to relocate to an office. There should be no surprises here, as you should have already discussed these at the phone screen.
- You always always always have “another offer” for a similar or higher amount.
- Most importantly, you are always still interviewing until you start the job. You are bargaining here. Be smart and be fair (to yourself and to them). And that job is not guaranteed based on an offer letter! Many letters have a clause in them that says they can rescind the offer at any time, for any reason. Keep applying and interviewing just in case.
8. Background Check / Drug Test
- This varies greatly, depending on the company.
- You need to make sure that you follow their instructions exactly.
- If you think they won’t drug test you, they will. Pass this test or say goodbye to that high paying job.
- Your background check might involve just calling up your past employers, or it might be you providing tax documents for the last seven years. You need to be honest, it needs to match your resume. Even if it was a non-coding role.
- Background checks can take weeks, or months. You should still keep applying. The company can rescind the offer at any point, for any reason they find. You are not employed yet, so keep that in mind.
The catch is that none of these eight steps happen all within one week. You need to chase the recruiters and interviewers. I only contacted people in companies where I was very interested in working there. But, in general these are weeks apart. Ask for updates every week. Do what they ask,… as quickly as you can.
In the Interview
Every interview is different, I can’t give you a save-all tactic to follow. But in general, you need to use common sense.
- Be personable, smile, be conversational, friendly and above all yourself. Being yourself will ensure that you don’t have to pretend for weeks and months in a role that doesn’t suit who you are in a team.
- Do not ramble on for 3 minutes answering one question, their time is precious. Get to the point with your answers.
- Have an introduction prepared for the: ‘Tell us more about you” question. Write it down and practice it. It should not be too long. It is not your life story it is an opportunity to explain why you got into and love coding.
Have the usual examples of things to know and ask:
- Know what the company does, what the coding stack is, number of employees, current customers. Anything and everything you can find. (Use LinkedIn about pages, Google, and the company’s own website.
- Your weaknesses and strengths. Have examples of these that relate to working with code. Explain how you currently improve on the weaknesses. Explain how you could use the strengths to help their business. Think beginning, middle, end for telling these like a very brief story.
- A difficult time in a team (where you got along despite others difficulty or helped to improve an outcome). Be careful not to throw anyone under the bus, you’re being tested on your professionalism and tact.
- A failed project (where you learned something).
- Why did you apply for this particular job? Again, know about the company and their goals.
- Always have some questions that are relevant for the stage of the process and interviewer you have at that moment.
- Ask what and when the next steps are. Ask the interviewer how you can prepare for these.
- Ask what you want to know! Ask early on what the salary is or the culture, ask later on what the team and on-boarding is going to be like. And ask how you can make a difference to the CTO, CEO.
Research the Company
This is essential, it takes time and effort. But you look like a fool if you can’t answer the question ‘What do you know about the company?’.
Check out the company’s LinkedIn about page, read the case studies on their website, look at YouTube presentations they have, and contact employees on similar levels on LinkedIn.
If you don’t show that you know the company and that you have done your homework, you look like you don’t care about the job. By doing no research you tell them that their time is worthless to you.
This is so simple, and if you want the job you have to do this. It might not come up, but at the very least you should be familiar with the company, their products and their goals.
My first ever phone screen interview: I was nervous, and technically unprepared. I thought they would just ask what my past experience was, why did I get into coding.
They asked me to list out the React Lifecycles. I blanked.
I straight up said: ‘I am going to kick myself in five minutes when I remember the answer, but right now,…. I’m nervous and I don’t know.”
Surprise, I did not get a second interview. Which was very fair.
At some stage, I managed to study enough to not do this. Look up questions in your coding language. Practice!
Time yourself and create that high-pressure environment. Just know that your first interview will be a failure, probably the second, third, maybe fourth. You will learn a lot.
Failure happens at all stages. But fail to prepare — you prepare to fail.
Side Note: Don’t think that you can google an answer during remote interviews. It is extremely obvious to the interviewer. Just be honest if you don’t know an answer. Trying to be sneaky will mean you lose any points you have gained so far. The questions wasn’t can you google something, everyone can do that. Admitting you don’t know everything is okay.
On the other side, I have also completed timed assessments and take-home assessments that went excellently, some just passable… Regardless, I didn’t get the job.
Zero feedback despite asking for it. These things happen. Your self-worth and your ability is not measured on this metric. You must keep going.
An engineer will always find a way.
It is not without self-doubt, or many tears, but you must persevere. Software development is a highly paid role, and not without reason. Initiative, grit, confidence (even in the face of perceived incapability) is valued. Never give up, especially mid-interview.
Actual Success That Leads to Failure
There are some times where you do excellently in all regards. But for reasons best known to the recruiting department, you are not successful.
Again, remember that there are potentially 100+ people with way more experience ahead of your application. This is not to discourage you, but to hammer home that it is a numbers game.
An engineer that has 10+ years of experience can be refused a job for which they are overqualified. You may do excellently in the interview, but just not as excellently as the one before you.
This is not a reflection on yourself, but merely luck of the draw. This took me many refusals to learn. I wrote many ‘masterpiece cover letters’, I studied and practised. Regardless, there are refusals. It is part of the process. I got a refusal email on Christmas Day. There is no time off for disappointment.
Accept this as soon as possible to avoid burn out or getting jaded. Save your pride for something more worthy. Ask for feedback and take it on board. That’s if they respond to your request…
My Final Tips
This may be specifically an Irish thing, but absolutely no self-deprecation in interviews.
It makes you look inept. It is not funny or disarming. I learned this the hard way, being Irish. I played down my accomplishments, my roles. Bad idea!
Big yourself up — on the resume, in the interview, every conversation. Feel proud of what you have done. Be ready to talk about what you loved about your favourite project. Be ready to talk about what didn’t go well, but you worked with it and it turned out okay.
The company will not want someone who says ‘I only did a small part of one project’. They want go-getters, they want people who produce code that they are proud of and that works well.
Hiring Manager / Recruiter
The hiring person could look bad — if you are bad. That is why they need to quiz you, test you, ask about your teamwork abilities.
Think about it. They need to merge you into their existing team… and if you are not on the same level, if you cannot keep up, if you are a strong personality that refuses to fit in…., then they cannot comfortably merge you into the existing team.
Understand that the hiring manager will always need to hire someone that will add to the team. As junior coder, it might be hard to see how you would add to a team, but at the very least be a co-operative person and show yourself in a good team-oriented light at all times.
Two seconds, up to two minutes: that is all you’ll get to show what you’ve got to contribute. Make it clear. Easy to read. Test the links frequently.
I highly recommend setting up an excel sheet that has every job you apply for.
For a start, include the following columns:
- Name of the company and a link to the job listing.
- The person you contacted, their email and LinkedIn profile.
- Link to the company website.
- Whether it needed a cover letter (save these too).
- The date you applied.
- The date(s) you followed up and how (email or LinkedIn message).
- The date they responded (if at all).
- Dates of interviews and notes from each one.
- Rejections go in red or grey.
I’m not going to say it’s fun,.. documenting your consistent failure. Some of us love excel. I sure do love me a good excel sheet!
But, not gonna lie…. it was hard to keep scrolling to the bottom to add a new entry that would probably go no where.
At least you have a database of important information. And you can keep track of the eventual progress!
Finding a job is a numbers game. But, there is no magic number. You win some, you lose almost all of them. Don’t take it to heart. You’re still learning, and you always will be. From what I understand, the first software engineering role is one of the hardest to get. After that you’ll have some professional experience to give weight the skills you are claiming to possess.
Keep trying your best and you’ll get there. Keep applying. Keep track of it in a sad excel sheet, like I did. Use these tips to improve on where you might be lacking. Ask for feedback, do your coding practice, make some cool projects to keep learning.
And remember, you can take a day off from applications and code. Mental health is very important. Use any time off to recuperate and do some self care. Step outside and away from the screens!
Everyone will tell you to keep going, this is your sign to actually redouble your efforts.