This is not a 100% success guide to getting your first software engineer job, but more of a story of my experience and the things I've noticed while trying to get my first software engineering job. It can be used as a guideline for whoever is reading this, but do note that my experience may not be the same as yours. The concepts I go over this blog should be able to be applied to most areas around the world, not only in Japan. TLDR of this blog is that most people won't tell you that luck has a huge role in getting your first coding job.
Japan Stuff And My Background
I'll start off with things related to Japan and my background. As this varies from person to person, and plays a big role on what your experience will be like when job hunting. The important things to have for the Japan market are: speaking/listening, reading/writing, and a 4 year college degree. Having all of these at a high level is ideal, which would open up the most opportunities for you when looking around.
For my case, I had daily conversational speaking/listening skills, almost 0 reading/writing skills, and no 4 year degree (1 year bootcamp graduate though). I was able to land 3 Japanese offers from 3 startups with purely just daily conversational speaking skills. Emails were translated and constructed with good translate. Now you might be thinking that google translate is bad for Japanese, but that's just because most people use it completely wrong. I could write up a whole article on how to use google translate for Japanese, but that's for another time. I think that people can get through Japanese interviews with just daily conversational speaking/listening skills, as software engineers only need to be able to communicate with co-workers to do their job. My definition of conversational level may be different from what other people think, but to me, it's a level where you can hold a conversation for atleast 30 minutes. So just being able to say "the weather is nice today" won't cut it.
So how many offers did I get in Japan when starting out as a jr software engineer? As mentioned earlier, I got 3 offers from 3 startups. These would be in mostly Japanese speaking environments. I have also gotten 2 offers from fairly large companies in Japan through tech recruiters, 1 was a contract offer and the other was a full-time offer. Both would be in English speaking environments. Lastly, I had gotten an intern offer from a decent sized company as well, which was also an English speaking environment.
This might not be in most people's considerations, but there are 3 major types of companies in software engineering. It's really a spectrum of company types, but for job hunting sake, they're categorized into 3 types. Most people are familiar with the " FAANGS ", monopoly like companies that offer a big salary. The other type is large companies , they don't necessarily need to be IPO'd, but have a large amount of full-time employees of maybe minimum 100+. The last type is startups , and these will have anywhere as low as 10+ employees. This blog will focus primarily on large companies and startups, as I don't have experience in even attempting to apply to FAANGS. This was by choice, as i'm not really faangsexual.
Getting Started To Look Around
Now that we have some context of what to have in Japan and the type of companies. Let's look at some important aspects of getting started.
I know it might be difficult, but keep learning while job hunting. Think of new personal projects, or continue working on a side project. Try to make these projects touch on topics that you are focused on applying for. So if you are trying to apply heavily for a backend python position, then try to make a personal project that uses django.
As you would look for answers on how to do stuff in programming, look up how to make your resume look good for software engineer jobs. I personally think it's okay to pad your resume a bit, as long as you have the skills to back it up. Put down 2 years of freelance experience making full stack websites with django, if you have tons of experience making django websites as personal projects. Knowing the framework well enough to navigate and modify stuff is more than enough to start working with it professionally.
Startups vs Large Companies vs FAANG
Apply to all of them. Don't be afraid of rejection. Your first programming job is your first foot in the door. After you've gained atleast 6-12 months of experience, I think that it only gets easier from there on. I will go over some resources in a section below, as looking for startups might be a little difficult for some people.
Tech Recruiters/Company's HR
Tech recruiters are for FAANGs and fairly large companies. Out of the dozens of tech recruiters that I actively worked with, only 1 one them gave me connections with 2 startup clients. So working with only tech recruiters will lock you out of probably like half the job market. Applying to startups-large companies by yourself will most likely land you a connection with that company's HR or with someone similar to that title. Get these people's opinions on your resume, even if you get rejected, and ask them what should be changed.
Degree vs No Degree
The cold hard truth is that having no degree will pretty much limit you down to startups and some large companies only, unless you're a relatively successful open source project creator or something. In Japan, it's pretty much a handful of large companies and only startups that will take no-degree applicants. Probably not surprising, but having a degree will open up all opportunities for you.
I'm a pretty big advocate in not needing a degree, as I don't have one myself, but it doesn't mean that it's an easy path. Going through a CS degree will only give people the opportunity to learn a fast route to a good foundation of programming, but it does not necessarily mean that people automatically have a good foundation in programming by finishing the course. The only difference in not taking a CS degree route is that you don't get spoon fed material for building a good foundation in programming. So on top of building our foundational skills, we need to also be able to gauge what material is worth learning or not.
Applying While Overseas?
With a degree, all types of companies will be able to get a VISA for you. Without a degree, only some large companies will be able to get you a VISA with some special education programs that they will ask you to take. I'm not too sure if FAANGs will be able to get you a VISA, but I've only heard that they have the power to do so. Startups will most likely not be able to get you a VISA.
I would really only recommend applying while overseas if you have a degree. As I have applied while overseas, only to show up and leave empty handed because the startup was not prepared in the VISA process as they have lack of experience doing it.
No one has ever said that getting your first programming job was going to be easy, it requires constant effort from yourself to maintain a positive mindset. There will be dozens and maybe hundreds of rejection, depending on your luck.
In Japan, I used a site called Wantedly for startups, and Linkedin for tech recruiters. There are more sites like tokyodev or japan-dev, but those sites really did not give me much opportunities in my experience as a jr dev. Wantedly not only offers job postings, but also has a meetup section. This meetup section was very useful in connecting with the software engineering startup community pre-pandemic. I would only recommend using this after the current pandemic has blown over a bit. 1 of my startup offers came from a random meetup party at a startup's office, so I can say that it is possible to get job offers via meetups.
When looking for recruiters on LinkedIn, work with multiple. They are really a hit or miss, but I have met some great recruiters in Japan that take their job seriously. Luckily for us, most of them will ghost you quickly if they think they don't have a chance of getting you in the door. Which saves us a lot of time to apply to other places.
Other than that, I would recommend just applying directly to a company's website as well. From my experience, most startups and some large companies will respond.
Luck and Numbers
Ultimately, getting your first job is heavily dependent on luck. Which is why applying to several places will boost your chances on landing that first job. I don't think many people admit to how much luck has played a role in their career, because it would be like saying that they didn't work hard for their position. But you can be lucky and also hard working at the same time.
It's really as simple as someone applying to the job before you because you just happened to be too busy that day to make an application. Both of you might have the same level of experience and resume, but someone else just got to it first. Was it because they worked harder than you? No. It was because they happened to be lucky that you were busy while they weren't.
Keep learning, prepare and modify your resume, go through resources like Wantedly and tech recruiters, and apply to several places at once, as luck is involved in this process. It's okay to get rejected dozens or hundreds of times, all that matters is landing that first programming job to get your foot in the door.