Search real stories by role, salary, location, source of hire, interview process and what finally worked. Use these stories to understand the market before your next application or offer negotiation.
I'd been working in QA for three years, splitting my time between manual testing and building out automation suites, mostly in Selenium and then Playwright once that became our team's preferred tool. When I decided to move, I wanted something fully remote and ideally a step up in responsibility. I set a rough target of around 25 roles and spent about two weeks working through listings on Indeed and LinkedIn Jobs, filtering hard for remote positions in the UK. Some ads were clearly outdated or vague about the actual stack, so I skipped those and focused on companies where the listing gave me enough detail to write a genuinely tailored cover letter. By the end I'd sent out 24 applications and was bracing for the usual silence.
The Manchester software company that hired me was different from the start. They replied within 48 hours, which honestly caught me off guard. I'd already half-forgotten applying. Instead of a recruiter call, their first reply came with a take-home task attached. They sent over a Figma file of a checkout flow and a staging URL, and asked me to write structured test cases covering the key scenarios, then build a small Playwright suite to automate the critical path. It was a realistic, well-scoped brief, not one of those tasks that quietly expands into eight hours of work. I spent an evening on the test cases, thinking through edge cases like empty cart states and failed payment responses, then wrote the Playwright scripts the next morning. I kept the structure clean and added a short README explaining my decisions.
Two video calls followed. The first was technical. A senior engineer walked through my submission with me, asked why I'd prioritised certain scenarios, and we talked through how I'd scale the suite as the product grew. The second was a team-fit conversation with the engineering lead, much more relaxed, focused on how I collaborate with developers and product when bugs surface late in a sprint. At the end of that second call they offered me the role: QA Engineer, fully remote, £38,000. I accepted without hesitation. Start to offer was nineteen days, which felt almost unrealistically fast after some of the drawn-out processes I'd heard about from friends.
By the end of June I'd been job-hunting for three months. The numbers weren't great. I'd sent 64 applications through job boards and LinkedIn Easy Apply, and I'd heard back from three. Two rejected me at the résumé stage. The third moved me to a recruiter screen and then went silent for six weeks.
I was a backend engineer at a small fintech, but the team had shrunk twice in the previous year and I'd stopped learning anything new. The plan was to land somewhere serious about payments specifically. The problem was that every application I sent looked like every other one sitting in the same inbox. My CV was the same CV everyone else had. My cover letters were rephrased versions of the JD.
The breakthrough wasn't a tactic. It was a person. A friend I'd worked with two companies ago had joined GoCardless eight months earlier on the payments team. We had drinks. I described what I was after, somewhere serious about payments infrastructure, not too big, with engineers who weren't allergic to writing about how the system worked. He asked a few questions about my recent work on idempotency keys and then said he could pass my CV straight to the hiring manager.
The recruiter call landed two days later. Thirty minutes, mostly logistics: salary range, notice period, why I was looking. She'd read my friend's note, and the questions felt aimed at me specifically rather than at a stack of similar candidates.
The technical loop ran across two weeks. Two coding interviews, one a production-style task on their toy ledger, one a more standard data-structures hour. A system design round where I walked through a webhook delivery system with retries, signing and ordering guarantees. That round went well partly because I'd built something similar before and partly because I'd actually thought about the problem before the interview rather than during it.
The final round was a forty-five minute conversation with the engineering director. It wasn't really an interview. He wanted to know what I wanted to be doing in two years, what I'd push back on if I disagreed with a technical call, and how I'd handled the worst on-call rotation of my career.
The offer arrived a week later: £67,000. Fair, but a few percent below where I'd pinned my expectations. I asked, in writing, whether there was room to move on the base, walking through the responsibilities of the role and a competing late-stage conversation. They came back forty-eight hours later at £72,000. I accepted the next morning.
Two things I'd do differently if I started over. First, I'd have started the conversation with my friend three months earlier, not three months in. Second, I'd have written about my work publicly long before I needed to. The few public references the recruiter found of mine were closed-source and helped less than the conversations did.
The whole thing took about six weeks from the first message to a verbal offer, and on most measures it looked like a win. Eighteen applications into my search, six interview rounds with Mews, and a Senior Product Manager offer at €96k base plus equity for a fully remote role out of Amsterdam. On paper, exactly what I'd been aiming for.
The interviews were polished. The hiring manager kept coming back to ownership, to giving PMs real authority over the roadmap, to moving fast without the usual enterprise drag. I left each round feeling energized. The equity conversation was straightforward, the base hit my number, and the remote setup meant I could stay put. I was close to signing without thinking much harder about it.
Before I did, though, I spent a couple of evenings on LinkedIn cross-referencing people who'd held PM roles at Mews in the last two years. I found two former PMs and sent short, direct messages saying I had an offer and asking for fifteen minutes. Both replied within a day, which probably told me something on its own. What they said lined up too closely to wave off. The roadmap got rewritten roughly every six weeks, not because the market had moved but because senior leadership kept reversing decisions they'd already handed down. Two PMs had quit in the single quarter before my offer, neither of them as part of any planned transition. One of them told me she'd spent her last month rebuilding a spec she'd already shipped once. That detail stuck with me more than the rest.
I declined the next day. I kept the message short and professional and gave no specific reason. Finding something else took longer than I'd hoped after that, and there were a few weeks where I questioned the call. I never regretted it, though.
I'd been quietly exploring new opportunities for about a month when I showed up to a Kotlin meetup in Toronto one February evening, mostly just to get out of the apartment and talk shop with other Android developers. The turnout was decent, maybe thirty people, and I ended up next to an engineer from Wattpad during the break. We started comparing notes on Compose Multiplatform, specifically state management and some of the rougher edges with shared UI logic across platforms. What I thought would be a five-minute chat stretched to nearly an hour. We swapped contacts before we left, and I honestly didn't think much of it beyond a good networking moment.
About a week later he messaged me out of nowhere. A senior Android Developer position had just opened up internally, and he asked if he could put my name in. I said yes immediately. I'd done some light research on Wattpad before: Toronto-based, product-focused, reasonably sized engineering team, and what I found was encouraging. Over the next five weeks or so I went through six applications total for other roles while this one moved forward, but the Wattpad process was by far the most structured and engaging. Three rounds. A hiring manager screen where we talked about my experience with production-scale Android apps and what I wanted next. A technical live-code session where they handed me a real recursive layout bug they'd actually hit in production, and that one kept me on my toes because the fix wasn't obvious until I traced the measurement pass carefully. Then a team panel with three engineers that felt more like a genuine conversation than an interrogation.
The offer landed about a week after the final panel, thirty-eight days after that initial meetup conversation. It came in at CA$125,000. I pushed back once, calmly, citing market rate for senior Android work in Toronto. They came back with CA$130,000. I accepted without hesitation.
With no professional design experience and a bootcamp portfolio only a few months old, I decided to skip job boards entirely. Applying through the standard channels would just bury me under hundreds of more experienced candidates, so I went straight to cold outreach instead. I spent a couple of weeks researching Barcelona tech companies, reading their press coverage, scrolling through their product pages, and taking notes on what each one was actually building. I wanted every email I sent to read like it came from someone who genuinely cared about their work, not someone firing off a template at three in the morning.
I wrote to about 20 companies. Each email was genuinely personalised. I referenced something specific the company had been in the press for recently, mentioned what caught my attention about their product or design decisions, and linked to my bootcamp portfolio with a short note on a project I thought was relevant to what they were doing. Writing those emails took real time. Some I rewrote three or four times before I felt confident enough to hit send. I kept a simple spreadsheet to track who I'd contacted, when, and what I'd said, mostly to keep from going in circles, but it also helped me refine my approach as I went.
Twenty emails turned into two replies and two interviews. The first was with a founder, more of a broad conversation about the company's direction and how I thought about design problems. The second was with a senior UX designer who wanted to dig into my actual process and how I handled feedback. Both felt like real conversations rather than formal screenings, which I think came partly from how I'd framed the initial outreach. One of those two interviews led to an offer: a full-time hybrid role at Inqbarna in Barcelona at 28,000 EUR. I accepted without hesitation. Quality of outreach beat quantity by a mile, and those weeks of careful research turned out to be the most important part of the whole process.
Around six weeks before I landed this role, I was riding a frustrated energy after wrapping up a particularly rough phase of migrating our legacy product, roughly 200,000 lines of React code, to React 19 with concurrent features enabled. Most write-ups I'd seen about React 19 glossed over the hard parts, so I wrote an honest LinkedIn post instead: what we migrated, how we approached the concurrent rendering rollout, which assumptions blew up in our faces, and the two weeks we spent hunting down subtle tearing bugs in our data-fetching layer. I didn't expect much. It was a long, technical post with code snippets and a fair amount of "here's what we got wrong."
Within a week I had three inbound recruiter pings. I was also running my own search in parallel, 14 applications total across Amsterdam-based and remote-friendly companies, but the inbound interest felt different in quality. One Amsterdam software company stood out immediately. Their recruiter referenced specific paragraphs from the post in the first message, which told me someone technical had actually read it before reaching out. The process reinforced that. Instead of a LeetCode round or a whiteboard session on binary trees, they asked if I'd do a code review on a real piece of their own codebase, with explicit consent from the team that owned it. I spent about three hours on it, left comments the way I would for a colleague, and explained the tradeoffs rather than just flagging issues. It felt like actual work, which made it much easier to stay engaged through all five rounds.
The offer came 42 days after that first message. The base was 82,000 EUR, full-time and fully remote. I negotiated two things before signing: remote-first as a formal policy rather than a tolerance, and a four-day workweek instead of the standard five. Both landed. I accepted without hesitation.
Five years without a single interview will leave you rusty, and I knew passive review wouldn't fix that. So before I applied anywhere, I built a structured plan. I enrolled in an interview prep course, scheduled dozens of mock interviews with engineers I found through various platforms, and put serious time into system design. Not just reading about it. I whiteboarded distributed systems from scratch and stress-tested my explanations out loud. It took about two months before I felt like I was operating at the level the top-tier companies expect. Even then I wasn't sure it'd be enough.
I sourced interviews every way I could. I leaned on former colleagues for referrals, woke up dormant LinkedIn connections, answered inbound recruiter messages, and used a few lesser-known platforms that connect engineers straight with hiring teams. The goal was volume, because volume gives you leverage and calibration both. The first few onsites were rough. Not failures, but I could feel the gap between my prep and how I actually performed under pressure. By the fifth or sixth loop I started to settle. By the tenth I knew exactly how to pace a coding round, when to talk through my reasoning versus just write code, and how to structure a system-design answer so the interviewer could follow without getting lost. The whole thing became almost clinical.
I ended up with 7 offers out of 16 onsites, which still surprises me when I say it out loud. The spread of companies, comp packages, and team cultures gave me a clear picture of what I wanted. I accepted Airtable: full-time, hybrid, at $185,000. The role, the team's technical depth, and the product direction all lined up in a way the others didn't quite match. If you're coming back to the market after a long gap, here's what I'd tell you. Preparation compounds harder than you'd think, and mock interviews under realistic pressure are worth far more than another week of grinding problems alone.
The library wasn't a job application. I keep having to remind myself of that, because it ended up being the most effective job application I've ever sent.
I'd been working as an iOS engineer in Lisbon for three years and was quietly looking for somewhere with a more interesting design system. On the side I'd been tinkering with a small open-source UI library: three custom controls I'd wanted to exist for years and had finally gotten around to building. About 800 lines of Swift, well documented, with a sample app.
I posted it in late autumn. Tweeted about it, put it on the iOS subreddit, emailed a few iOS newsletters, including a small one called Lisbon Mobile that maybe two hundred people in the city's mobile dev scene read. The editor wrote it up the following week.
The lead engineer at a Lisbon software company saw that newsletter post. He DMed me on Twitter the same day. They'd been hiring an iOS engineer for about six weeks and the search wasn't going well. Would I be open to a chat?
I was. The chat ran thirty minutes. He'd cloned the library, built it, and integrated one of the controls into a side project of his. His questions were specific to decisions I'd made: why I'd used a particular pattern for state management, why one control had the API surface it did. We disagreed on one thing. It was the kind of conversation I'd wanted to be having for two years.
The first formal round was a coding screen with two of their senior engineers. A small refactor of a real piece of their codebase, two hours. I shipped a clean implementation with one small extension they hadn't asked for but that I thought made sense. They said the extension was the part they liked.
Round two was a code review session. They sent me a piece of their code in advance and asked me to be ready to review it. I came with ten comments. About half were right, two were wrong, and three opened up a discussion that ate the rest of the hour. Good interview.
Round three was a culture round with the head of product and the lead designer. Less an interview, more a conversation about how the team worked and what success looked like.
The offer was €50,000 base. I asked for €54,000, citing my current comp and the relocation impact. They came back at €52,000 plus a small relocation help. I accepted. Seven weeks of searching, nine applications. Eight of those went out before the library got picked up. The ninth was the role at the company, which I applied to formally after the chat with the lead, more paperwork than application.
The library is still open-source. I should probably write more of them.
I didn't have a relevant degree, and I won't pretend the search was easy. I'd come to Germany as an international worker hoping to break into tech, with a self-taught frontend skill set and a portfolio I'd built through online courses and personal projects. From the outside it probably looked like a long shot. From the inside it felt like one too. The rejections piled up fast. We're talking hundreds. Some were automated no-replies, some were polite one-liners, and a few were detailed enough to sting. Every time a promising application went cold, I had to talk myself out of reading too much into it.
What kept things moving was persistence and casting a wide net through the right channels. I was active on LinkedIn, Xing, and Germany's Make-it-in-Germany program, which exists specifically to help international workers find their way through the local job market. LinkedIn was where I got the most traction. I tightened up my profile, started connecting with recruiters directly, and put my portfolio links front and center. I tried to treat each rejection as a data point, not a verdict. If my HTML and CSS projects weren't getting attention, I pushed harder on JavaScript. If a cover letter wasn't landing, I rewrote it. Slow, unglamorous work, but methodical.
Eventually I got through to a company willing to look past the unconventional background. The interview process had four rounds, covering everything from a technical skills screen to a cultural fit conversation, and each one felt like a real test of how far I'd actually come. When the offer finally arrived, it was for a full-time junior frontend developer role in a hybrid setup at 45,000 EUR a year, and I accepted without hesitation. If you're trying to break into tech abroad without traditional credentials, the rejections aren't a verdict on you. Patience and volume, through the right platforms, got me there.
It took eight hard months, 135 applications, and interviews with 15 different companies before I finally landed my first developer job as a Frontend Engineer. The arc of those 240 days reads almost cinematic now, but living through it was grinding and slow. The first few months I did what most bootcamp grads do: blasted out applications through job boards, tailored nothing, and wondered why I kept getting ghosted. I think I sent around 80 that way before I accepted the strategy wasn't working.
The shift that changed things was dropping generic listings entirely and going straight to people. I started doing cold outreach to senior engineers and engineering managers on LinkedIn, keeping the messages short, specific, and built around something real I'd noticed about their product or stack. Most never replied, but the ones who did opened doors the job board route never would have. That's how the offer that mattered came through. Alongside the outreach, I started treating every surface of my professional presence like a product I had to ship. The portfolio got rebuilt twice, the resume got stripped down until every line earned its spot, and I wrote and rewrote a two-sentence pitch until I could say it without thinking.
I also made a rule for myself: between every round of applications I had to build or meaningfully extend a project. It kept my skills moving, but more practically it meant every interview I walked into had something new to talk about. I got rejected a lot. Some stung more than others, especially the ones that went three or four rounds deep. By month six I was genuinely questioning whether this would happen at all.
When the hybrid offer finally came in at $72,000 and I said yes, it was almost anticlimactic. No fanfare, just a PDF in my inbox and a very quiet exhale. Those 135 noes were the price of one yes, and I'd pay it again.
135Applications
15Interviews
8 monthsSearch length
Cold outreachSource
Move closer to your next job offer
Get expert help with your CV, interviews, salary negotiation and job search.