Made Tech Blog

Preparing for your software engineering technical interview

At Made Tech our software engineers use their knowledge of programming languages, platforms, and architectures to help organisations make a positive impact through technology. 

We believe recruiting team members with unique career backgrounds, different experiences and personalities is the best way to reflect and serve society. So if you don’t have a ‘traditional’ background in software, don’t let that stop you from applying. And if you’ve never done a technical interview before don’t worry. In this blog post we’ll take you through everything you need to know. 

The technical interview  

There are many reasons we hold a technical interview for our software engineering roles. This includes gaining an understanding of how you work and how you respond to feedback. A technical interview helps us evaluate how you collaborate with other team members, communicate your ideas and your ability to explain technical concepts in a nontechnical way (e.g to non-technical people).

The technical interview is also a chance for you to share more about your experiences with our preferred ways of working – that’s things like pair programming and test driven-development (TDD). During the interview you can also give us insight on your experiences with different technologies, for example your chosen language, framework and cloud provider etc. 

Try not to feel nervous, remember this interview is also about finding out if we’re right for you and if Made Tech is somewhere you feel you could thrive and see yourself working at. 

What can I expect?

We’re all about striking the right balance in our approach to hybrid working. That means all of our interviews are remote, so you can attend from wherever you are and at your convenience. It’s always a good idea to choose somewhere that’s distraction-free for your interview – although we understand interruptions can, and do, happen. Hosted on Google Meet, your technical interview will be a video call with our friendly team. We’ll always aim to have 2 engineers interviewing you. 

Your interview will consist of 2 tasks. The first task is a system design exercise where we’ll present you with a scenario and ask you to sketch out a high level diagram of the pieces that could deliver this service. Next up is pair programming. Following the same scenario, you’ll pair with an interviewer in a short coding kata, implementing some of the logic for the new service you helped design in the first task using TDD.

We split the interview into these 2 skill-based tasks for a couple of reasons. The system design task helps to make sure all of our engineers can think about the “big picture” context for their work and are able to provide reasoning for high-level decisions. The pair programming exercise helps illustrate how we like to work, as we believe pair programming on our teams ensures constant knowledge sharing, improves code quality and helps to reduce bugs.

Throughout the technical interview, each candidate is asked the same initial question on each section. This helps us make sure we’re following a fair and equal process. 

Now let’s go through each task in a little more detail. 

The system design exercise

We use Miro, a virtual whiteboard, for the first section of the technical interview. But if you’re not familiar with it, don’t worry. We’ll always guide you through the basics needed to complete the exercise. 

We have a few tips for you when it comes to this part of the technical interview. Firstly pick somewhere to begin and start small and simple. This is so you can make sure you’re identifying the requirements and implementing enough to meet that requirement – this is our ‘minimum viable product’. 

During this exercise we’re looking for ‘evolutionary architecture’ – this means the design of the system evolves as new requirements are introduced, rather than a ‘big up-front design’ that tries to do too much, too early. Start with a simple solution and then look for reasons the simple solution may need to change. As our conversation progresses, evolve your architecture to meet new requirements and the changing needs of the user. 

Speaking of the user – make sure you’re thinking about user journeys throughout and talk us through your design decisions. One way you might do this is to think about what makes your system scalable, reliable and secure – use that to justify the decisions you’re making. 

A big part of this task is communication, remember to talk through your design as we go through the exercise. This is so we can understand why you’re making certain changes. As a top tip, remember to ask your interviewers questions to help you make those changes, for example:

  • How many users do we expect?
  • Does this change over time? (are there more users during the day vs night?) 
  • What mobile devices do our users have access to?

Remember that it doesn’t matter (too much) if your diagram isn’t the neatest.

The pair programming exercise

During your interview, pair programming is done via screen sharing. To save time, we need you to share your whole screen as opposed to simply your browser window. This is why we’ll ask you to set up your environment in advance – ready to test! So make sure a placeholder test runs ahead of time.

Pair programming is all about collaboration. Here’s where we can see how you work with other members of the team. It’s important to note that we don’t expect you to necessarily ‘complete’ the test exercise. Collaboration and conversation is more important here. Don’t be afraid to ask questions to who you’re pairing with and talk through what you’re thinking. Your communication skills in this stage are just as important as the code. 

As before, make sure you’re taking small steps like writing tests before code and collaborating with your interviewers. Another tip is to think small at the domain level rather than trying to create a full web app with database storage.

Always use a language you’re comfortable with – don’t fall into the trap of trying the latest thing or something you’ve learned in the past month. This doesn’t usually end well, so stick with what you know and it will enrich the rest of the exercise.

If TDD is new to you – tell us! Be honest about your experience. It’s not a problem if this is something you’re unfamiliar with but please do factor this into your interview preparation – so you can evidence it. We want to see a willingness to learn. During your interview we’ll see if you can do TDD with our support.

Are you our next software engineer?

Here’s some final guiding words on whether we could be a good match. If you’re collaborative by nature and opinionated but open to learning new things – we want to hear from you. If you have a broad knowledge of lots of areas or expertise in one, let us know. As long as you’re adaptable with an eagerness to embrace technologies you may not be familiar with then get in touch. 

For a few final resources to help you prepare for your Made Tech software engineering interview, take a look at:

We hope this has given you a small insight into what a technical software engineering interview looks like at Made Tech. If you haven’t already, take a look at our open roles.

We’re also hosting a 30 minute online session to let you know what it’s like as a senior software engineer at Made Tech. Register your interest today as spaces are limited!

About the Author

Made Tech Team

Blog posts from the team at Made Tech