After speaking to some colleagues about looking for a new job, I thought it be useful to document how I search for a new role.
Before getting into the details, it is worth highlighting:
- Don’t rage quit
Some jobs are simply horrible, and can really bring you down mentally. If you are in one of those jobs, try and stick with it, while looking for a new job becomes your number one priority. I’ve rage quit before, and while it was deeply satisfying initially (and really helped my mental health), it took a time to find a new job. Employers definitely prefer to employ someone already in a job over someone who is not. In the end, it would have been less stressful to stick with the crap job and find a new role before giving my notice.
- It takes time and effort
My experience is that you need to build a pipeline of job applications in order to find a new job. For example, you may need to apply to 10 different roles, get to the end of the application and interview process for 7 of those, and then finally to be made 2-3 offers. Having multiple job offers allows you to compare and weigh up the different roles and to make a clear headed choice, as opposed to just taking the first job offered to you. This takes more time and work than people realise, especially when you have to prepare for interviews. I typically schedule an hour a week to search for new roles, with another 2-3 hours for each job application I make. When preparing for interviews, I aim to spend one hour daily preparing. This can quickly add up to 10 hours a week, which is basically all of my free time aside from my family responsibilities.
Before you start looking, you need to identify what it is you are looking for in next role. This will depend on what stage you are at in your career, your past experience and your personal goals. I personally like reviewing my past employers to see what I want and don’t want from employers and roles, and using these to set my job search criteria. Criteria I would consider include:
- What type of role? Senior developer/team/technical lead, etc
- The languages and frameworks I’m interested in working with
- Salary range
- Other benefit: such as pension contributions, private personal/family medical cover
- Location: I will only consider roles that are within a reasonable commute (i.e. 30 minutes or less)
- Flexible/Hybrid working: while I personally enjoy working in the office, the school run means I would only consider jobs with a max of 2-3 days a week in the office
- Things I don’t want: in my case, this means no regular travel outside Belfast
- The company type/sector/size I want to work with
- Larger companies typically have more defined promotion pathways, and may have a technical promotion pathway (smaller businesses and public sector organisations may only allow you to progress to a certain grade in a technical role)
As well as the above, I would consider if I’m looking for a role that is a stepping stone (in that it gives me the skills and experience to reach a longer term goal), or if the next role will be one I’m planning on spending a considerable amount of time in. At this stage of my career, I’m spending a lot of time thinking about career ending mistakes.
When considering your job search criteria, you also need to think about the local job market. My personal opinion is that the market has definitely contracted since the peak in mid-2022, but that there are still a number of opportunities for experienced developers and team/technical leads. There are definitely a lot more opportunities for Java and Python developers in Northern Ireland than for .NET developers. You also need to be aware of longer term trends (like the decline in the use of manual testers, and greater focus on automated testing being done by developers). If you are in a declining part of the job market (as the .NET field appears to be), you really need to think about reskilling.
Where to find jobs
Once you settle on your job criteria, where do you look for a new role? I would suggest that in order of decreasing importance, the main places to look are:
- Your personal professional network: if you can be recommended for a role by an existing employee at a company, this can give your chances of getting through to the end of the interview process a boost (but your chances of being made an offer are still entirely on you).
- Local recruitment sites like:
- Specific employer sites you are interested in. This depends on what your personal criteria are, but if you were interested in public sector roles, you might look at:
- Recruitment companies: I have used recruitment companies in the past with mixed results. The main issue I see is that people look at the recruitment company, instead of considering the recruiter. It is the recruiter you have the relationship with. If you come across a good recruiter (and there are good recruiters out there), they will work with you, respect the criteria you set down, and make your job search a lot easier. A bad recruiter (and there are a lot more bad recruiters) will constantly pester you to consider jobs that completely unsuitable and generally waste your time. They are only interested in making their monthly target and earning their bonus. If you do come across a bad recruiter, you need to get rid of them ASAP.
Apply for jobs
When applying for a job, I use an update to CV, and a custom covering letter written for that specific application. When applying for a role, I record in a spreadsheet the following details:
- The company name
- The job title
- Date I added to the spreadsheet
- Closing date for applications
- The date I applied
- Interview date (if offered)
- Link to job advert
I colour code each application using the traffic light scheme - applications in progress are green, applications being considered/stalled are yellow, and applications that have come to an end are red. This allows me to quickly see what applications I need to complete or follow up on.
In addition, I also save a PDF and text copy of the job advert in a new folder for this specific role. If I am writing a custom covering letter, it will also be saved off here, as well as a completed version of a job application if the organisation uses an online job application form (typically for public sector roles).
Preparing for interviews
I’ve previously written about interviewing and I think that post holds up quite well.
When offered an interview, immediately after adding the interview appointment to my personal calendar, I create a new Markdown document in the job application folder discussed above called ‘Interview Notes’. This document is structured in the following way:
- Role overview
- Duties & Responsibilities
- Essential Criteria
- Desireable Criteria
- Interview Criteria
- Salary & Benefits
- Notes on Organisation
- Useful Links
- Interviews details
The first 6 sections are my abridged version of what is written in the job advert. I then spend a hour or so reading up on the company/organisation I’m applying for, so that I understand what is they do, and how the role I’m applying for fits into that. I pay particular attention to any issues highlighted in the Glassdoor reviews for the company (using Bugmenot.com to get a username and password). This is remind of the job details, and to make sure this is still a company I’m interested in working for, and that I’m willing to put the time and effort into preparing for the interview.
To actually prepare for the interviews, I’ve built up a series of cheat sheets that help me refresh and retain key software enginerring knowledge. The key topics I revise are:
- Web development and APIs (focusing on C# development)
- Agile methodologies
- System design (including requirements gathering and the technical design process, N-tier and Clean Architectures)
- Software Engineering Principles (SOLID, Object oriented design)
- Databases (ACID, BASE, SQL and NoSQL databases)
- Design Patterns (including the GOF design patterns, MVC/MVP/MVVM compared, and the newer cloud design patterns)
- Computer Science (including Big ‘O’ Notation, tree traversal, sorting and searching algorithms)
- Gotchas: this covers specific questions I’ve been asked before and been weak on, like the difference between the stack and the heap, and the Scott Hanselman interview questions.
Depending on the organisation and the role I’m applying for, I may only cover a subset of these (not every interview will require me to brush up on my Computer Science, for example). For each of topic, I read over 1-3 cheat sheets that covers the main points for that topic, and try and spend 30-60 minutes daily on this in the run up to an interview. It is important to note that I’m not learning about these things for the first time; I’m revising them so they are at the top of my head when I go into an interview, allowing me to quickly and coherently answer questions.
As I noted in my post on interviewing, after each interview, I record in my ‘Interview Notes’ document a post mortem on how the interview went. This includes the questions I was asked, and the answers to any questions I asked. I also note how I felt about the interview (and entire job application), and the people interviewing me - my possible future colleagues. Again, it is worth repeating - how the company treats you as an applicant will typically reflect how it will treat you as an employee. I’ve learnt from past mistakes to always trust my gut instinct about an interview.
I hope this helps to give some idea of how to plan and structure your job search. Please use the Contact link above to give me your feedback on this post. And all the best in finding your new job!