13 Speaking Your Future
Congratulations, you’ve been invited to an interview. It might be by telephone, video link, in person or as part of an assessment centre where you’ll be asked to complete several other tasks and tests. Being invited to an interview means that your written application (CV, covering letter, application form or digital portfolio) has hit the target and is bug free, see figure 13.1. All that reading and writing has paid off. BULLSEYE! 🎯
Having passed the first stage of reading and writing, you move onto listening and speaking stage of interviewing. One of your goals is to convince the interviewers that you can articulate yourself clearly, and communicate well by listening carefully to their questions and answering with spoken natural language. These are fundamental communication skills discussed in section 4.4 on communication I/O.
If you’ve got an interview, you can feel good about having a bug-free CV shown in figure 13.1. Now you have a new set of problems to tackle. How can you prepare for the interview? What kinds of interviews exist and what questions might you be asked? If they offer you a job, how will you negotiate the terms, conditions and salary? Do you really want the job and are they the kind of people you actually want to work with everyday? If successful, you will be giving this employer:
- most of the hours of your day
- most of the days of your week
- most of the weeks of your year
This job will take a significant chunk of the next few months, year or even up to two years (and more) for a graduate scheme (Jonathan Black 2019a). It’s the start of a much longer journey of up to 80,000 hours that you’ll spend in employment during your life, or to put it another way:
- most of the years of your life
So you want to ensure employers are a good match and not going to waste your time. You’ll be interviewing them, as well as them interviewing you, so it will pay to have some questions prepared alongside your answers to questions you can anticipate.
Your future is bright, your future needs speaking, so let’s start speaking your future.
13.1 What you will learn
By the end of this chapter you will be able to:
- Identify kinds of interviews you might be invited to
- Anticipate common interview questions, both technical and non-technical
- Prepare questions for your interviewer by researching the employer
- Formulate strategies for negotiating job offers
- Calm your interview nerves
13.2 Interviews
Broadly speaking there are two basic kinds of interviews:
- non-technical interview, sometimes called competency, behavioural interview or human resources (HR) style interview, see 13.2.2
- technical style or coding interview, see section 13.2.3
These can be conducted in various modes:
13.2.1 Modes of interview
Interviews can be conducted in various modes:
- telephone (no visual contact)
- pre-recorded pieces to camera, you talking to your webcam
- teleconference (zoom / teams etc) with cameras and microphones turned on
- real-time face to face
13.2.2 Competency interviews
Competency interviews test some of your softer skills, find out who you are (see chapter 2), how you work in a team and if you can communicate well. They can also known as behavioural or situational judgement interviews. A good interview strategy for any interview is to talk about what you are doing (and what you have done) as shown in figure 13.3. It might even help to have a checklist in your head of things you’d like to talk about such as:
- one work experience, see chapter 5
- a couple of projects, see section 8.7.5
- some university projects, see section 8.7.5.
If you can, make sure you’ve mentioned everything on your checklist by the end of the interview.
Here are some common competency interview questions. Imagine you are going on a stage, prepare lines that answer these questions, rehearse them out loud in front of a mirror (or a critical friend).
- What roles do you play in a team, with examples?
- Tell me about a time when you showed integrity and professionalism
- Can you give an example of a situation where you solved a problem in a creative way?
- Tell me about a big decision you’ve made recently. How did you go about it?
- Give an example of a time you resolved conflict
- How do you maintain healthy working relationships with your team?
- Describe a project where you had to use different leadership styles to reach your goal
- Give me an example of a challenge you faced and tell me how you overcame it
- How do you influence people in a situation with conflicting agendas?
- Tell me about a time that you made a decision and then changed your mind.
- Tell me about a time when you achieved success even when the odds were stacked against you.
- Tell me about a time when you have provided an excellent service
- Give me an example of a time when you have had multiple deadlines to meet? How did prioritise your workload?
- What would you say is your main development area?
For more examples of non-technical questions see:
Since there’s already tonnes of information on competency based interviews, the rest of this chapter will focus on technical interviews, also known as coding interviews.
13.2.3 Coding interviews
Many employers use technical or coding interviews to assess your harder skills. Not every employer does, but they are widely used by employers. Preparing for coding interviews is a good way to become a better engineer, so even if you don’t have to face a series of really tough coding interviews, it is worth knowing about them.
⚠️ Coding Caution ⚠️
The competitive coding and technical interviews described in this chapter test a narrow set of algorithmic skills. While it’s important to prepare for technical interviews, they have well documented limitations. (Behroozi et al. 2020; Murashenkov 2019; Habib 2022) Skills required for software engineering go beyond the purely technical ones. For example, your (soft) communication skills outlined in chapter 4, and many other broader skills, are just as important as your (hard) technical abilities.
There are a lots of resources to help you prepare for and practice coding interview questions, a good place to start is Cracking the Coding Interview by Gayle Laakmaan McDowell. (McDowell 2015) As well as reading Gayle’s book, there are lots of online resources to help you prepare for coding interviews. Before we look at those, Computer Science graduate Petia Davidova explains in figure 13.4 what she learned from failing several coding interviews at big technology companies. 😭
Coding interviews can be tough, but preparing for them, and doing them will also make you a better engineer. So if you spectacularly wipeout in your coding interview, reflect and think how can you improve next time? Perhaps you need to:
- Read up on some more data structures
- Familiarise yourself with more algorithms
- Practice thinking out loud (verbally) by doing a mock technical interview?
All of these activities will help both your general professional development and your chances of success in future technical interviews. Thankfully there are plenty of resources out there for helping you get better at coding interviews, so let’s have a look at some. Some of these resources are more about problem solving for recreation, rather than interview preparation, but they will all help you become a better engineer.
13.2.4 Leetcode
LeetCode is a platform to help you enhance your skills, expand your knowledge and prepare for technical interviews, see leetcode.com and leetcode.com/studyplan/leetcode-75. There’s lots of challenges on leetcode which can make it a daunting place for novices, thankfully neetcode.io has recorded a handy series of videos to help you navigate them all, see figure 13.5.
neetcode.io is useful, but you can’t expect to prepare for every interview question, either technical or non-technical. Be prepared to think on your feet and explain your reasoning. A good interviewer will probably have questions designed to test exactly that, see figure 13.6. If they don’t, the technical interview risks being a measure of how good you are at grinding leetcode and memorising algorithms. (l33tcode 2017) It is debateable how either of those skills will help you to become a valued employee anyway.
13.2.5 HackerRank
HackerRank allows developers to practice their coding skills, prepare for interviews and get hired. HackerRank allows users to submit applications and apply to jobs by solving company-sponsored coding challenges. Some employers use hackerrank as part of the interviewing process, so these are not just academic exercises.
Hacker Rank provide a discussion and leaderboard for every challenge, and most challenges come with an editorial that explains more about the challenge, see hackerrank.com and figure 13.7
13.2.6 Pramp and Interviewing
Pramp offers free mock technical interviewing platform for engineers. Pramp, Practice makes perfect, was founded in 2015 by Rafi Zikavashvili and David Glauber. As engineers, they were frustrated by the lack of resources to help them prepare for coding interviews. Find out more at pramp.com
Interviewing.io offers similar services to pramp, which you have to pay for. (Lerner 2022)
See also poised.com which offers AI-powered feedback on how you come across in video interviews. (M. Byte 2023)
13.2.7 Project Euler
Project Euler provides a wide range of challenges in computer science and mathematics. The challenges typically involve solving a mathematical formula or equations, see projecteuler.net and figure 13.8
13.2.8 Codewars
Codewars allows you to challenge yourself on kata (型), created by the community to strengthen different skills. Master your current language of choice, or expand your understanding of a new one. Find out more at codewars.com and see figure 13.9
13.2.9 Kattis
Kattis provides hundreds of programming problems to solve. Register and start solving at open.kattis.com, used by employers see kattis.com.
13.2.10 ICPC
More than 50,000 students worldwide from more than 3,000 universities in 111 countries participate in over 400 on-site competitions as part of the International Collegiate Programming Contest (ICPC) see icpc.global and figure 13.10.
ICPC is organised by the Association for Computing Machinery (ACM), a global community which advances computing as a science and a profession.
There are subregional contests for ICPC, so in the UK there is the United Kingdom and Ireland Programming Competition (UKIEPC) which is part of the Northwestern Europe European Regional Contest (NWERC).
UKIEPC has been held annually since 2013 to help universities pick teams to travel to NWERC. Ask your University if they are involved, see ukiepc.info. If they aren’t involved yet, you could encourage them to join. It’s not just about winning, it’s also about taking part.
13.3 Breakpoints
Let’s pause here. Insert a breakpoint in your code
and slowly step through it so we can examine the current values of your variables and parameters.
Let’s imagine you’re applying to work at an employer called widget.com
. During your application you need to find out:
- What the main products and services that the organisation provides?
- Who are their clients or customers?
- Who are their biggest competitors?
- What are their values, principles and ethical policies? See section 6.7
- What sector do they principally operate in?
- Who are the market leaders in that sector?
- How is the sector changing, for example how is technology having an impact on their business?
13.4 Accepting & rejecting job offers
If you’ve been successful in an interview you will receive a job offer. Congratulations, now is the best time to:
- celebrate: well done you!
- negotiate: can you get a better offer?
- ruminate: is this really the job you want?
If you’re not happy with the package on offer, the best time to negotiate is before you accept it. It is often easier to negotiate now, than get a pay rise later. This is one factor that means people leave jobs, it is often easier to get a pay rise by moving employers, rather than being promoted with an existing employer. Knowing your value is important here, its easy to find out with sites like glassdoor we mentioned in section 11.3.2. Besides the pay, you might also want to negotiate your working conditions such flexible working, start date and any benefits on offer.
If you are lucky enough to receive multiple job offers you may have to make some difficult decisions about timing the acceptance or rejection of offers. You might even decide to withdraw a previously accepted job offer. I am not a lawyer (IANAL) and can’t give you legal advice but if you change your mind, read what your signed contract of employment says before you withdraw your acceptance, to see what your legal obligations are.
13.5 Communication, communication, communication!
Interviews are about a lot more than the answers you give to questions, they also test how you communicate, both verbally and non-verbally. We looked at communication skills in section 4.4 and throughout chapter 4: Writing Your Future. This chapter has discussed some spoken communication skills which complement your written communication skills.
Computing is not just about technology - it is actually more about working with and for people, see figure 13.11. So as well as testing technical knowledge, an interview (coding interview or otherwise) is a test of how you communicate in spoken language, not just how you speak, but how you listen and converse while you work with other people. (Goble 2020)
13.6 Summarising Your Future
Too long, didn’t read (TL;DR)? Here’s a summary:
Your future is bright, your future needs speaking. Speaking your future (in interviews) will help you test your future. Testing your future will help you to start coding your future.
We’ve looked at a range of platforms and competitions that can help you prepare for interviews, both technical coding interviews and non-technical interviews. These won’t just make you better at coding interviews, they’ll make you a better engineer too, whatever stage you’re at.
In the next chapter, we’ll stop to answer some frequently asked questions students have about coding their future.
This chapter is under construction because I’m using agile book development methods, see figure 13.12.