Cover photo by https://unsplash.com/@manucosen
Edit (Aug. 5th, 2021): I wrote some new articles about how I learned Japanese and my language learning app Kichi. You can read about how I learned Japanese here.
Programming in Japan
Table of Contents
- Intro
- Qualifications
- Starting My Career Here
- Working Conditions
- Employment Overall
- The Really Good Parts!
- Japanese Attitudes Towards People Who Are Not Japanese
- Overtime
- Interviews and Perception of Programmers
- Conclusion
Intro
This is a massive, nearly 30-minute read. If you're just interested in salary, click the indexed link above. I promise the whole thing is a great read, though.
This last year working in Japan has been a wild one. I wanted to take the time to offer the perspective of someone who's working successfully in Japan as a software engineer in mostly-or-entirely Japanese companies. Also, I want to give a perspective that hopefully offers some contrast against the mountain of horribly misinformed comments I see regurgitated on social media (looking directly at you, Reddit).
I'm writing the article that I wish I had going into all this - how hard is it to get that first programming job? What do I need to do to make it happen? How do I become a freelancer, and why would I do that? How much - exactly - does one make?
To that end, I have year-by-year breakdowns of my salary, a brief background of my pre-engineering start here, and much more.
A few things before we get started: I have mostly self-taught Japanese. I am fluent in Japanese and have native English. I am a very confident person. I am comfortable negotiating and saying no. I have never worked for a non-Japanese company in a career capacity. All of the companies that I've worked for were overwhelmingly Japanese in both nationality and language.
I'll do my best to list the upsides and downsides of my own experiences, but as always every situation is different. Now that we're prepared for the wave of "but your experience is not normal because X" comments, let's do this!
Also, this post will contain no Japanese. While I can understand the choice to sprinkle Japanese into a post about Japan, I think it would make this post harder to understand without adding anything of value.
Qualifications
As of this article, I have about 4 years of experience as a programmer - mainly back end. Experience matters, of course, but what you do when you're gaining that experience matters more.
I did not learn to program in school or boot camp. I learned to program by reading books on the fundamentals (what is an int, stack vs. heap, etc.) and then just doing a lot of things.
As I mentioned above, I'm very comfortable with Japanese.
Starting My Career Here
I came over as a Human Biology grad with no programming experience and pretty good Japanese (JLPT ~N3 for those who know the test). I could read some utility bills, some letters, and documents, and get by just fine with no English.
I came over as an English teacher. I decided I wanted to be a games programmer, bought a physical copy of programming for dummies, and read on the 40-minute trains between my house and whatever school I was teaching at while I was situated up in Sendai (north-east Japan).
I was worried about telling people that I was an English teacher when I changed into programming. I was concerned that they wouldn't take me seriously, or that it would somehow diminish my credibility. There is a perception with some truth to it that many people come to teach English here because it's an easy, paid way to experience Japan.
I was wrong. If anything, it deepened my peer's respect for me because I was learning something outside of my field, and there's a pretty healthy respect for teachers here anyway.
I studied Japanese and programming intensely for about two years. I got my N1, released a game, and then applied for a programming job. In retrospect, I should have done things pretty differently.
I put way, way too much value on the N1. For those who don't know, JLPT is a test of your Japanese ability. Like all tests, it can be gamed, and it can be very flawed. I thought that I would need the N1 (highest level) to be viable in the Japanese workforce. The level before that, the N2, was straightforward and didn't require much study apart from grammar. The N1 was just all study. So much boring, grindy study.
Day of the test, I fell asleep in the listening and woke up 10 questions later with someone talking about selling lemon-flavored baked goods. I went with the tried-and-true method of choosing all "C" for the questions I missed.
I passed by four points.
Then I got into the workforce and used almost none of what I learned after the N2. I should have just focused more on programming from there.
Also, entering the workforce months sooner would have been wise. I released a small, fairly well-polished game and then started studying Ruby for a few months. My Ruby study had very little to do with me getting hired. I could have gotten hired right after my release.
If I can do it, you can too. Just put the work in.
Edit (Aug. 5th, 20201): Check here for more about language learning.
Working Conditions
Hours
Just like in America, the conditions are as varied as the jobs. Japan can offer jobs that follow 10-7 work hours with an hour lunch - I would consider this the normal schedule in the tech scene. You can certainly find 9-6 jobs, jobs with flex time and core working hours, etc. Meritocracies are rare but exist - often (but not always!) when a contract stipulates that you can work whatever hours you want, it's used to have you work horrific amounts of overtime. I have worked in places where they were willing to change my contract to a meritocratic one. They exist, and the system can be excellent - work hard, go home early.
Paid Leave
Like pretty much every first-world country except the states, Japan has mandatory holidays. 10 days a year, minimum, with a bunch of public holidays. It is true that many companies in Japan make you feel bad for taking paid time off, but from what I've directly experienced this is often less about a boss giving you flak and more about not wanting to abandon your team - a sentiment I've seen echoed in other countries as well. This seems to be less common in the tech scene - competition here is so fierce that you really can't risk losing programmers to that kind of thing, and the government cracks down very hard on stopping people from taking days off. On a personal note, I have never had an issue with it.
Contracts And Rules
Contracts are really, really short. Usually a single page, and very loose.
You have a few kinds of contracts. I'm not going to get into the details here, but basically, you either have contracts that renew and ones that are just permanent. Make sure you understand exactly what is in your contract - it's usually just boilerplate. Side note - check if they pay your taxes from your check or if you're expected to set aside money to pay them yourself. The tax issue is a bit complicated, so just ask.
Similarly, all companies are required to have rules of operation for their employees. If you are unclear on anything, ask to see the rule of operation governing it.
Working in Games
I do not recommend working in games. The entire state of working in games is a sham globally - low pay, bad conditions, churn - but I can only comment on my experience in Japan.
Working in games in Japan is probably pretty similar to working in games in America. The pay is usually lower than in other fields. You can easily expect something south of 300k JPY / 3k USD a month. Not bad if you're totally inexperienced, but the raises and the salary cap are terrible. Ironically, if you want to draw a really good salary in this field, become specialized in either infrastructure or backend systems, then enter the field - you'll easily make double. Again, just my observations.
I worked for a games company in Osaka called Aiming. I wasn't a fan of most of the management, but the people were gold. We had a game area in the company where people gamed during lunch. Fridays, we'd bring alcohol and snacks, drink, go drink somewhere else, come back and drink, etc. - there were, of course, plenty that didn't drink and it was always a great time.
I also interviewed at a few different game companies. One, let's call them Schmooby-Loft, had a particularly interesting interview process. At one point a gentleman from HR made it clear to me that I was technically entitled to take my time off when I pleased under Japanese law. He also made it very, explicitly, painfully clear that it would also almost certainly "be reflected" on my performance review and salary adjustments if I chose to take time off during busy periods.
Not that it's taking time off during busy periods should be encouraged. But they made a show of conveying that in the most intimidating way they could.
I turned down their flattering offer of "my current salary at the time but with more overtime."
Company Rigidity and Change
Japanese companies are famously bureaucratic. However, you can make a massive difference at your company if you chose the right one.
I've changed my pay, my working hours, my team, and my job tasks just by having conversations. Much like anywhere else, it depends on the people you work with and your ability to be persuasive - in this case, in a language that you may not have grown up with.
My approach is always the same - find out who to talk to, and tell them what I need. Managers are usually more than willing to accommodate you if you ask - often the problem is them not knowing what you need.
Employment Overall
I Was "Let Go" Once
I've been let go from one job. I'm gonna be honest - I technically chose to leave, but it was a dark situation to be in.
When I was working at a pretty famous (in Japan) programming company, I had a medical issue. I won't get into the specifics, but the company that I was working for initially seemed supportive. I got medical leave, was put on government-paid benefits while we worked things out, etc.
Unfortunately, after it became clear that I wouldn't be able to return to work for a while, my company decided to let me go. That's not the part that upsets me - I understand their position, I was still eligible for medical assistance, etc.
The part that upsets me is that they asked to talk directly to my doctor to confirm my situation despite my showing them appropriate medical documentation including a certified letter from my doctor. After my doctor said (rightfully so) that that was insane and illegal, they reduced my pay citing work performance - while I was on medical leave. If I returned to work before my medical situation was resolved, and had to take leave again, my new medical leave benefits would have been at the reduced rate.
They then asked me to leave. I did.
I want to make it clear - there's a lot of nuance to this situation and this short description doesn't do it justice, but it does segue nicely into:
Excellent Job Security, But Not Guaranteed
In Japan, it's almost impossible to fire someone. Company restructuring, a flagrant violation of valid company policy, or gross incompetence. That's about it.
In reality, one of the following will happen - and I have seen some happen to people I know- in lieu of being fired.
1) You will be pressured into leaving. This takes the form of management putting stress on you in any way they can until you quit. If this happens, leave. Not because you're wrong - because you're in demand and there are dozens of companies lined up to hire you, so why work for shitty people that do this?
For clarity - I have had an acquaintance of mine in HR talk casually to me about how they were actively doing this to someone. It is very, very real.
2) Restructured. Not a lot to be said about this - if they downsize, which is pretty hard to do here, you can get downsized too. Not very common in tech, and you get paid unemployment anyway.
3) Assigned meaningless jobs. I've never seen this happen in tech, but I'm aware of it in other fields. Boredom until you leave.
4) Contract not renewed - this one's kind of interesting. Your contract isn't renewed citing some reason. If you think it's bogus, you can fight for damages. That's about it, the rest depends on your circumstances.
Bad Bosses, Harassment, Options
In America, I think it would be safe to say that a lot - the majority, even - of the workforce has worked for a boss that they did not think was a good boss. Some have even unfortunately - in one form or another - experienced harassment. In this regard, Japan is no different.
I have worked under several kinds of bosses, in several kinds of companies. I have worked for people who are hands-off, micromanagers, powerful leaders, and people that I believe have no business being in an office, much less leading. I have worked for bosses that inspire me to be a better person, and bosses that inspire me to stay home.
I want to talk about something more specific here, something that I've experienced once to a pretty serious degree - harassment.
Japanese law defines a lot of different kinds of harassment. Power harassment, mental harassment, sexual harassment, etc., but the takeaway is this - there are a lot of ways to harass someone, and the government comes down on them all very seriously. A company can get into serious trouble for inadequately investigating a single claim of harassment.
I don't know how my experience would be different if I were a native Japanese person or not a man. All I can offer is what I've learned from my own experiences.
If your boss does something you think is harassing, for example:
- talks to you differently than they do to your peers, but in a negative way
- assigns you impossible or disproportionate workloads
- sets specific rules that only apply to you
- ever is physical with you in any way that you find uncomfortable
- undermines you in front of your peers
- excludes you from social events
Bring it up to your CEO or HR, whichever you feel more of a connection to. You have a ton of power and resources here, and the government takes these claims extremely seriously.
In my own experiences, I have had two things that I can describe as harassment. One was a drunk boss - who I was very casual and good friends with - smack the back of my head in a disciplinary fashion in a bar. He came to his senses in a few seconds and apologized profusely. I don't think it's an accurate reflection of his character and chose to let it go.
The second one was much longer, and concerned a manager who went from not liking me to outright hostility. I did what anyone in that situation should do - I documented it extensively and talked to the CEO one-on-one. The CEO was an outstanding person, got directly involved, and did his best to reel the manager in. Unfortunately, it didn't work well, and I chose to leave the company. The CEO said that the situation was unacceptable and apologized to me personally for the situation. Again, the circumstances are way more complicated than a short paragraph can do justice.
I consider my experience with this type of harassment to be both unusual and well handled. The CEO was willing to pursue the matter further but I chose to leave because it wasn't worth it to me. There are way too many job opportunities and great companies to have to work with terrible people like that manager. Life's too short.
The Really Good Parts!
We just covered a lot of negative things - and we're going to cover more - but I want to switch it up.
I think exceptional cases make for better reading. I think that negative press gets more attention. But overall my time in the tech sector in Japan (and Japan overall) has been good. Aggressive pay raises on job change, a ton of job security, energized teams, and fun people. Like anywhere, the company culture defines how much you're going to like your job, but I've worked with people and at places that I had a blast almost every day at work.
Working in tech was the first time in my life that work just didn't feel like work. Most days, I don't even think about it - I just go to a different building and keep having fun. The only time that changed was when the workplace got unhealthy - see the above sections.
It's common to go out drinking/eating at least occasionally with your coworkers. You don't have to drink if you don't want to - many people don't. Some have one drink and are completely smashed. Some will drink you under the table. You can go for a quick bite at a host of restaurants - obviously Japanese, but Italian, French, Burgers, Thai, etc. are all available. You can, contrary to popular belief, have house parties. I've done escape rooms with my coworkers, been invited to theme parks, and been asked to come rock climbing.
A misconception that I feel compelled to address: I have never, ever been excluded because I wasn't Japanese, or invited as a "token foreigner". If you ever get that feeling, you should work with different people because those are just shitty human beings.
My coworkers have, at times, been very enthusiastic to practice their English. You will find that many programmers can read English pretty well. That being said, if you have native or fluent English, you will have a huge advantage in the field because you can read Stack Overflow and error messages with high comprehension. I'm not even kidding - Japanese Stack Overflow is hot garbage, and this will be like a superpower for you assuming you can translate that knowledge back into Japanese if someone asks you the reasoning behind your code.
The company that I'm currently freelancing for has a policy that you should leave when you're done. I have seen people come in at 10 am and leave at 3 pm, after taking an hour-something lunch. There is no stigma, no penalty - just do your job and have fun, and go home when you're done for the day.
I have never had someone criticize me, to my recollection, for taking longer than an hour at lunch. I have been out for two hours at a time, with no issue.
I regularly take 30-minute breaks to think, stretch my legs, etc., and except for a particularly difficult person, have not had an issue, ever.
A serious weakness of mine is that for a large part of my tech career I was chronically tardy. Now I work for companies with no set schedule and remote work (and, ironically, get up at ~7:30 am every day) - but I have never had that be a serious issue for me. Like most things, negotiate it early and be honest. Monolithic companies tend to be less forgiving on this front, however.
Japanese Attitudes Towards People Who Are Not Japanese
Disclaimer: this is a gray area that I have pretty strong feelings about. This is the most opinionated part of this article, and I totally understand if you don't agree with what I'm about to say. It certainly isn't essential reading and is more of a rebuttal to something I see endlessly regurgitated online. If that doesn't interest you, just hop on over to the Overtime section that follows.
I often hear other non-Japanese people say "You will always just be seen as a foreigner". No matter how good your Japanese is or what you know about the culture, no one will make deep friendships with you or you will always be acknowledged as different. I find that often, but not always, this sentiment comes from people who don't have very good Japanese. I want to make something clear.
If you have non-conversational Japanese, that could likely be the case. If we're talking about the government's infamous perspective that people born and raised in Japan aren't Japanese unless a parent was, that is correct (and tremendously shitty for those people at times). If you mean that every time you go to a store, people will assume you don't speak Japanese until proven otherwise / you'll get the English menu because they assume you need one to have a pleasant experience / people will try to practice their English on you as soon as you meet - I am in 100% agreement.
But if you mean that no matter how good you are at Japanese and what kind of people you hang out with, that you'll always be seen as "the foreigner", the issue is more nuanced than that.
I can't speak to other people's experiences, but I live a lot of my personal and work life using Japanese. I learned in Osaka, so I speak like a person from that area, and I can tell you with absolute certainty that people have straight-up forgotten that I wasn't Japanese and I don't look even remotely Japanese. Not even a little.
I've had more than one friend be surprised when we went out and they handed me the English menu, and when I told them it's because I don't look Japanese they laughed and said they forgot.
My friend was asked by a coworker if he was going to vote in Japan's elections. When he said he couldn't, they asked why. He had to remind them that he isn't a Japanese national. He doesn't look "traditionally Japanese", but they assumed he at least had voting rights.
Essentially, if you find yourself in a situation where you feel like you'll never be accepted on the same level because your skin or culture is different, that depends on how you mean it. If you mean that people will assume you aren't from around there at first impression, then of course - we assume a lot about people from the way they look or act.
But if you mean that Japanese people you've gotten to know won't accept you for one of their own, that has not been the case in my experience.
Overtime
Oh boy, the big one.
I've seen it all over the spectrum. I work, on average, about three or four hours of overtime. Per year.
I also personally had someone that called me - in distress - because their company had them working weekends and going home on the last train, every day. This company is known for being particularly abusive during the busy times of the year, and that's certainly not a rare story.
I'm about to follow this with what I think is going to easily be the most controversial, polarizing part of this whole article.
If you work in Osaka or Tokyo, in tech, and you regularly have overtime that makes you unhappy, that is most likely your fault. Hear me out.
Every contract that I've seen in Japan includes a certain amount of "prepaid overtime." This means that every month, for the first x hours of overtime, you don't make anything extra. There are exceptions - significant weekend work, work past 10 pm, etc. can either get you paid more or get you a different day off in lieu. From what I'm aware, even this is a step up from some countries - like the states - where you don't make anything extra at all if you're a salaried worker above a certain pay bracket.
However, if your employer is using this clause to regularly have you work overtime, leave. Japan has an extremely well-developed public transport system, remote opportunities, and a shortage of tech jobs that can land you five interviews per day. I'm not exaggerating - per day. There is no fear of visa renewal for tech companies - it involves them printing off a few pieces of paper about company information, stamping something, and then waiting a few weeks. Many are even willing to sponsor outright. You'll find that there are plenty of companies that will strongly encourage you to leave either on time or early.
I have found that the best way to deal with it is to be really, really upfront. Ask your interviewer what their day is like - what time do they usually come in, what time do they usually leave. If their answer isn't something along the lines of an enthusiastic "I love to leave on time to pursue my hobby of crab-shell collecting", make it very clear that you leave on time as a matter of principle. Actually, make it clear that you leave on time regardless. If that was a dealbreaker, no problem. Go to your other four interviews for that day with places that look cool to work for.
It's a problem in the country - one that's gotten much better in recent years, but a problem just like anywhere else. The difference is, in tech you can leverage enormous demand for your skills to make sure it isn't your problem.
Interviews and Perception of Programmers
Attitudes Towards Programmers
When I tell people that I'm a system engineer ("SE" as it's called here), I usually get the same sort of reaction I imagine programmers get elsewhere. People who have been in the game might talk shop a bit, people who don't get what you do will treat it with reactions ranging from "you must be smart" to a glazed look and a polite nod.
From a corporate perspective, attitudes towards programmers tend to take one of two perspectives. Either programming is like a blue-collar job where you throw people into the code factory for their 10-hour shift, or programmers are a very expensive type of wizard that needs to be enticed with money and benefits to work their magic. Games and sales seemed to think the first, engineering firms and tech-driven products the second.
Interviews, Competition, Company Size
Disclosure - I love interviews. Even when I don't know the answer to a question, I get to learn a ton about something I've never experienced. Plus, if you do know the answer, you're getting paid to be a show-off (assuming you get the job), so revel in one of the few times in your life where that will be socially acceptable.
You will often hear that "You need to work in one place your whole life in Japan." That system has been falling out of use for 30 years but I see it everywhere. Workers have been made replaceable, seen by an increase in contract work. The shift was so intense that it forced the government to make an initiative that if you renew someone's contract for five years, you need to make them a permanent employee. Yes, there are still many companies you can work at for life. You can also change jobs once a year and be fine.
There is very, very little competition because the lack of skilled talent is enormous. If you're just starting out, you'll have an advantage if you have robust projects and fluent English, but if you have actual good domain knowledge in your area? No shortage of jobs. You can get a job here starting at 400k (~4k USD) a month if you put the work in and speak Japanese. If you already have experience and have the chops to demonstrate that, you can pull down significantly more.
I don't have any kind of interview prep advice because I'm sure the way you prep will matter more on your personality than anything else, but when you're in the interview, there are a few things you absolutely should do.
Be honest. Don't mind overtime? Say that. Hate it? Say that too. Salary important for you? Negotiate. People say Japanese people don't negotiate. I can tell you with absolute confidence from being on the hiring side and working with the decision-makers, as well as being the interviewee - when HR gives you an offer, that is not their best offer.
I have negotiated higher salaries, starting bonuses, more vacation days, and different working hours. You can do this - just do it in your style. Don't be afraid to ask over email, compare offers, etc.
Avoid big titan companies (Rakuten, Line) unless salary and reputation beat everything for you because you don't get to negotiate things like flexible job hours and perks. Medium corporations offer a nice balance of salary and perks, startups are often all perks and you have a good chance to negotiate extra things.
In general, if you want something or won't do something, bring that up. For example, I make it very clear in all my interviews that I am a backend specialist, and I don't know frontend - I have basic familiarity with it, I can reason my way around the concepts, but if you asked me to write a webpage the company would grind to a halt.
Most companies do either basic code reviews (fizzbuzz) or some online code test. The online code tests are usually like "Array in an array, print as a grid" type of thing. True story - I was doing a timed code test, screwed up a comma in the output, and didn't have time to fix it before submitting. I submitted it and sent a follow-up email explaining the quick change I would make to have it pass.
At an interview later that week one person said they saw it and had no issue, the other said they didn't even check the test results because they already decided to hire me.
I had a cool interview that was a general whiteboard interview where they asked me to build an architecture for an API. The API was to count fan votes that were cast for their favorite member of a music group during a live broadcast of said group. The catch was that you could only cast a vote if you had a unique code from a cd that you had purchased. That was a blast.
The hardest code review I ever got was at an English-speaking company, I loved it but I didn't know a good amount of the front-end questions.
Line (Chat app and game company) wanted me to take a test to even be able to email their recruiter.
My experiences with Rakuten have been weird - they invited me to a hiring party for mobile app developers, so I went because of free food. It was a fun party but I had two years of experience and none of it was in mobile apps. They wanted three years of app development experience. Weird situation.
Lastly, on the time it takes for closing an offer. I find that the typical turnaround from the first message to offer is about two weeks. Some places are a bit longer, some are a single interview, but that's usually the case. You can expect a casual first interview, at least one follow-up, and then a final offer. It is not uncommon at all to meet the CEO for the final interview - it's often merely a formality, but they frequently sign off on every hire.
Working with Recruiters
I have had the pleasure of working with a handful of good recruiters - just all-around excellent people. I became friends with two of them - one Japanese and one Swedish. I have also had recruiters message me on LinkedIn that have actually read my profile/website.
That being said - much as in America, the vast majority of recruiters are hot trash at their job. Ghosting, mass spam messages, unsolicited friend requests to avoid paying LinkedIn mail fees. It's no better on Japanese platforms, either - mountains of spam that was so bad that I had a template letter (much as I do on LinkedIn) which says "Read my profile, I have x terms". This is often met with silence (LinkedIn) or an apology and an offer to keep in contact if those terms can be met (Japanese platforms).
I have also worked with excellent job sites that I used to find jobs that met my terms. They do exist - just make sure that the site isn't recruiter-oriented. Smaller sites tend to be better, especially ones that follow the format of "Employer posts a job, you can click to show interest."
For people seriously looking for jobs in Japan -
Bizreach is full of spam. Avoid.
Wantedly is usually for companies that have a ton of passion and criminally low salaries that take advantage of new grads. I directly saw this happen. You can find good things there, just be careful.
Gaijinpot programmer jobs seem to have horrible conditions, but I imagine that's because they cater to an audience that might not be expected to have a lot of Japanese skill.
Freelancing
Freelancing is actually surprisingly straightforward. I don't know if you can start as a freelancer without an already existing visa, but you just go to a freelancing company (you 100% need Japanese for this) and tell them you want to freelance. They do the rest of the work helping you find companies and arranging interviews.
Finding work as a freelancer is fast, too. Most companies wanted me to start working as soon as I could.
The primary advantage that I found in freelancing is you can work non-5-day weeks easily and because you don't get paid days off and included insurance you can get a higher salary relatively easily. Lots of freelance jobs have remote work as well.
I work three to four days a week right now, and I love it. I worked a week in the Philippines and have long weekends every weekend.
Jobs That You Can Do Without Japanese
Easing back into meatier topics, there are a few kinds of jobs that you can do without speaking Japanese in Japan, and it comes down to one basic thing - companies that have strong international ties.
This typically means a few choices. If you want a huge salary you should work at a bank, a Japanese branch of a global company, or any similar company owned by foreign interests. If you're interested in passion over money, there are English-only startups that sponsor visas- they are few and far between, but they exist. If you want something in the middle, Fintech is a good middle balance - decent salary, good passion.
All of the above require you to be good at what you do - if you don't have sufficient experience, it's very unlikely that you'd be hired over an inexperienced-but-English-proficient local.
Money, Visa, Location
Salary and Cost Of Living
I want to get a frame of reference before we start talking about salary - and we will, in very concrete detail, with numbers. There is an opinion that in general, Japan pays programmers poorly and Tokyo is crazy-expensive.
We need to tackle these things one by one, and I'm going to start with the "Tokyo is crazy-expensive" one first.
You can live in a great apartment for very cheap (well less than 100k yen/$1k per month) if you're willing to commute an hour or more on trains. I mean like shiny, attractive apartments with a ton of space. Houses with parking spaces. You can also pay easily more than that for a single room about 10 minutes from Shibuya (a main hub of Tokyo).
Japanese apartments are undeniably smaller than their western counterparts. Tokyo is no exception, and neither was Osaka. That being said, in Osaka I lived in a one-bedroom, living room, dining/kitchen for 60k (~$600)/month. In the greater Tokyo area, I've lived an hour from work in a two-bedroom, dining-kitchen with a living room for about 90k (~$900) and a one-bedroom dining-kitchen with a living room in a more expensive, nicer area of Tokyo for 120k (~$1,200).
Right now, I live in an apartment that was built the month before I moved in. It's 30 minutes from Shibuya (4-minute walk to my station). 10 minutes to a different close-by main station. One bedroom, separate sunlit study, combo living-dining room, and a bar-kitchen that runs 155k (~$1,550)/month. From what I've gathered that is insanely cheap compared to NYC or the Bay Area. That being said, those are still big numbers depending on your fiscal status.
I move next month (working remote means I can live farther now for cheaper) to a slightly bigger place with the same layout and parking for about half the cost.
As far as where to live - Osaka for the people and culture, Tokyo for the pay and job opportunities. I was very happy in Osaka, but I hit a pay ceiling after my first job. Tokyo has a massive amount of work and good pay to boot.
Now, salary and how Japan pays programmers.
I'm going to list all of my jobs and the salary that I made. This doesn't include personal jobs, my side business, etc.
Starting - Games. Osaka. 280k(~$2.8k)/mo. In Osaka as a single male, this was enough to have an okay standard of living.
Next year - Outsourcing Shop. Yokohama (near Tokyo) - 400k (~$4k)/mo. This was pretty comfortable, but not great.
Next year - Engineer at a sales and recruiting place. Tokyo. 708k (~$7k)/mo, with 300k (~$3k) signing bonus to cover moving costs. A comfortable lifestyle.
Now - Freelancer. My current rate depends on the job, but I charge about 750k (~$7.5k)/mo, some jobs could cost more, rarely less. Comfortable lifestyle. Note that this is technically less because of the way that taxed and health insurance work here.
At each job, I went home and studied/built things that I wasn't doing at work. As soon as I had studied the essentials of whatever tech we were using at the office, I would chase some side project or build something for money. As a result, my salary may be higher than "normal" because of my deeper skillset.
At each step, I negotiated. From job one. If you don't mind working in more traditional "10-7 C++ or C#" types of jobs, there are plenty that break 10m ($100k)/yr.
I found that job offers start to thin around 8m ($80k) a year. This is where you'll have fewer interviews because fewer companies can afford you - this is a sign you're rising above the market average.
There is this commonly touted number online that engineers make 100K+ right out of graduating. What is less touted is the number of those that still need a roommate to live close to work.
Seattle, NY, Bay-area, you can expect to make a lot of money, and pay a lot in rent. Tokyo is not a cheap place to live, but the only real difference is apartment size. By the square foot, Tokyo is very expensive. Apartments tend to be smaller, but I can live without roommates comfortably. I have tons of space and live in a relatively expensive area of Tokyo - other similar places would have set me back much less but be further out. There is no Tokyo hustle-and-bustle in my area - no train sounds, no traffic noise. Aside from me, my area is super quiet.
Apartments
Ugh. I have had such a mixed bag with this. Hunting for them has been JAM PACKED with racism at times, and incredible easy at others. Finding a job is fairly trivial, finding a place to live was insane.
I am in no way exaggerating when I say that some of the moving experiences I had in Tokyo and Sendai were the most discriminated against I have ever been in my life. When house hunting once, out of the exactly 30 apartments that I wanted to see in Tokyo, only 3 would even let me look. The rest straight-up said non-Japanese not welcome. Japanese skill, salary, relationship status - none of it mattered. The apartment I got I liked, though.
Outside of that specific time, every other time I've done this in either Tokyo or Osaka it was really easy and super cool. The real estate agents were helpful (if your real estate agent isn't aggressively finding places for you and calling them, go across the street to another one). Every apartment was super cool about having me move in except for one oddball that wanted me to be double-insured because I wasn't Japanese. I laughed and said no. In general, they pretty much asked: "Does he speak Japanese?" They didn't ask about my salary or anything. I think a few asked how long I'd been/be in Japan, and if I had some kind of job already, but that was it. My Osaka one wanted to know how long my visa was good for - and threw in an air conditioner for free because they thought I was a fun person.
Unfortunately, my next move to the countryside involved all of my candidate homes allowing me to come to take a look, but a Japanese person would have to be my guarantor or I couldn't move in (be double insured). They made it very clear that it was because I was not Japanese. I've heard that the reason may be that it's the countryside where there are fewer non-Japanese, and I'm inclined to believe that reason.
Conclusion
Just like every other country, it's a mixed bag. You'll have companies that you dislike strongly, you'll have companies that you love.
You'll have people that frustrate you endlessly, and people that will leave positive lasting impressions on you for the rest of your life.
You'll feel underpaid, you'll feel overpaid. You have expensive apartments in the heart of the city, and cheap ones on the edge.
You'll make well more than the average earner in Tokyo, and have a comfortable life if you can speak Japanese or have intense skill.
Life here is really good - for me. Your experience might be different, but from what I've seen it's really the same here as it is everywhere else.
It's what you make of it.
If you have questions or comments about living in Japan, please leave a comment and I'll do my best to get back to you.
Also, I now have a Twitter! My DMs are open, so shoot me a message if you need anything.