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! 🎯

If you have got an interview, then you have proved that your CV is bug free. That doesn’t mean your CV is perfect, it just means that it is good enough to get you an interview with that particular employer. Congratulations! What comes next? Bug free sketch by Visual Thinkery is licensed under CC-BY-ND

Figure 13.1: If you have got an interview, then you have proved that your CV is bug free. That doesn’t mean your CV is perfect, it just means that it is good enough to get you an interview with that particular employer. Congratulations! What comes next? Bug free sketch by Visual Thinkery is licensed under CC-BY-ND

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:

  1. Identify kinds of interviews you might be invited to
  2. Anticipate common interview questions, both technical and non-technical
  3. Prepare questions for your interviewer by researching the employer
  4. Formulate strategies for negotiating job offers
  5. Calm your interview nerves

13.2 Interviews

Broadly speaking there are two basic kinds of interviews:

  1. non-technical interview, sometimes called competency, behavioural interview or human resources (HR) style interview, see 13.2.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:

Got a video interview? Remember to toggle your mute button. Bob… by Visual Thinkery is licensed under CC-BY-ND

Figure 13.2: Got a video interview? Remember to toggle your mute button. Bob… by Visual Thinkery is licensed under CC-BY-ND

  • 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.6.5
  • some university projects, see section 8.6.5.

If you can, make sure you’ve mentioned everything on your checklist by the end of the interview.

During an interview, you are marketing yourself to an employer while they market themselves to you. It can be easy to overthink your marketing. A simple marketing technique is to just talk about stuff you’re doing, projects you’ve worked on (inside and outside University), your experience and any other relevant activities. The number 1 rule of marketing by Visual Thinkery is licensed under CC-BY-ND

Figure 13.3: During an interview, you are marketing yourself to an employer while they market themselves to you. It can be easy to overthink your marketing. A simple marketing technique is to just talk about stuff you’re doing, projects you’ve worked on (inside and outside University), your experience and any other relevant activities. The number 1 rule of marketing by Visual Thinkery is licensed under CC-BY-ND

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).

  1. What roles do you play in a team, with examples?
  2. Tell me about a time when you showed integrity and professionalism
  3. Can you give an example of a situation where you solved a problem in a creative way?
  4. Tell me about a big decision you’ve made recently. How did you go about it?
  5. Give an example of a time you resolved conflict
  6. How do you maintain healthy working relationships with your team?
  7. Describe a project where you had to use different leadership styles to reach your goal
  8. Give me an example of a challenge you faced and tell me how you overcame it
  9. How do you influence people in a situation with conflicting agendas?
  10. Tell me about a time that you made a decision and then changed your mind.
  11. Tell me about a time when you achieved success even when the odds were stacked against you.
  12. Tell me about a time when you have provided an excellent service
  13. Give me an example of a time when you have had multiple deadlines to meet? How did prioritise your workload?
  14. 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. 😭

Figure 13.4: Petia describes her worst software engineering interview failures. Petia demonstrates a growth mindset (section 3.7) and productive failure(s). Although she failed her earlier interviews, she learned lots from the process and went on to get a job she wanted. If you can’t click on the embedded video in the figure, you can watch the full 16 minute video at youtu.be/qkeQNNjZuQk (Davidova 2021)

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. 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.

Figure 13.5: My Brain after 569 Leetcode Problems neetcode.io. You can also watch the full 5 minute video embedded in this figure at youtu.be/8wysIxzqgPI (Code 2023)

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.

Have you solved 500 leetcode.com questions? Congratulations but beware of the inevitable Question In Interview cunningly aimed to pierce your awesome algorithmic armour. Screenshot of an original tweet by @neetcode1 and Chandan Kumar linkedin.com/in/Chandan555

Figure 13.6: Have you solved 500 leetcode.com questions? Congratulations but beware of the inevitable Question In Interview cunningly aimed to pierce your awesome algorithmic armour. Screenshot of an original tweet by @neetcode1 and Chandan Kumar linkedin.com/in/Chandan555

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

HackerRank’s programming challenges can be solved in a variety of programming languages (including Java, C++, PHP, Python, SQL, JavaScript) and span multiple computer science domains. HackerRank logo from Wikimedia Commons at w.wiki/3WAP adapted using the Wikipedia App.

Figure 13.7: HackerRank’s programming challenges can be solved in a variety of programming languages (including Java, C++, PHP, Python, SQL, JavaScript) and span multiple computer science domains. HackerRank logo from Wikimedia Commons at w.wiki/3WAP adapted using the Wikipedia App.

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. (Interviewer 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

Since its creation in 2001 by Colin Hughes projecteuler.net has become internationally popular, with new problems added approximately every two weeks. (Somers 2011) Public domain image of a painting of Leonhard Euler by Jakob Emanuel Handmann on Wikimedia Commmons w.wiki/3WAV adapted using the Wikipedia app.

Figure 13.8: Since its creation in 2001 by Colin Hughes projecteuler.net has become internationally popular, with new problems added approximately every two weeks. (Somers 2011) Public domain image of a painting of Leonhard Euler by Jakob Emanuel Handmann on Wikimedia Commmons w.wiki/3WAV adapted using the Wikipedia app.

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

Just like martial arts, you can practice the computational arts with kata (型) on codewars.com and elsewhere. CC BY-SA Picture of world champion Emmanuelle Fumonde by Thierry Caro on Wikimedia Commmons w.wiki/3XeE adapted using the Wikipedia app.

Figure 13.9: Just like martial arts, you can practice the computational arts with kata (型) on codewars.com and elsewhere. CC BY-SA Picture of world champion Emmanuelle Fumonde by Thierry Caro on Wikimedia Commmons w.wiki/3XeE adapted using the Wikipedia app.

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.

In their own words, ICPC is “an algorithmic programming contest for college students. Teams of three, representing their university, work to solve the most real-world problems, fostering collaboration, creativity, innovation, and the ability to perform under pressure. Through training and competition, teams challenge each other to raise the bar on the possible. Quite simply, it is the oldest, largest, and most prestigious programming contest in the world.” (Hacker 2021)

Figure 13.10: In their own words, ICPC is “an algorithmic programming contest for college students. Teams of three, representing their university, work to solve the most real-world problems, fostering collaboration, creativity, innovation, and the ability to perform under pressure. Through training and competition, teams challenge each other to raise the bar on the possible. Quite simply, it is the oldest, largest, and most prestigious programming contest in the world.” (Hacker 2021)

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.

* PAUSE ⏸️

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?
* RESUME ▶️

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 on writing your future. This chapter has discussed some spoken communication skills which complement your written communication skills.

Computing is about much more than technology. Interviews will test some of your spoken communication skills, these are fundamental in working with and for people. (Goble 2020) CC BY-SA portrait of scientist and engineer Carole Goble by Rob Whitrow on Wikimedia Commons w.wiki/5542 adapted using the Wikipedia app

Figure 13.11: Computing is about much more than technology. Interviews will test some of your spoken communication skills, these are fundamental in working with and for people. (Goble 2020) CC BY-SA portrait of scientist and engineer Carole Goble by Rob Whitrow on Wikimedia Commons w.wiki/5542 adapted using the Wikipedia app

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 spoken communication

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.

Just like the Death Star, this galactic superweapon book is under construction using agile book development methods. Image of agile weapon engineering in Star Wars via Wikimedia Commons w.wiki/5N6q adapted using the Wikipedia app

Figure 13.12: Just like the Death Star, this galactic superweapon book is under construction using agile book development methods. Image of agile weapon engineering in Star Wars via Wikimedia Commons w.wiki/5N6q adapted using the Wikipedia app