10 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 letters, application forms or digital portfolios) has hit the target. 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 10.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.3 on communication I/O.

If you’ve got an interview, you can feel good about having a bug-free CV shown in figure 10.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 (Black 2017). It’s the start of a much longer journey of up to 80,000 hours that you’ll spend in employment during 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.

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

10.2 Interviews

Broadly speaking there are two basic kinds of interviews:

  1. non-technical interview, sometimes called competency based interview or human resources (HR) style interview, see 10.2.2
  2. technical style or coding interview, see section 10.2.3

These can be conducted in various modes:

10.2.1 Modes of interview

Interviews can be conducted in various modes:

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

Figure 10.2: Got a video interview? 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

10.2.2 Competency interviews

Competency interviews test some of your softer skills, find out what you’re like, how you work in a team and if you can communicate well. A good interview strategy for any interview is to talk about what you are doing (and what you have done) as in figure 10.3. It might even help to have a checklist in your head of things you’d like to talk about e.g. one work experience (see chapter 5), one personal project and two uni projects, see section 7.6.4. 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 10.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.

10.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. (Murashenkov 2019) 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, the best 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, University of Manchester Computer Science graduate Petia Davidova explains in figure 10.4 what she learned from failing several coding interviews at big technology companies. 😭

Petia describes her worst software engineering interview failures. (Davidova 2021) Petia demonstrates a growth mindset (section 3.5) and productive failure(s). Although she failed her interviews, she learned lots from the process and went on to get a job she wanted. The image above is a screenshot, you can watch the full 16 minute video at youtu.be/qkeQNNjZuQk

Figure 10.4: Petia describes her worst software engineering interview failures. (Davidova 2021) Petia demonstrates a growth mindset (section 3.5) and productive failure(s). Although she failed her interviews, she learned lots from the process and went on to get a job she wanted. The image above is a screenshot, you can watch the full 16 minute video at youtu.be/qkeQNNjZuQk

Coding interviews can be tough, but preparing for them, and doing them will 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 things 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.

10.2.4 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 10.5

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

10.2.5 Topcoder

TopCoder is a platform for competitive programming online. You can complete on your own directly online using their code editor. Single round matches are offered a few times per month at a specific time where you compete against others to solve challenges against the clock, see topcoder.com

10.2.6 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 10.6

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

10.2.7 Leetcode

LeetCode is a platform to help you enhance your skills, expand your knowledge and prepare for technical interview see leetcode.com.

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

10.2.9 Pramp

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

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

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

10.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 you’re 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 9.6
  • 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 ▶️

10.4 Summarising interviews

Too long, didn’t read (TL;DR)? Here’s a summary:

We’ve looked at a range of platforms and competitions that can help you prepare for coding interviews. These won’t just make you better at coding interviews, they’ll make you a better engineer too, whatever stage you’re at.

This chapter is under construction because I’m using agile book development methods, see figure 10.9.

Just like the Death Star, this galactic superweapon chapter is under construction. Image of agile weapon engineering in Star Wars via Wikimedia Commons w.wiki/32PB adapted using the Wikipedia app

Figure 10.9: Just like the Death Star, this galactic superweapon chapter is under construction. Image of agile weapon engineering in Star Wars via Wikimedia Commons w.wiki/32PB adapted using the Wikipedia app