Force Multipliers and Japanese Programmers

日本語で説明ポスト

Yesterday, over coffee, “R” and I traded stories about Akiba, board games and business. However, the main thing that we wound up talking about was programming, or more exactly, why Japanese companies produce lots of code and little progress. To make a long story short, I’ve come to believe it is a failure of management. A failure to facilitate coding through the use of frameworks that amplify work output.

I mentioned the usual generalizations (Japanese aren’t good coders, the Japanese work environment involves a lot of talking and little doing), but “R” mentioned how he worked in a company where they produced a lot of good code and the project managers took care of the insufferable 3 hour meetings – and to be fair, I have too. So why the problem?

The first clue to us both started with frameworks. “R” spent weeks at one company trying to add table joins to a system which simply had nothing of the kind built-in. This reminded me of similar headaches while spending an year of my own time developing Pinki and only having a small search/listing website by the end.

The big clue to me was Fujitsu – and how they constantly had dozens of systems programmers working on Symbian and other tinpot mobile OSes for each of their feature phones. Particularly with feature phones, there was very little difference between handsets, but programmers had to spend obscene amounts of time doing low-level programming to enable old software to run on new hardware. It was rare for me to see anyone going home before the last train. (These were some of the best programmers in Japan, and they had families – even the “overtime bonus” was not reason enough to stay. )

What all these examples have in common is how companies and people brazenly avoid using programming force multipliers. Fujitsu still uses the old/creaky Symbian OS to this day, even though it is a pain to develop for and has little support / community left (particularly in comparison to Android and Win7). I was stupid enough to try to build a website without a framework, and had to re-solve a half dozen problems. R’s former company had settled on some Japanese-language only ghetto framework even though it had no proper DB layer.

My hypothesis is that a lot of Japanese companies produce little new because they have people solving solved problems over and over again. This is probably because of their inability to assimilate newer frameworks with better communities that automatically solve many of these problems for them.

Maybe this is because the English language barrier. You have billions of English speakers and X% are good programmers. Even if 2X% of Japanese speakers were good programmers, you will never have the depth of talent needed to develop native Japanese language versions of computer languages & the community that goes with them. You are restricted to a subset of frameworks, good or bad, that you can explain to your Japanese unilingual boss. He probably is severely risk-averse and is too old to be familiar with current programming technologies and shortcuts. How do you get him to let you program in Python/Django when he is still using Excel as a datastore (a shockingly common issue in Japan!)

I hear the weeaboos across the world now screaming “what about Ruby!”, but Ruby just proves the point. A Mormon Japanese dude (read: English literate, world-focused, non-Otaku, non-loner mindset) coupled with an excellent framework that gained fame world-wide (Rails). It’s nice that there are great Japanese Rubyists but they are not responsible for the popularity of the language.

There are alternative explanations – no money for advanced training, corporate mandates from backroom deals, fear of open source software, incorrect initial assumptions (IE: Japan is the source of all sorts of world class code), but none of them resonate with me.

If I’m right, the solution isn’t that hard. Give the Japanese programmers proper force multipliers in the form of good frameworks and libraries. Give them good training so they aren’t dependent on Google translator-fu. You will see an improvement.

-edit-

This one post got about 10,000 hits through a kind link on Hacker News. You can follow the discussion there. I do not necessarily agree with everything, but it is all generally thought provoking.

-edit #2-

I’m… honoured to see that somehow this made its way to Slashdot Japan, and was translated into Japanese. どうぞよろしくおねがいします。

-edit #3-
みんなさん、ようこそ。 もし不明なところがあれば、是非日本語でコメントをしてください。

