A little bit of context for you. I have been a software engineer since 2015. I spent some time at a consultancy, then moved to another consultancy. Then in 2022, moved to contracting at a swiss tech start-up. I made steady and consistent progress, gaining skills and experience, junior to senior. Then in 2024, I was made Tech Lead of a project at the start-up. My first leading role!

My first major task was to ship the project. Some of you may know, shipping is hard. So to do that successfully, really spurred me on. I was vindicated that I was not just a good engineer, but also a good leader. In January 2025, the company started getting into some financial difficulties, but with my project being (in my opinion at least) one of the best vehicles by which the company could get more revenue, I was not let go. Yet.

Fast-forward to July 2025, again the company was struggling. 9 other contractors and I had our contracts terminated. It was pretty brutal to be honest! But overall, I wasn’t feeling too down about the situation. I was ready for a new chapter in my career. I took 2 months off. My first proper break from work in 10 years. In september 2025, I started the search for a new job. At this time I was really not ready for what I would be required to do!

I initially reached out to an old colleague friend at a bank for a referral. I figured, this will be easy, I will just talk about my experiences and the tech, and I’ll get an offer. Bish bosh done. However…

One does not simply get a job

The wake-up calls

I started applying to Senior Software engineer jobs on LinkedIn and TotalJobs and I was having some success, at least I was getting interviews. But there were a few technical chats which really threw me! 2 in particular come to mind. The first being from a coding interview.

Interviewer: Ok you’ve implemented this API, is there anything else you would add?
Me: I’ve got the object from the db, and returned it to the caller. No, that’s it!

I had just completely forgotten how to implement an API from scratch. Thinking about design and edge cases, monitoring and logging, exception handling, etc.

Interviewer: Tell us about a time you had to make a technical decision?
Me: When implementing an integration with 3rd party API, I had to choose between this and that library.
Interviewer: How did you choose?
Me: I weighed up the choices, did a little PoC, then chose.
Interviewer: Ok. But tell us about the details…
Me: Oh… it was like 2 years ago, sorry I don’t really remember.

Absolutely unacceptable! I was totally unprepared for this. I had come into this process so naively, it was just pure time-wasting. It was quite the low moment for me. I had been utterly devastated by failing so badly at these great opportunities. I was getting the interviews, and thinking I had done the hard bit! It forced me to take a good look at myself, and really revamp how I was approaching these interviews.

Time to step up

I treated it like learning to code all over again. I started writing a booking system app for practice. End to end. Registration and sign up, view classes, book a class, authentication, integrated to Stripe, FE (with a bit of help from Claude!). I created and practiced, then demoed it all to a dev mate.

I reviewed my old code. I created architecture diagrams and documents. I worked and worked and worked until I understood the technical depth of what I had previously worked on to a very low level. I went through so many different “Tell me a time when…” questions, and prepared answers to all of them.

I read System Design Interview: An Insider’s Guide by Alex Xu cover to cover and for each new term or concept I didn’t understand, I researched until I understood it. I practiced demoing and presenting diagrams to my Dad, and to my friend. I wasn’t going to throw away these chances anymore. And boy did that effort pay off!

The turning point where this work all started showing was December. I had interview processes going with 3 different companies. I got through each and every stage. Before each interview, I crammed and prepared specific things for each one. I went from only failure to (almost) only success. I ended this process with 3 final interviews, where 1 of them offered me the job. So not 100% success, but the stark difference between pre and post prep was incredible.

Success and Failure

What actually made the difference?

First, I stopped relying on my experience to speak for itself. I had to actively prepare specific examples with full context – the problem, the constraints, the decision process, the outcome. When they asked “tell me about a technical decision,” I could walk through the entire thought process because I’d documented it beforehand.

Second, I built something new from scratch. The booking system wasn’t just practice. it forced me to remember all the things I’d forgotten I knew. Error handling, monitoring, database design, authentication flows. You can’t bullshit your way through building an actual working system.

Third, I went deeper on my past work. Creating those architecture diagrams wasn’t just about having pretty pictures for interviews. It forced me to understand systems I’d built at a level I hadn’t when I was in the weeds writing code daily. That depth showed in technical discussions.

Looking back at those early disasters, I realise I’d confused “being a good engineer” with “being good at interviewing.” They’re related but not the same. I was devastated when I failed those first interviews because I genuinely thought I was ready. That naivety cost me opportunities, sure. But it also pushed me to approach this process with the same rigor I’d bring to shipping a production system.

Six months ago I thought a decade of experience would carry me. Now I’m starting my new job soon, and I’ve learned that staying sharp requires deliberate practice, not just years of work. Interviewing is a skill. You can get better at it.

✌️x