Through every step of acquiring a new job you are telling a story. The story needs to make sense through each of the steps on it's own while still leaving opportunity to learn more through the next steps.
The process that we go through for finding a job is always changing due to both our experience, and evolution of the world around us. Early on in your career you will certainly be taking an active part in finding and submitting for job listings. Recruiters will openly admit that they aren't even hired to fill entry or junior level development positions. This means that you will have to be reading through listings and deciding what positions you are interested in and can possibly interview for.
If you don't check all the boxes it doesn't mean that you can't get the job. Job descriptions are wish lists. The perfect candidate would have everything listed, but the odds of that happening in the budget provided are often quite small.
One highly controversial part of the resume is the "Professional Objective" or "Summary" section that many professionals will put at the top of their resume. Most of the people that I speak with recommend not using this at all. If you are going to use it, then make sure that whatever is contained here is no longer than two sentences, and that it is explicitly relevant to you and what sets you apart from every other resume in that stack.
The next most popular parts of any resume will be "Education" and "Work Experience" sections. How you present these things is entirely dependent upon whether these are things that you believe are most important to YOUR story. If you have a masters degree from Carnegie Melon and have 7+ years experience, maybe with FAANG then make sure that those things are front and center; however, if you graduated from a bootcamp and are looking for your first dev job then there's likely something better that you can highlight before those. In the latter case, it is most advisable that you have several completed projects to show. Full delivery of a product that wasn't laid out for you in a tutorial can demonstrate your ability to do custom development work. Projects that have been completed and improved over time are just chef's kiss. Anything that you can link to for public code repository or actual interactive deployment are going to really help you here, especially if you are trying to do something that is design heavy.
My personal resume is available on my website with a direct short link. It has a list of projects that I've worked on, both personally and in my work. This gives me the opportunity to list the languages, tools, and tech that I've used in several places and will improve chances of getting an interview. Up until having ten years of applicable work experience it can also be beneficial to list a summary of the years that you worked in unrelated positions. This demonstrates that you have skill pertaining to working on a team and getting things done and likely many other things relevant to dev work. I keep a "Skills" section on my resume that allows me to list languages, frameworks, tools, and technology that I've worked with and assists with getting through that scanning software.
Length is an oft discussed part of your resume. Many people will tell you that it should be no longer than one page if you have less than ten years experience. I don't think that this must be such a hard and fast rule, but it is worth noting that each page of your resume has less chance of being read than the page before it. I have seen one particular resume (from an agile coach) that had more than 5 pages and all of them relevant. In this scenario, you want to make sure that the most relevant things to getting you hired are closest to the top on the first page. Anything further down/back is only relevant if someone has determined that they are interested enough to continue reading about your story. That one particularly long resume that I previously mentioned had charts and graphs of delivery efficiency of teams that he'd worked with, so it was good information for anyone that was seriously interested.
The last bit of importance in the story telling of your resume is that it MUST leave out enough information that you can talk further about any of the topics during the interview. Think of it like a book summary. It should hook someone in and make them want to ask questions.
Applying to jobs is a part of this process that will vary the most over the course of your career. When you are looking for your first development job then you will work the hardest. After you get 3 or 5 years experience it will become easier. Once you are approaching 8 years experience, you will likely not even need to look for a job as recruiters will be reaching out to you. My most recent time in the market lasted 2 weeks while I interviewed from home for a remote position, and the only thing that I did was mark myself as available for contact on LinkedIn. So, it does get much easier as you get experience.
It's important to remember when you are applying to a job that the interview goes to the most interesting people in the group of submissions. It doesn't go to anyone that is remotely qualified. Not being interviewed for a position could mean a number of things, but the only one that you know for certain is that there were people in that stack of resumes that were more interesting to that hiring manager than you. You never know if there may have been a perfect candidate submit that the hiring person would have never expected. I know that I've spoken to a hiring manager on a couple of occasions and they received candidates with the PERFECT work experience and it completely skewed who was interviewed and ultimately hired. It's a numbers game. You have to put your resume in enough stacks that it's eventually the best one in the stack.
Most likely you aren't applying to enough jobs. You don't need to know everything in the job description. The hiring manager is likely just wishing for all of those things. It's also quite possible that for some companies that they have generic/old job descriptions that aren't entirely relevant to the open job. Don't take yourself out of the running for a position by not submitting. That's the hiring person's job. They can tell you if you don't meet their expectations.
Wherever you are applying, if there is an easy/one-click apply then you should just know that this posting will get a huge number of applications, and that your odds of getting an interview from any such listing is less simply due to the number of applicants. In order to make it faster for you to apply to jobs, it's extremely helpful for you to create a text file for copy and pasting whatever fields that you are likely to find. If you come across a new field then add it to your text file in order to make it easier to access in the future. Ideally, you should get the application process for any listing down to 5 minutes or less. Due to the sheer absurdity of many application processes this means that you will likely need to submit your resume and all of the fields it contained in a web form. Having all of the information needed in the form available for copy and paste (neatly formatted for text only) can greatly reduce the amount of time needed to apply.
When you are applying to so many positions, it's a good idea to track the listings/companies that you've applied to. The best system that I've seen anyone implement for this included downloading the job description in a way that it's easily found when talking to the recruiter or hiring manager. It's also beneficial to track the date when found, submitted, most recent contact date, contact person, and what step in the process has been completed when.
The interview process is going to be greatly different from place to place. If you are wanting to learn as much as possible then you may want to look into Cracking the Coding Interview by Gayle Laakmann McDowell. There are some companies that will want you to interview for a full day, and others that will want you to do a half dozen interviews. These multipart interviews will involve general technical knowledge, culture fit, peer interaction, and likely some type of problem solving puzzle. The two parts of an interview that people have the most issue with are behavioral questions and problem solving questions.
My article How to Nail Your First Full Time Job Interview takes a deeper dive into the types of questions that you can expect in an interview and possible approach.
Before negotiating a position you really do need to understand the salary range for the position that you are looking at within the area that you are working. Glass Door can help you to see where the salaries for that company fall within the ranges for whatever positions that are listed. Then you can get a good estimate of what you'd expect the pay range to be from that company for that position.
You also need to have a realistic understanding of your worth in the field. There's a lot of imposter syndrome out there and this leads many people to be severely underpaid. On the other hand, it's important to understand that if this is your first job in the field then the employer is taking a big risk in hiring you and will likely be expecting to provide minimal salary for that risk.
Your first dev job will not be your dream job. It probably won't be with FAANG. It'll probably be working with some really old tech doing something that nobody else wants to do. Keep in mind that the companies that take the most risk in hiring are ones with the smallest budgets. Internships are typically a really great way for companies to get to know you and understand who they would be hiring before they hire them. If you don't have an interview, the odds are much more likely that you'll be working for a company with multiple red flags. After you start accumulating experience, you can be more choosy about your employer and avoiding red flags.
After you get your first job, learn everything that you can. Become as fluent as you can with the languages that you use. Learn the frameworks beyond just how to complete your task. Pay attention to the tools that your teams are using. In your first job, you need to absorb as much information as you can. At the same time, don't be afraid to ask for help after you've been stuck on a task for more than an hour.
It's important to know that promotions are often awarded to recognize the level of work that you are already doing. If you are a Programmer Analyst 1 then after you ensure that you are successfully fulfilling all of those responsibilities, then take a look at the Programmer Analyst 2 description and strive to function at that level. When it comes time to ask about a promotion, it's a lot easier for your supervisor to justify paying you more when you are already providing that value. There's no question of whether you would be able to handle that responsibility.
The next thing that I like to suggest is to always be considering what you want your next two positions to be. This can change greatly over time, but at any given moment it can help you to understand whether something would be beneficial to your next steps or not. Look around at the roles around you and see what the responsibilities are. What of these interests you? Long term career direction isn't something that usually comes up in the day to day, but can really help with those feelings of not knowing what you are doing with your life. Keeping a set of updated goals can help you to have something to strive for. You never know when you might have the opportunity to work with something new in your current role, and if you've had the open conversation with your supervisor about what you would like to do then it's more likely that they would offer to let you work on that project that aligns with your future goals.
There are two vastly different schools of thought on professional networking. On one end you have people that are looking to make contact with as many people as possible in hopes that someone will be able to help them. On the other end you have people that want to have a small network of people that they know very well. I don't believe that either is entirely wrong. Ultimately networking is just forming of relationships in your chosen profession. The people that tend toward more connections are likely to identify someone that can help them with their goals. The person that has fewer, but stronger connections is much more likely to be thought of when one of those people hears about a position that might fit them.
When it comes to networking online, you will most likely find yourself utilizing LinkedIn, and if you aren't sure about how to make your LinkedIn profile appealing then there is a free course on YouTube by Danny Thompson that will help. I personally try to look at LinkedIn daily. When I meet someone and want to stay in touch with them then I go and send them a connection request right then. It's important to maintain your network throughout your career and not just when you are looking for a job.
If you can find an in person meetup group in your area that is usually the best means of networking, and you can be learning things at the same time. If not then you can always find groups online. There are virtual meetups as well as discord and slack communities that can be really helpful in your learning and networking.