A brief introduction
I got back to development, worked remotely for a year as a Software Engineer for MODLR — where I learned a lot. When an opportunity came to move to Berlin as a Backend Developer, I took it (required only English for the job). In April 2021, I decided to look for a new challenge in Berlin.
The numbers above are over three weeks. In 2018, it was difficult to get a call back for interviews. Either the resume got filtered out, or companies did not want to assist with relocation and visa sponsorship.
In 2021, all the companies that I applied were remote friendly, required only English and no German, as is the case for most tech roles in Berlin.
Usual Tech Interview Process for full-time software jobs in Germany
- Send an application
- Screening call with a Recruiter (sometimes a small automated code challenge, but I didn’t receive any)
- Technical call
- Take home or coding challenge
- Review from Step 4 / call with the team I would be joining
Picked out six interesting companies (small to mid-ranged sized) in Berlin, looked them up on Linkedin or Kununu, checked their own careers page, and applied. The only one that didn’t get back was for the application via Linkedin — most likely lost in a sea of applicants.
Stage two: 30-minute screen calls
Initial calls were either from an internal or external recruiter who worked for the company. Spoke about work experience, why I’m leaving my current job, why I’m keen on joining the company, what piques my interest in the job description, how flexible their remote (home-office) policy is.
We went through my resume & I got to ask questions about the company as well. At the end of the call, some companies asked for a joining date (3 months is generally acceptable) and a salary expectation.
Salary expectation is weirdly a common thing in interviews in Germany. Most Applicant Tracking Systems require an expected salary on the application form. I always fill it with 1€. If & when it is brought up at the end of the call, I politely refused to negotiate at that stage in the interview process.
Stage three: Technical call
Usually a discussion over the things I have worked with, tools I have experience with and tools that I don’t. A fairly relaxed conversation where we both got an overview of how we generally built & deliver software, how we handle when things go wrong, a little bit of high-level system design (no whiteboard, trivia, or grilling!)
Something that caught the attention of all technical calls was my jobs board. It was on the top of my resume and everyone opened it on their screens during the interview. Thankfully it didn’t crash.
The conversation switched to how I built Arbeitnow, with a focus on
- Frontend — What is it built on, if it could have been a Single Page Application using Vue.js or React, testing tools used (Shout-out to Cypress!)
- Backend — built on Laravel, powered by Elasticsearch, familiarity with Docker
- Database design, tradeoffs, Redis Queues
- If I have any AWS or Cloud experience, which I don’t have a lot of — I was upfront about
- CI/CD Pipelines and experience with Unit and Feature tests
All of the above felt like a conversation. Interviewers weren’t looking for right or wrong answers. We discussed trade-offs, making changes to system design. I was able to get some ideas during the conversation so I can say this was productive. I went through all four technical rounds.
Stage four: Take home or coding challenge
We’re at the exciting part that programmers in Tech love to talk about (apart from their disgust for PHP). In 2018, I did several coding challenges and take-home projects which companies mention take a couple of hours.
They don’t because companies (startups tend to do this more) want a fully functioning application with test suites and estimate it around two to six hours. Or trivia questions. Unpaid.
Earlier this year, I built a section for companies that don’t require Leetcode or Whiteboard Interviews, so this was a no-go for me. Two companies waived the next round without asking (which was genuinely surprising and refreshing) and I refused to proceed further with two companies that insisted on sticking with the process.
If I didn’t have a side project (or an equivalent), I’m not quite sure if this round would have been waived or not.
Stage five: Review/Call with team
This round was initially supposed to be a review of the take-home or coding challenge. Since that round didn’t happen, we spoke a bit more with a different engineer from the company. With one company, there was a casual chat with the team for 30 minutes.
Stage six: Offer
HR called back within 2–4 days after the last call. We spoke about the €€€, the benefits (in detail), remote flexibility and a starting date. The entire process for all companies happened in 3 weeks and the company I accepted the offer for took around a week. Quick turnaround and feedback from all companies involved kept this a smooth process.
Funnily enough, the job offer that I accepted was one that I found on my job board. If I didn’t use it, who else would — right?