> Western developers are obsessing over the latest JavaScript framework or arguing about tabs vs. spaces
Most "Western developers" are not doing that; this is a minority.
I don't really know anything about Japanese software development, but I'm reasonably sure there are some Japanese developers doing unreasonable things too.
e.g. was that Toyota firmware that caused acceleration developed in Japan? An audit revealed it was absolutely horrible.
rstuart4133 · 16h ago
> e.g. was that Toyota firmware that caused acceleration developed in Japan? An audit revealed it was absolutely horrible.
It's horribleness was a line pushed by the people trying to get money out of Toyota. From their descriptions it seemed in line with proprietary code that it's owners never expected to be exposed to sunlight.
The way the code was described, it sounded like it had grown organically for a long while. Features tacked on here and there, no obvious attempt at formally ensuring deadlines in real time critical software (like braking systems) were met. Instead they tacked on features, then subjected it to what must have been a truly formidable testing regime, and fixed any failures with more hacks (like resetting the machine if invariants were violated). Well, maybe. That's a guess. It's seems be in line with the process Toyota uses for all its car engineering, from light bulks to engine rings. They applied the same engineering process to software. Given they produce the most reliable line of cars on the planet, it's hard to be too critical.
And it worked in this case too. No serious (ie, life or equipment destroying) bugs were found on Toyota's code. No one knows for sure what the problem was, but suspicion is noise caused a bit flip sending NEC MCU off the rails. But not in Toyota's code, because every variable was stored in 2 places, every read compared to two values and if they weren't equal, the MCU was reset (I think?). However, the OS Toyota used was a proprietary one from NEC. They didn't have the source for it. I think they assumed it was at robust as their code. They were wrong. And by flipping a bit in the scheduler's variables (which weren't duplicated), you could cause the exact symptoms that lead to the crashes (engine stuck at full throttle, ECU off in lala land).
I came away thinking their mistake was to treat software like a piston rod. You don't have to see a piston rod being made. You can test the materials when you get it, you can x-ray it, you can deliberately push it to destruction, and most importantly if you do that enough times you can create a statistical model about it's behaviour. But software, particularly closed source software embedded in an MCU that can change without notice anytime, isn't like that.
Still, Toyota didn't come out of this smelling like a rose. Rather than transparently investigating the problem, they hid everything for as long as they could, tied everyone up in legal knots, and counter sued. Anti-social behaviour IMO. Everyone, including them, would have benefited in the long run by an open and transparent investigation into the root cause. Still, it's hard to criticise their engineering. Them being screwed over by NEC hiding stuff from them (their customer) just as they hide stuff from their customers else is karma, baby. I hope they learnt something from it.
mpalmer · 20h ago
Naming variables descriptively? Build for current requirements, not future ones?
You do not have to look far to find these qualities and practices basically anywhere software is made. I am not especially inclined to see the author as an authority after reading this.
_rm · 18h ago
I think this is why the word "weeb" was invented.
This reads somewhere between ChatGPT sycophancy and LinkedIn cringe from someone with a Japan fetish.
GianFabien · 19h ago
The observations reflect the deeper cultural differences. Japanese corporate goal is to build a company that lasts 500+ years. In the West the corporate goal is to maximize this quarter's numbers, deliver profits for the shareholders, maximize the executive suite's gains.
I’m not creating a medium account to read the entire article, but I read plenty of bad code while living in Japan — as a full-time employee, a contractor, and open source projects. I would take this article with a grain of salt.
devmor · 19h ago
This seems cherry picked and oddly fetishistic.
I have also worked with Japanese developers and found them resistant to new ideas because seniority often trumps knowledge in Japanese work culture. But I did not assume that meant that all Japanese developers are stuck in the past because that would be silly.
mpalmer · 19h ago
It mostly reads like they're exoticizing good development practice because they don't recognize it and/or haven't seen it elsewhere.
niobe · 18h ago
On the other hand, SV development culture is often obsessed with early release and adding features, traits I would identify with short-termism, rather than improving usability and minimising bloat (trends not rules). So a little old school conservatism might go a long way when it comes to software.. although the problems of too much silence in the face of seniority are also well known from the airline industry.
FiniteIntegral · 18h ago
Agreed, it's cherry picked and strange since a lot of western developers already profess a lot of these practices -- especially the "extensive comments" and "descriptive naming" points.
It reminds me a lot about "innovative Japanese management solutions" which consists of MBAs learning what a bottleneck is and that DevOps is just sensible basic business practice.
sublinear · 17h ago
None of this seems inherently Japanese. Why not just stay on topic and leave out all the Japanese stuff except a brief mention of inspiration?
pclowes · 17h ago
I feel like this is a bit like click bait.
Don't get me wrong, my career has been enormously helped by Japanese developers. (Thanks Matz)
But "works better" is a hard claim when there are very few pure software tech firm in Japan that are also globally dominant (would love to hear of them if they exist).
I have never in my entire career at startups, consultancies, BigTech, or Fortune50s heard _anyone_ ever care about tabs/spaces or JS frameworks beyond "oh this approach is interesting, lets try it"
Additionally I don't think "The secret? They treat code like a Toyota Camry, not a Tesla." is the flex the author thinks it is.
Finally, development speed is incredibly important. Napoleon is credited with saying "quantity has a quality all its own", in software it is "velocity has a quality all its own".
As long as its not complete slop and has some safe guards, consistently moving very quickly fixes almost every other deficiency.
- It makes engineering mistakes cheaper (just fix them fast)
- It make product experimentation easy (we can test this fast and rever if needed)
- It makes developers ramp up quickly (shipping code increases confidence and knowledge)
- It even makes rigor more feasible as the most effective rigorous processes have to be light weight and built-in or they go unused.
Code shouldn't be built to last decades, it should be built to be changed quickly and easily.
Every line of code is a liability, the system that enables it to change rapidly is the asset.
Most "Western developers" are not doing that; this is a minority.
I don't really know anything about Japanese software development, but I'm reasonably sure there are some Japanese developers doing unreasonable things too.
e.g. was that Toyota firmware that caused acceleration developed in Japan? An audit revealed it was absolutely horrible.
It's horribleness was a line pushed by the people trying to get money out of Toyota. From their descriptions it seemed in line with proprietary code that it's owners never expected to be exposed to sunlight.
The way the code was described, it sounded like it had grown organically for a long while. Features tacked on here and there, no obvious attempt at formally ensuring deadlines in real time critical software (like braking systems) were met. Instead they tacked on features, then subjected it to what must have been a truly formidable testing regime, and fixed any failures with more hacks (like resetting the machine if invariants were violated). Well, maybe. That's a guess. It's seems be in line with the process Toyota uses for all its car engineering, from light bulks to engine rings. They applied the same engineering process to software. Given they produce the most reliable line of cars on the planet, it's hard to be too critical.
And it worked in this case too. No serious (ie, life or equipment destroying) bugs were found on Toyota's code. No one knows for sure what the problem was, but suspicion is noise caused a bit flip sending NEC MCU off the rails. But not in Toyota's code, because every variable was stored in 2 places, every read compared to two values and if they weren't equal, the MCU was reset (I think?). However, the OS Toyota used was a proprietary one from NEC. They didn't have the source for it. I think they assumed it was at robust as their code. They were wrong. And by flipping a bit in the scheduler's variables (which weren't duplicated), you could cause the exact symptoms that lead to the crashes (engine stuck at full throttle, ECU off in lala land).
I came away thinking their mistake was to treat software like a piston rod. You don't have to see a piston rod being made. You can test the materials when you get it, you can x-ray it, you can deliberately push it to destruction, and most importantly if you do that enough times you can create a statistical model about it's behaviour. But software, particularly closed source software embedded in an MCU that can change without notice anytime, isn't like that.
Still, Toyota didn't come out of this smelling like a rose. Rather than transparently investigating the problem, they hid everything for as long as they could, tied everyone up in legal knots, and counter sued. Anti-social behaviour IMO. Everyone, including them, would have benefited in the long run by an open and transparent investigation into the root cause. Still, it's hard to criticise their engineering. Them being screwed over by NEC hiding stuff from them (their customer) just as they hide stuff from their customers else is karma, baby. I hope they learnt something from it.
You do not have to look far to find these qualities and practices basically anywhere software is made. I am not especially inclined to see the author as an authority after reading this.
This reads somewhere between ChatGPT sycophancy and LinkedIn cringe from someone with a Japan fetish.
I have also worked with Japanese developers and found them resistant to new ideas because seniority often trumps knowledge in Japanese work culture. But I did not assume that meant that all Japanese developers are stuck in the past because that would be silly.
It reminds me a lot about "innovative Japanese management solutions" which consists of MBAs learning what a bottleneck is and that DevOps is just sensible basic business practice.
Don't get me wrong, my career has been enormously helped by Japanese developers. (Thanks Matz)
But "works better" is a hard claim when there are very few pure software tech firm in Japan that are also globally dominant (would love to hear of them if they exist).
I have never in my entire career at startups, consultancies, BigTech, or Fortune50s heard _anyone_ ever care about tabs/spaces or JS frameworks beyond "oh this approach is interesting, lets try it"
Additionally I don't think "The secret? They treat code like a Toyota Camry, not a Tesla." is the flex the author thinks it is.
Finally, development speed is incredibly important. Napoleon is credited with saying "quantity has a quality all its own", in software it is "velocity has a quality all its own".
As long as its not complete slop and has some safe guards, consistently moving very quickly fixes almost every other deficiency.
- It makes engineering mistakes cheaper (just fix them fast)
- It make product experimentation easy (we can test this fast and rever if needed)
- It makes developers ramp up quickly (shipping code increases confidence and knowledge)
- It even makes rigor more feasible as the most effective rigorous processes have to be light weight and built-in or they go unused.
Code shouldn't be built to last decades, it should be built to be changed quickly and easily.
Every line of code is a liability, the system that enables it to change rapidly is the asset.
tldr: According to the previous thread, Germans are terrible at software.