21 thoughts on “Force Multipliers and Japanese Programmers

  1. Chris

    Really interesting post, I can confirm from limited experience that this is happening. But the problem is that “giving them good frameworks and libraries” is not as easy as just handing them a package and being done with it. The pace of modern frameworks like Rails etc. is so fast, that there is a big learning curve just getting used to staying in the loop.

    We lost at least a week on a project I’m working on catching up when Rails 3.1 hit, because all these useful things (asset pipeline, etc.) require effort to tie into existing practices. Imagine the Japanese developer with limited English skill, trying to navigate the discussion threads like this one (just as an example). It’s a lot of work.

    So I think what happens is that, although re-inventing the wheel is a hell of a job, at least it means that the basic groundwork is constant and designed internally, whereas using frameworks means that you’re building on someone else’s work — usually non-Japanese, so not well documented in Japanese.

  2. Jawaad Post author

    Chris > Thanks for the comment :)

    You are right, I can’t imagine any Japanese-unilingual programmer navigating the threads for a rails issue (or a django issue for that matter) without having an English speaker nearby. I think that’s why I see so many companies still using C++ and not prototyping in other languages – there is just so much to deal with.

    Heck, even if they COULD manage to read the English, our documentation is just lacking in a lot of places. Sure, we can hit up IRC channels and Safari Books Online, but try that with a Japanese mindset – I can’t imagine explaining that to my boss.

  3. Karl

    There are a few causes for this:

    1. In large companies, you tend to get hired into the COMPANY rather than a POSITION. This means that you get a lot of crappy “programmers” laying the foundation for the much smaller percentage of real programmers who remain after the majority move on. Sheer inertia traps the real programmers into maintaining these monstrosities.

    2. Japanese companies, in general, are even more conservative than banks. Their adoption rate is VERY VERY slow. Managers have an almost pathological fear of novelty.

    3. Standing out, as I’m sure you know, is a very bad thing in Japan. You don’t show up your workmates. And so, everyone keeps their head down and does what everyone else is doing, directed by a manager who doesn’t want to be challenged by something new. All decisions are made by consensus, with every person careful not to disrupt harmony by offending someone else.

    It’s not a question of “language barrier”. The sheer number of Java, PHP, and C++ programmers is testament to that. Even a language and framework (and documentation!) by a Japanese person could not break through that conservative barrier.

  4. Chris

    @Karl

    I don’t disagree with what you write, but I do think the language barrier plays a role here. The point is that there is much more local documentation for existing, established technologies (Java, PHP, C++) than there is for bleeding-edge frameworks and libraries, which are rapidly updated and replaced. In the latter case, the “documentation” ends up being threads/Q&A in places like stackoverflow. The documentation and documentation is created later, and translated much later (often never).

    I read somewhere recently (can’t remember the ref) a Japanese blogger encouraging Rails devs in Japan to skip waiting for translated documentation and just go directly to the source, because waiting for the books etc. to be translated puts Japanese at a huge disadvantage. That’s probably the right approach.

  5. Jeff

    Every time I check online job listings in Tokyo, I’m appalled at how low pay is. Maybe it’s just because my Japanese is poor, and I can’t tap into the Tokyo Programmer Goldmine, but I don’t think that’s the case. How are you going to get technically strong, smart people into positions that barely pay the rent?

  6. Kal

    Conservatism and language barrier are both big factors, in my opinion.

    I can’t attest to the conservatism problem, but I can attest to the language barrier problem, first hand.

    Here is some background: I’m multilingual myself; I speak, read, and write English, French, and Chinese, fully fluently; and I understand some Japanese writing (when the text has enough Kanji’s). I prefer to read Chinese novels over English or French ones.

    However, when it comes to programming, I invariably look for documentation and resources written in English. There are a few reasons to that.

    1. English documentation is almost always most up-to-date. I may be generalizing, but I believe the biggest reason to be that “Westerners” have a higher tendency to share their knowledge with other people, whereas cultural and political history makes the typical Chinese prefer to keep things to himself/herself.
    2. Programming languages and frameworks are often designed by people with the English language in mind. A lot of the words chosen to describe abstract ideas (e.g. view, controller, object, stack, etc.) do not translate very well from English to French, and even more so from English to an Asian language like Chinese. There are some words that sound quite “casual” and easy to grasp in English (e.g. a stack), but sometimes, the Chinese counterpart don’t sound the same. There is a lot of documentation out there that is fully translated from English to Chinese, but when I read the Chinese version, it just doesn’t click. I believe that the situation is even worse for a Japanese programmer who isn’t very good with English: he won’t understand the English documentation very well, and the Japanese documentation will likely be spammed with Katakana that are devoid of ANY etymological meaning. It’s a “pick your poison” situation for him.

  7. d. nye

    Nice post. My time at Panasonic & then later selling software tools to the Symbian OS developers was eye opening to say the least. The Japanese corporate mentality was, in many ways, still feudal. Fujitsu’s Symbian OS team was given a lot of support by NTT Docomo but also a crushing amount of responsibility — they were developing something like 30 baseports a year, 15 each for the Spring and Fall seasons, for all their handsets *and* acting as lead Symbian developer for the entire NTT Docomo group. Talk about churn & burn.

    When I spoke to the management about this, they said that they were in a position where they couldn’t say no to Docomo and likewise they didn’t see anyway of *not* continuing to do their development. And yet, and no offense to the folks grinding this stuff out, there was little real differentiation in the *software,* the OEM’s were all focusing on the hardware feature differentiation and the software was really just a “necessary evil.”

    So I’m not convinced that it’s simply a case of needing a “force multiplier” framework, the companies need to see that there’s value in cultivating better, highly differentiated software.

    DeNA, GREE, and the other social startups seem to have found this whereas the larger vertically integrated semi manufacturers are basically stuck writing drivers for their whizzbang hardware.

  8. Jawaad Post author

    Jeff > Wages are terrible in Japan; most of the real pay you get is as a bonus, but that isn’t happening in this economy. Furthermore, most IT companies are not the sort that pay bonuses – or even overtime. Incidentally, “Programmer” as a job title is for a low-class job; the job you are looking for is as a “SE”. (“Programmer” invokes images of neckbeard Otaku drones who spend their extra time watching anime and posting angry rants on 2ch)

    My girlfriend was in a “Hostage Situation” job herself. She worked at Proto Corporation here in Japan; they paid about 350,000 yen a month, but she would be there from the first train to the last train – and nothing they ever built was any good. (Lack of respect plus poor management equals poor results. In the US, they would have been sued out of existence for some of the things they did to her)

    The good news is, social manipulation / societal intervention not-withstanding, these are shit companies that will vanish with the capitalistic wind. It might take another 10 years, but I do believe that Japan will eventually have a superior IT industry. It has already started with some IT companies requiring the use of English in meetings; baby steps, but it will eventually reward those Japanese coders who take the effort to leave the Japan bubble.

  9. gen

    In 2008, the Linux Foundation announced that 15% of the contributions to the Linux Kernel were coming from Japan/Japanese developers/Japanese firms. So I think some of your initial premise is sort of misplaced.

    https://blog.mozilla.com/gen/2008/07/16/significant-linux-contributors-from-japan/

    Japanese firms that have not innovated in software (virtually all of them) have gotten their comeuppance. iOS and Android are the future, not any Japanese-built OS. Look at the inroads Samsung and HTC have made since the smartphone boom- before smartphones it was a sea of Japanese ‘keitai.’ On the gaming side of the business, where Japan used to lead in both hardware and software, Nintendo is struggling, Japanese game developers are ailing, and XBOX360 is the winning platform (globally.)

    Let’s say I’m not holding my breath.

  10. Jawaad Post author

    I didn’t mean to imply that there are no good Japanese programmers; clearly, there are. I also am well aware of the contribution to Linux by Japanese programmers (although I hadn’t seen that link; thanks!). As I should clarify, that sort of thinking (“The Japanese are bad programmers”) is just the “lazy thought” we indulge in when not seriously trying to take hold of the problem.

    Definitely agree with you about keitais and Japanese companys receiving their comeuppance. My boss @ Fujitsu used to complain about how worthless Microsoft was in their support in Japan; then she told me no one would buy an iPhone because they used touch screens. Now I see Fujitsu releasing touch screen phones – guess things have come full circle.

  11. Ilya Kasnacheev

    Jawaad >
    That’s an interesting perspective (about job titles), since in Russia neckbeards who watch anime and post angry rants on imageboards are probably the best developers by skill.

    Do japanese even have neckbeards? I thought it doesn’t grow that way on them.

  12. Jawaad Post author

    Funny because I used to do the same back when I was in Canada. Anime seemed to be an easy way to socialize with people online, where it seems to be this weird excuse to hide yourself from the world here.

    And you win post of the day for reminding me that Japanese have no neckbeards!

  13. J

    I worked for a large Japanese hardware company many years ago. They had an entire floor full of programmers (YES, not kidding!!!) who were working on a new software product and when the first beta versions started to surface our guys in Europe saw how bad and hopeless it was. So they assembled a small competing team of 3 guys in Europe (I did the software design and coding – it was actually my first real job!). The headquarters provided all the necessary documentation and 1 year later we had a working product finished before them!!

    I think one of the major problem was that they had incompetent managers and nobody questioned their authority/ideas. Everyone did what they were told! No independent thinking! Seems like a cultural thing to me.

  14. Diego

    I think it’s the excessively unbalanced relationship between companies that’s responsible for the generally poor state of corporate IT infrastructure in Japan. I work at an IT helpdesk for an American company in Japan, and customers are always forcing us to use their shoddily crafted EDI systems that look like they were made by a teenager in the 90′s teaching them self how to program. They then force our developers at gun point to contort our system to match their own. Otherwise they won’t give us orders. They often even force us to buy special hardware or software so that we can receive their orders. So many customers do this that overtime our system becomes a spaghetti mess of unreasonable demands. Because of customer relations, there’s no negotiation or discussion about how to make our systems compatible. Just crazy, unreasonable demands.

  15. BarsMonster

    Language barrier is not an argument: here in Russia we also don’t have good documentation, so personally I don’t even bother to google in Russian on tech topics. It seems that the only information available in Russian is some novice tutorials, and translated documentation at projects like PHP.

    Anyway, learning to read English is very easy, way easier than any decent programming language, so anyone can do that. And all developers here are tough that they have to read in english at least. If they cannot read in english – they won’t get ANY software development job.

    So the main reason should be mentality & management traditions, low salary, and as a result of that – emigration of majority talented developers to US & EU.

    In comparison, here in Russia, talented developers can have salary comparable to US’s one after taxes, and stupid managers don’t survive long enough, so lots of smart guys stay here.

  16. Yoshi

    Got to know this site from Hacker news. The post and comments are all so interesting. Japanese people, they say, like to hear (masochistically) objective comments on Japan and Japanese people. I thought I wasn’t like ordinary Japanese but I guess I love to hear what foreigner say about Japan. Is that narcissism?

    I think you guys’ observations on Japan’s IT industry are pretty much correct. I have been programming for almost 30 years in this country. I never liked what’s going on in this country as things happening here are mostly “stupid”. There is an interesting story. One guy working for a Japanese company created an Excel macro to improve his productivity. What he was told from his manager when he told him about it was like, “Hey we have our ways so don’t waste no time creating such thing. Just do like you are told!.” So he had to trash what he had done. That may be an extreme case but it nevertheless depicts typical Japanese management style. I think that the criteria that comes first when a Japanese company selects an employee is whether you are submissive or not. That way the great Japanese tradition is preserved as no one speaks out nor tries to change.

    I worked for GE after school, and then got a job at one Japanese software company in early 80′s. GE was okay, and I kind of learned non-Japanese management style so for me what’s going on at the Japanese company was totally a crap. I stayed there just one year and became a freelancer. Since then I have been and am freelancing. We are outsiders so we are out of their circle like you Gaijins. No offense. I tell what I want to tell that most Japanese people, especially superiors, don’t like me.

  17. S

    I agree with almost everything you said in commetns. But I don’t agree with statements such as english is easier to learn than other languages and even programing languages.

    Linguists says that Spanish, Portuguese, Italian, and even French are easier to learn for Japanese people than English, mainly because of their pronunciation systems. Of course, there are no reason to avoid English for Japanese programmers and engineers.

    I think one reason why most of Japanese engineers don’t like reading foreign books even they can read English well is that they like their own writing system very much. The notoriously complicated Japanese writing system enables us to read very fast. Other languages except Chinese cannot be exceed this speed.

  18. Jawaad Post author

    Hi S,

    コメントをありがとうございました!

    I think English grammar is filled with exceptions and difficult to learn from scratch; I was raised in English, and learning the exceptions in French were awful. In contrast, learning Japanese was quite simple.

    I understand that it might appear to be easy to learn English if one is exposed to English from birth (as is the case for many of the European commentators here), but the Japanese education system fails completely to introduce English and foreign languages properly. I constantly shock people when I talk to them in Japanese; I think it is mostly because of the system which makes a simple act into something “amazing” that people could not possibly do.

    Even if one could speak English perfectly, I tend to feel that a lot of cultural and historical context is important to being able to communicate (and program) properly; but that’s something I will probably cover in a future post.

  19. Sato

    Hi, All
    This is very interesting discussion to me, I am Japanese and now working at US company in US as programmer.
    My opinion to this thread is this:
    “Japanese people is not cut out for Programming.”

    The reason why I said this is because they are really good at something visual such as Anime, Game, manufacturing hardware, automobile, and so on. However, they are not good at something to be not exposed to human eye.
    Software requires us to structure invisible building code by code, and those are almost relying on our imagination . This process is same as reading book, not comic. While we have many comic reader, these days we are getting less literal book reader. Therefore, our society produces so many good animeter or comic writer though we haven’t have enough resource to understand easily whole picture from code sentence. There is definitely significant difference of the process to understand either by reading visually and non-visually.
    I am pretty sure that if our debug environment is improved in visual way someday, things will be different dramatically.
    However, as far as we are reading code by sentence, people in Japan will be hopeless to improve their skill because this process doesn’t attract them too much. Personally I think it is time to change how to build the code in software industry. I am kinda sick of reading this way for long time. I need visual debugger so that we can fix bug or structure easily. This is how we are good at.

  20. HOzawa

    I think it’s more of getting more budget and higher immediate sales. More programmers usually implies more budget for internal projects and higher immediate sales for customer projects. Japanese corporation base success on number of people underneath them and that implied getting more budget.
    Companies and programmers are usually choosen based on relationship rather than skills. In such a situation, it is possible and better to charge more by having 100 insufficient skilled workers writing imperfect program, which needs more maintenance, rather than having 10 programmers write good programs. In such situation, good programmers are forced out from the system because they result in less sales and budget.
    I think this situation is going to change as more manufactures now have tigher budgets from higher competition from low priced good abroad. i.e. less contracts from golf outtings and dinners at Ginza and nights at Roppongi/Akasaka clubs.

Comments are closed.