In late summer of 2020 I moved from freelance software engineer to a full-time position. I want to outline this process for literally anybody who's interested because I've found it useful when other people have done the same - like this post about interviewing at Google, this front-end, and this more generic post.
Web development is a joyfully open community. There's a lot of sharing, most often we share code, but we also share details about the wider context of our field. Navigating a career is hard, and that's not made easier when people don't talk about their experience of moving (up, down, sideways) within and between companies.
It can be hard to talk about these things with your current colleagues without sounding like you're planning on leaving. It's also just a weird industry, where applying for jobs can take a long time, require a lot of standardised hoop-jumping and box ticking, and just generally feels pretty daunting. Not to mention the global pandemic and economic down-turn that hit us in 2020.
Anyway, I've managed to find a new job that I'll be starting in October 2020. I'm (secretly) very excited and hopeful for it, and I want to share what it was like interviewing for a frontend / fullstack software engineering role in the summer of 2020.
A note on honesty:
I want to be as honest as possible here, and not skip over mistakes or hurtful events (like being rejected). I still have to be purposefully vague in some places. Honestly, the specifics don't really affect the trends and takeaways as a whole.
I'm also not going to go into detail about my salary here. I would (and do) discuss salary in person with trusted peers because people and companies have (and do) get away with discriminatory (e.g. by gender) pay for people in similar positions. But this is the internet, yo - I'm not going to talk about this right now.
If no one around you is willing or able to talk about salary, it's fairly easy to find average data for your city and job position. For example, the average salary for an engineer (which is a broad definition) in London in 2020 is about £50-60k:
Being open to opportunities
I am a software engineer with 3-5 years1 of front-end and full-stack experience. I have worked in academia, in large (>500 person), scaling (50-150 people), and small (~5 people) companies. I spent 2.5 years in companies, and about 8 months freelance.
I signalled myself as open to new opportunities for related positions around July-August of 2020. Around the middle of September I accepted a full-time position as a front-end engineer. In all, it took me ~10 weeks from first thinking "I should see what's out there" to signing a contract.
Much of my job hunting was through "passive" platforms, where recruiters and companies would come to me with information about positions. I used LinkedIn, hired.com, and talent.io2. On the latter two platforms, you have the ability to set salary expectations and create a list of technology stack/work environment preferences.
I also used various job boards, notable hacker new's monthly "Who's Hiring" (which are consolidated here) post, to look for jobs maybe once a week. There's a lot of nonsense, unclear, non-applicable job postings out there, and it's easy to spend too much time searching the noise for signal.
I want to be in my next position for ideally 3+ years so I was very selective about the companies I wanted to work with. I did not need a new job, and so I could be afforded this luxury.
In that time I had introductory phone calls with 10-15 companies, and interviewed with seven (i.e. arranged a follow-up from the introduction call). I ended up accepting an offer from one, was rejected by one, ghosted by two others, and declined three at the point where they asked me to complete some kind of code challenge.
The interview process
The interview process for all companies who I spoke with (more than the seven mentioned here) looked surprisingly similar:
- A pre-interview interview. Have a 30-45 minute one-to-one chat with a recruiter or product-person. The point of this chat is for both parties to get a sense for each other. I am good enough at faking extroversion to actually enjoy these, to chat with interesting people about interesting problems. If you're roughly qualified in the technologies, and find yourself actually engaging with the problems the startup are facing, then you'll normally be screened through these calls an invited to the next stage.
- A technical chat. If you make it through the introduction call, a few days later you'll probably have a more focused conversation with somebody, or somebodies, more technical. These chats are about drilling down on the kind of work you've done recently, and examples of your character. Be prepared to have a few case studies for specific projects you've worked on, things which have made you proud, and things which you have done wrong. Smaller companies tend to have more free-form interviews but larger/scaling companies will have a more formalised process with more set criteria. Try to stick to your time, don't ramble (but don't be too short), be honest, and be kind to yourself, your colleagues, and the industry as a whole. If the company think you're as qualified as you say you are, and you're a good ✨cultural fit✨ then you'll make it through this stage.
A code-based test. At some point they're going to want to see you write code, and you're going to want to show off how able to write code you are. The format of these varied, and I'm really happy to see a move away from take-home tests as the only thing they ask you to do. Methods I either experienced, or would have experienced, include:
- Walking someone through a codebase I had written, or was familiar with.
- Taking a look at the company's codebase, and running a think-aloud style interview where I explain what I'm seeing and what I think about both syntax and architecture.
- A time-boxed take-home problem, i.e. being given a specific coding challenge but with an explicit deadline or limit on time (in the order of days, not hours). The company would tell you ahead of time if you needed to set anything up in particular (e.g. libraries, virtual environments, software).
- The classic homework take-home problem, i.e. being given a problem and asked to submit a solution when it's ready.
- An on-site interview. If you can write the code, and the company like how you write code - then you'll probably be invited to an on-site interview. All companies I spoke to (which weren't 100% remote) had an on-site part of their interview, and all made concessions given the COVID-19 pandemic (only meeting a certain number of people, social distancing measures, etc.)
In all, over the summer (6-8 week period) I interviewed with seven companies. I've grouped them by outcome, the order other than that is completely random.
Sustainable Laundry company
🎊 Accepted an Offer
What do they do? They wash clothes, I guess, with the USP of being zero carbon.
What happened: one-on-one intro chat with head of tech, two-on-one chat with CEO and head of tech, then an on-site with the wider team. Offer made the following day and accepted two days after that.
Hospitality/Services adjacent company
🙏 Declined before code-test
What do they do? They work with companies in the hospitality and services industry to increase efficiency.
What happened? After a productive chat with someone product-focused I had another productive chat with someone in the tech team. I was offered a take-home code test which I declined because I accepted the other job. I was offered contract work at a later date, and would have accepted it if I had the time, they were genuinely a good bunch of people.
Civil Infrastructure company
🙏 Declined before code-test
What do they do? The company use novel software to reduce losses and increase efficiency on civic infrastructure (think roads, water, sewage, power lines).
What happened? A successful introduction call with a product person, then a one-on-one with a C-level person. I declined the take-home coding test as I accepted the above offer, additionally their tech stack was far outside my current area of expertise.
Productivity software company
🙏 Declined after first interview
What do they do? A very early stage (almost-finished internal MVP worked on by small team) team building a real-time, collaboration-focused, web productivity tool for teams.
What happened? I declined a code-based assessment because I did not believe in the company's mission, especially in a crowded marketplace - they couldn't verbalise a strong, coherent USP or value proposition in a busy marketplace.
What do they do? A growth-stage startup with a vibrant and varied tech team who handle global-level logistic chains.
What happened? I was rejected after a personal fit interview with a number of employees. I received specific and targeted feedback.
👻 (Almost) Ghosted
What do they do? They're working in the talent acquisition space to help recruiters find talent and streamline the process from applicant and recruiter side.
What happened? After ~4 weeks I got an e-mail back saying the position had been filled, but was offered short-term contract work with the team.
Data Privacy Company
What do they do? An international data-privacy company who were looking for frontend engineers to improve the UI of their products.
What happened? I saw the job advertised online and reached out to the contact e-mail address given (who was the CEO). The CEO asked for a CV and a cover letter which I sent in and never received an acknowledgement or reply.