Aim low! Get that non-FAANG Java developer job now. By Average Java Joe

Introduction
I never wanted to work at a FAANG (Facebook, Amazon, Apple, Netflix, Google) company, but I did want to get another developer job where I could code more, learn more and get paid more. I’m not sure what put me off the FAANG utopia… the bean bags, ping-pong or just the advanced understanding of algorithms and data structures. Naturally, I read many articles on “How I landed my dream job at
I have just been through an “experience” to get my brand-new Average Joe Java job, so I thought I would share the experience for those of you in the same situation who have set your sights slightly lower than FAANG levels.
Background
I was 48 years old when I landed my first Java developer job, working as a programmer on some Spring-Boot microservices for a bank. You are right in guessing I am a career changer! Prior to getting my first coding job I had taught myself a few languages to a basic level, but no luck on the jobs front. I then decided to play the numbers game and learn a language that gave me the opportunity to apply for more jobs which led me to learning Java using Tim Buchalka’s very comprehensive Complete Java Masterclass. That and the sage advice from online guru Brian Knapp at Code Career Genius, who recommended “Code every day, apply for a job every day”, and eventually ended up with my first bonafide developer role. A couple of years after taking Java and Spring exams and coding every day I was ready for my next step. What I wasn’t ready for was the interview “experience” in a Covid world.
Preparation
Having read all the interviewing at FAANG articles I set to work on algorithms and data structures with the aid of grokking algorithms, which is a great book to get your started. By the end I knew the basic data structures and algorithms (the easier ones), a few design patterns and some basic microservice architecture. I was all set!
What I didn’t revise in any detail was Java or Spring, I didn’t even really review my projects that I had completed in enough detail. Make sure you do this; most companies will want you because of your experience and they will test you on that experience.
Reviewing the company, culture and possible interview questions is very easy to do on Glassdoor. Do not overlook this excellent resource.
Kick Off
I didn’t find it particularly successful when responding to a job advert, but what I did find very successful was uploading my CV to a job site. That upload and accompanying profile change will flag to recruiters that you are fair game. Prepare for plenty of phone calls the next day. I also highlighted that I could be approached by recruiters on my Linkedin profile.
It was great being Mr Popular, there were so many companies interested in me… this was going to be easy! A useful tip is to make a note of the company and the associated recruiter, as this will prove invaluable later to avoid two recruiters sending your information for the same job. Although there appear to be many jobs on offer, there are also many more candidates, whom, according to recruiters just can’t do what they say then can. Hence the extensive interview process which companies put in place.
Think of this stage as a funnel to grab as many potential interviews as possible so hopefully you end up with an offer or two at the end of the many stages to come.
Stage 1 — The “chat”
If you make it passed the CV check then the first of these stages is what I refer to as “The Chat” sometimes it can be just cultural fit / communication skills, other times it can be a full-on technical chat about polymorphism and your favourite Spring bean scope. The key to work out which is to find out who is interviewing you, if it is HR or a manager it is more likely to be the former, if it is a tech-lead, strap yourself in because it could get tough. Either way make sure you can talk about what projects you have done in work and in your own time.
Stage 2 — “Here’s some code, solve the problem in your own time”
At one of the companies I was interviewed for this was the first stage after they looked at my CV. I assumed they didn’t want to waste time even talking to me if I couldn’t do the technical challenge. These challenges fall into the two categories. The first is the zip file with the instructions where you can work through the code in your own time. These aren’t too bad and normally involve processing data using Java’s streams and maps. Make sure you use TDD, or at least add some tests at the end . The second is the online repl type coding assignment with a strict time limit and something more akin to HackerRank and Leetcode that I was expecting. These are much more challenging, particularly as you have test cases, but often you don’t know what they are so you will have to write your own. Top tip, copy the code into your favourite development environment so you can get a bit of help and automatically import the libraries you need.
I did well on the first option, but no so well on the second type although my code did pass the basic test cases.
Stage 3 — Pairing with a tech lead
Congratulations you have made it this far, you have got through CV selection, initial meeting and a coding challenge… surely that is enough! No. Now it is pairing with the tech lead, and when I say “pairing” I mean writing/modifying some code that is normally very unfamiliar in terms of context, whilst a very experienced developer looks over your shoulder — in a zoom kind of way. Sometimes you are opening up a zip file in your favourite IDE or other times you are starting from scratch using Spring initializer. My approach was to aim to do TDD and so it is a good idea if you build a basic REST API from scratch beforehand so you are familiar with the testing frameworks and libraries. I even had my dummy project open so I could check what I needed, I even said that was what I was doing as it would be what I normally did when I code. Other code samples were basic Java with some tricks hidden in the code, these included missing access-modifiers, updating data in immutable data structures etc. Whatever you do, do not attempt to modify the code if you don’t have a test to cover it!
For me this was the hardest stage as I was quite nervous, which made thinking quite difficult. At one stage I was asked for a Palindrome checker, I knew what to do and had done that as a basic problem years ago, but with nerves and time pressure I just said I would google it so we could move on. They seemed fine with that as it didn’t seem to be a major part of the test.
Stage 4 — Meeting with the manager
Normally this stage is either part of the pairing test or arranged to be just afterwards, so you have this meeting whether you pass or fail the previous stage. This covers the usual interview questions similar to the first one: why do you want to leave your current job; strengths and weakness etc. Just ensure you have questions to ask them e.g. “What work have they got planned?” and “How would you describe your culture?”. These were important to me.
Summary
More congratulations, you just have completed the interviews for ONE company. All those recruiters and CVs you sent off don’t sound like such a good idea now do they! It’s tough but try to do them all together and then you could potentially get offers around the same time so you don’t miss out for the sake of something coming up in a week’s time. Even if it does mean doing coding challenges into the evening and then again at 4.30am.
After two weeks of interviewing and several “holidays” from work I managed to secure an offer at an excellent company.
Hopefully this has given some insight into the recruitment process in the UK for those of you who are average Joe Java developers like myself.
Good luck in your job search.
If you are hungry for more, check out my stories:
Getting started with Cucumber and JUnit 5 using Cucumber-JVM
Create a non-blocking REST Api using Spring @Async and Polling






