Given how much time we spend at our jobs, it's a good idea to be intentional about where you work and what you're working on. As someone in the tech industry, you can usually take a passive approach and wait until a recruiter messages you about an interesting position, or you can be proactive and apply for positions that you think would fit you best. While I have nothing against going the route of working with a recruiter (I've done it myself), I'd argue that it's in your best interest to take a more active approach to finding your next job.
I was recently in the hunt for a new job and some advice I would use next time I find myself in that position.
Preparing before you start looking
For software engineering jobs, you're more likely than not going to have to answer questions related to algorithms and data structures.
It's better to start preparing for this before you actually apply. I would start brushing up on these skills about 1-2 months before applying, although this can very much depend on your experience and what jobs you'll be applying to. If you're planning to apply to one of the FAANG companies or similar, or if you're not familiar with these concepts, you might need even more time.
Some companies won't ask these types of questions in their interviews, but I think it's helpful to have a foundation of this knowledge as a software engineer. If you don't have enough time to prepare before applying, that's fine too, just try to get a little bit of practice in most days. I've used services like HackerRank, Leetcode, and InterviewBit in the past. Some recommend the Cracking the Coding Interview book. There are also online courses that can help such as The Coding Interview Bootcamp on Udemy. Just make sure you pick a programming language to answer your questions with (JS or Python would work), and get comfortable answering these type of questions so that it feels natural to you.
Outside of algo/DS questions, there are quite a few different types of questions companies can ask you about. Be prepared to answer some of the more common ones such as why you're leaving your current company, what you want in your next role, and why you want to join the company you're applying to. You'll also want to think about your answers to some of the behavioral / STAR interview questions. Be prepared to talk about your past projects, how those went, and why you and/or your team made some of the technical decisions you made.
There are lots of resources out there to learn this information and prepare for technical interviews, so I won't go into more detail here. I'd recommend checking out this article for more info.
Staggered applying
The next tactic is to take a staggered approach when applying. Compile a list of companies you want to work for, prioritize that list, and then put them into a few different groups. Apply to all the companies in your first group at the same time, and then give it a bit of time to see if your hear back. After you've waited some time, apply to the next group, and so on.
For example, I have 20 companies I want to work for, and split them into 4 groups. I'll apply to the top 5 companies first, wait 2 weeks, and then apply to the next 5.
Interviews can be pretty demanding on you and your schedule, so I think this helps space out the different interview steps making sure you focus on your top companies first. It also takes some of the sting out of being rejected when you know you're in the process with other companies as well.
Thinking through what companies you want to work for is an important exercise, too. There are a lot of different factors that can go into that consideration such a remote-friendliness, work/life balance, industry, salary, culture, etc. Figuring out what you value the most will help you find the best match and will make sure you're not just focusing on one factor when making the decision to take a new job. Use sites like Glassdoor and Key Values to learn more about a company, or talk to someone who works there if you can.
Conclusion
There's a lot you can do to optimize your chances of finding a job that fits you. I think it's worth taking the time to evaluate your options so that you're not just jumping ship because another company is offering $X more. Where you work now can have a big impact on your career in the long run so it's important to be deliberate about these decisions. Think through what's important to you in a job, do your research, and come up with a plan.