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.
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 CV 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. 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 job ad.
The breakthrough 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 stages ran across a fortnight. 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 rota of my career.
The offer arrived a week later: £60,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 £65,000. I accepted the next morning.
I'd have gone to my friend at the start. I'd have written about my work publicly before I needed to.
Eighteen applications into my search, Mews offered me a Senior PM role: €96k base, equity, fully remote from Amsterdam. I almost took it.
The interviews were very good. The hiring manager returned again and again to ownership, to giving PMs real authority over the roadmap, to moving fast without the slowness of a big company. After every round I felt positive. The equity conversation was clear, the base was the number I wanted, and remote work meant I did not have to move. I was close to signing without thinking much more about it.
Before I signed, I spent two evenings on LinkedIn looking for people who had been PMs at Mews in the last two years. I found two of them and sent short, direct messages, saying I had an offer and asking for fifteen minutes. Both answered inside one day, which already told me something. What they said was too similar to ignore. The roadmap was rewritten about every six weeks, not because the market changed but because senior leadership kept reversing their own decisions. Two PMs had left in the quarter before my offer, and neither departure was planned. One of them told me she spent her last month rebuilding a spec she had already delivered once. That detail stayed with me more than the rest.
I declined the next day. I kept the message short and professional and gave no specific reason. After that it took longer than I hoped to find something else, and for a few weeks I asked myself if I had decided correctly. But I never regretted it.
I'd been looking for new opportunities for about a month when I showed up to a Kotlin meetup in Toronto one February evening, cold enough that half the room still had their toques on, mostly 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, on state management and some of the rougher edges with shared UI logic across platforms. A five-minute chat stretched to nearly an hour. We swapped contacts before we left, and I 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. It looked encouraging. Over the next five weeks or so I went through six applications in 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, citing market rate for senior Android work in the GTA. They came back with CA$130,000. I said yes.
With no professional design experience and a bootcamp portfolio only a few months old, I decided not to use job boards at all. Through the normal channels I would be one of hundreds of more experienced candidates, so I went directly to cold outreach. I spent two weeks researching technology companies in Barcelona, reading their press coverage, looking at their product pages, and taking notes about what each one was really building. I wanted every email to sound like it came from somebody who cared about their work.
I wrote to about 20 companies. Every email was personal. I mentioned something specific from their recent press coverage, said what interested me in their product or their design decisions, and added a link to my bootcamp portfolio with a short note about one project relevant to them. Writing those emails took real time. Some of them I rewrote three or four times before I felt confident enough to send. I kept a simple spreadsheet with who I contacted, when, and what I wrote, mostly to avoid repeating myself, but it also helped me improve my approach.
Twenty emails became two replies and two interviews. The first was with a founder, a general conversation about the direction of the company and about how I think about design problems. The second was with a senior UX designer who wanted to understand my process and how I handle feedback. Both felt like real conversations, and I think that came partly from how I wrote the first email. One of them became an offer: a full-time hybrid role at Inqbarna in Barcelona at 28,000 EUR. I said yes to that one.
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.
I had been working as an iOS engineer in Lisbon for three years, and I wanted a company with a more interesting design system. In my free time I was building a small open-source UI library: three custom controls that I had wanted for years and finally made. About 800 lines of Swift, well documented, with a sample app.
I published it in late autumn. I posted about it on Twitter, put it on the iOS subreddit, and emailed a few iOS newsletters, including a small one called Lisbon Mobile that maybe two hundred people in the mobile developer community here read. The editor wrote about it the next week.
The lead engineer at a Lisbon software company saw that newsletter. He sent me a DM on Twitter the same day. They had been looking for an iOS engineer for about six weeks and the search was not going well. Would I like to talk?
I did. The call was thirty minutes. He had cloned the library, built it, and used one of the controls in a personal project. His questions were about specific decisions I had made: why I used a particular pattern for state management, why one control had that API. We disagreed about one thing. It was the kind of conversation I had wanted to have for two years.
The first formal round was a coding test with two of their senior engineers. A small refactor of real code from their product, two hours. I delivered a clean implementation, plus one small extension they had not asked for, because I thought it 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 before, and asked me to be ready to review it. I came with ten comments. About half were correct, two were wrong, and three started a discussion that used the rest of the hour. Good interview.
Round three was a culture round with the head of product and the lead designer. It was less an interview and more a conversation about how the team worked and what success meant there.
The offer was €50,000 base. I asked for €54,000 and explained my current salary and the cost of relocation. They came back at €52,000 and a small relocation payment. I said yes. Seven weeks of searching, nine applications. Eight of them I sent before the newsletter wrote about the library. The ninth was this company, and I applied formally after the call with the lead engineer, which was more paperwork than a real application.
The library is still open source. I should write more of them.
About six weeks before I got this role, I was frustrated after a difficult phase of migrating our legacy product, about 200,000 lines of React code, to React 19 with concurrent features enabled. Most articles I had read about React 19 skipped the difficult parts, so I wrote an honest LinkedIn post instead: what we migrated, how we did the concurrent rendering rollout, which assumptions were wrong, and the two weeks we spent looking for small tearing bugs in our data-fetching layer. I did not expect much. It was a long technical post with code snippets and a lot of "here's what we got wrong".
Inside one week three recruiters wrote to me. I was also running my own search at the same time, 14 applications to companies in Amsterdam and to remote-friendly companies, but the messages that came to me were of a different quality. One Amsterdam software company was clearly better than the rest. Their recruiter quoted specific paragraphs from my post in the first message, so I knew that somebody technical had read it before writing to me. The process confirmed this. Instead of a LeetCode round or a whiteboard session about binary trees, they asked me to do a code review on a real part of their own codebase, with the permission of the team that owns it. I spent about three hours on it, wrote comments as I would for a colleague, and explained the trade-offs instead of only marking problems. It felt like real work, and that made it much easier to stay interested through all five rounds.
The offer came 42 days after that first message. The base was 82,000 EUR, full-time and fully remote. Before signing I negotiated two things: remote-first as a written policy and not only as a tolerance, and a four-day week instead of five. They agreed to both, and I signed.
I came to Germany as an international worker with self-taught frontend skills and a portfolio built from online courses and personal projects. It felt almost impossible. The rejections arrived quickly, hundreds of them. Some were automatic, some were short and polite, and a few were detailed enough to hurt. Every time a good application stopped, I had to tell myself not to read too much into it.
What helped was persistence and using many channels at the same time. I was active on LinkedIn, on Xing, and on the German Make-it-in-Germany program, which exists to help international workers enter the local job market. LinkedIn gave me the best results. I improved my profile, started to contact recruiters directly, and put my portfolio links at the top. I tried to treat every rejection as information and not as a verdict. If my HTML and CSS projects got no attention, I worked more on JavaScript. If a cover letter did not work, I wrote it again. Slow work without glamour, but methodical.
In the end a company was willing to look past my unusual background. The interview process had four rounds, from a technical skills test to a conversation about cultural fit, and each one felt like a real test of my progress. When the offer arrived for a full-time junior frontend developer role, hybrid, at 45,000 EUR, I accepted the offer.
It took eight hard months, 135 applications, and interviews with 15 different companies before I landed my first developer job as a Frontend Engineer. The first few months I 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. 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 questioning whether this would happen at all.
When the hybrid offer came in at $72,000 and I said yes, it was anticlimactic. A PDF in my inbox and a quiet exhale.
I had been following a design studio in CDMX on Instagram for almost a year before I was brave enough to write to them. Their client work in Roma kept appearing in my feed, and every time it did I saved the post, took a screenshot, and thought "someday". I liked how simple they kept everything, and the way they used type on printed signs and installations. It was the kind of studio where I wanted to learn. I had already sent cold messages to two other studios in the city and neither one answered, so I knew that a normal "I love your work, here is my portfolio" message was not going to work.
I spent one afternoon reading their recent open briefs and chose the one I felt most sure about. I did not write a long cover message. Instead I made three quick sketches with ideas for that brief, rough and not finished, and sent them to the founder in a short DM of four sentences. He answered the same day. I read the notification twice before I believed it was real. He invited me to visit the studio in person, at their space in Roma Norte. The visit went well, and they offered me a trial week and paid me their full day rate for it. Many studios ask you to work that week for free. That mattered to me.
The trial week was hard. They put me on a real project that was already running, gave me feedback while I worked, and expected me to help from the first day. Two weeks after my first DM, they offered me the job full time, with a hybrid schedule.
The credit made my decision. The studio puts the names of junior designers on the work it publishes, and right now that is worth more to me than more money somewhere else. I said yes immediately.
3Applications
2Interviews
2 weeksSearch length
Cold outreachSource
Move closer to your next job offer
Get expert help with your CV, interviews, salary negotiation and job search.