avatarRupert Waldron

Summary

Average Java Joe shares his experience and tips for securing a non-FAANG Java developer job, emphasizing the importance of practical experience and preparation tailored to the company's expectations.

Abstract

Average Java Joe, a seasoned Java developer, provides a firsthand account of the job search process outside the FAANG sphere. He emphasizes the value of practical experience with Java and Spring frameworks, the necessity of preparing for interviews by researching company culture, and the importance of being able to discuss one's own projects. Joe details the multi-stage interview process, from the initial CV screening to technical coding challenges and pairing sessions with tech leads, culminating in managerial interviews. He advises candidates to focus on their strengths and be prepared to demonstrate their technical skills under pressure. Joe's journey highlights the challenges and triumphs of navigating the tech job market, ultimately leading to a successful offer from a desirable company.

Opinions

  • The author expresses a preference for a non-FAANG work environment, suggesting that the culture and expectations at such companies may not align with every developer's career goals.
  • He values continuous learning and self-improvement, as evidenced by his proactive approach to mastering Java and Spring through online courses and daily practice.
  • The article conveys a skeptical view of the interview process, particularly the extensive preparation required for coding challenges and the often unrealistic expectations set by companies.
  • Joe underscores the importance of soft skills, such as communication and cultural fit, which are evaluated alongside technical expertise during interviews.
  • He acknowledges the stress and competitiveness of job hunting in the tech industry but maintains a positive outlook, encouraging other developers to persevere and seek out opportunities that align with their personal and professional aspirations.
  • The author recommends leveraging online resources like Glassdoor for company research and suggests maintaining a meticulous record of interactions with recruiters to avoid conflicts and duplications in the application process.

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

Photo by Sammy Williams on Unsplash

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 ”. The inevitable weeks of preparation on Leetcode and HackerRank after memorizing “Cracking the Coding Interview”, not forgetting the often-overlooked personality and cultural fit interviews.

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

Java
Interview
UK
Spring
Algorithms
Recommended from ReadMedium