[comp.software-eng] Japanese software developement

jon@cs.washington.edu (Jon Jacky) (07/07/90)

A recent posting in this newsgroup reported some impressive findings about
Japanese software development practices and performance.   I have other news
from Japan that presents a different view.

Here is the excerpt from the original posting by Brad Cox (cox@stpstn.UUCP):

> You might be interested in how certain organizations are managing to beat
> our butts in terms of quality and time to market by *one to two orders
> of magnitude).
> 
>	Average of 2-3 programmers per terminal
>
>	Obsolete software technologies (assembler often)
>
>	200-300 desks per room, side by side, managers at the end of each
>	row.
>
>	Workdays average 10-14 hours/day.
>
> The organization is, of course, a Japanese software development
> organization such as Hitachi, NEC, etc.  These are a quick summary from
> memory of a workshop organized by Victor Basili and Colonel Will Stackhouse
> at Univ. of Md on Tuesday of this week.

I forwarded this posting to a friend of mine, a graduate student in computer
science who is spending the summer at the Tokyo Institute of Technology,
studying Japanese software development practices.  He in turn forwarded the
message to a colleague who works at Hitachi.  Here is that colleague's
response:

------------------

I'd like to ask are Japanese really beating US on software development.
My current is "no."  Even if we focus on the productivity of Japanese
programmers, often I hear the estimate of 10 lines (high-level
programming language) of debugged code per day per programmer.

Here is my feedback on the claims made:

	Average of 2-3 programmers per terminal
		--- This situation is no longer true.

	Obsolete software technologies (assembler often)
		--- Assembler?  You gotta be kidding.
		    At any rate, they are agressively importing
		    software development tools.

	200-300 desks per room, side by side, managers at the end of each
	row.
		--- This is physically impossible.  How big a room do
		    you need to fit 200 to 300 desk per room?

	Workdays average 10-14 hours/day.
		--- Yeah.  Regardless whether you are Japanese or
		    non-Japanese, you tend to write codes that you
		    don't want to see the next day after working
		    14hurs.  Then how does longer working day add
		    to increase in productivity?  Also you need to
		    remember that fair number of these hourse are
		    spent on administrative tasks, much more so
		    than in US.

I don't have a good feel for the reliability of Japanese software, but
as far as their quality is concerned, I don't think they are well made.
Remember the quality is not just reliability but also includes the design
of the system.  In this area, I think they lag well behind.  The problem
analysis and solving ability of average Japanese programmers is not that
good in my opinion.

This is my assessment on the situation.  What I'd like to ask
this guy who wrote the original article is that if Japanese software
houses' quality is that good, why doesn't he just order out his
company's development to Japanese?  Wouldn't that make more business
sense?

(end of response from Japan)

- Jon Jacky, University of Washington, Seattle   jon@gaffer.rad.washington.edu

marking@drivax.UUCP (M.Marking) (07/08/90)

jon@cs.washington.edu (Jon Jacky) writes:

) A recent posting in this newsgroup reported some impressive findings about
)...
) I forwarded this posting to a friend of mine, a graduate student in computer
) science who is spending the summer at the Tokyo Institute of Technology,
) studying Japanese software development practices.  He in turn forwarded the
) message to a colleague who works at Hitachi.  Here is that colleague's
) response:
) ------------------
) I'd like to ask are Japanese really beating US on software development.
) My current is "no."  Even if we focus on the productivity of Japanese
) programmers, often I hear the estimate of 10 lines (high-level
) programming language) of debugged code per day per programmer.

) Here is my feedback on the claims made:

) 	Average of 2-3 programmers per terminal
) 		--- This situation is no longer true.

Well, when you work in a group that thinks 2-3 terminals per programmer,
the U.S. seems still somewhat ahead, even if Japan gives their engineers
a terminal each. Hardware *is* more expensive in Japan, almost any way
you measure it. It costs half again as much to buy an equivalent PC in
Japan compared to the U.S., and some commodities (certain types of network
hardware, 300+ megabyte drives, and so on) are difficult to find (and
afford).

) 	Obsolete software technologies (assembler often)
) 		--- Assembler?  You gotta be kidding.
) 		    At any rate, they are agressively importing
) 		    software development tools.

Mixed reviews here. By U.S. standards, Japan is behind. But there are
two sides reasons for this. The first is that they are simply behind,
especially in networks. The other is that Japan values some technologies
differently than the U.S. Japan produces very good stuff in certain
areas - I'm referring to final products, not to prototypes or research -
such as automation, artificial intelligence, entertainment, and certain
types of networking. Americans don't think it's important to build washing
machines that contain fuzzy logic and dynamically adjust the wash and
rinse cycles to the changing dirt and solvent levels in the clothes,
so they tend to ignore such "practical" things.

) 	200-300 desks per room, side by side, managers at the end of each
) 	row.
) 		--- This is physically impossible.  How big a room do
) 		    you need to fit 200 to 300 desk per room?

Things *are* more crowded in Japan. One of the reasons portables and
laptops sell so well there is that they take up less room on desks.
They are bought even when there is no intention of carrying them around.
I've never seen 200 desks in a room, but fifty or a hundred isn't
unusual. It isn't the norm, either.

) 	Workdays average 10-14 hours/day.
) 		--- Yeah.  Regardless whether you are Japanese or
) 		    non-Japanese, you tend to write codes that you
) 		    don't want to see the next day after working
) 		    14hurs.  Then how does longer working day add
) 		    to increase in productivity?  Also you need to
) 		    remember that fair number of these hourse are
) 		    spent on administrative tasks, much more so
) 		    than in US.

There is some truth on both sides here, and I still can't make up
my mind if the longer hours and greater dedication and commitment
actually yield meaningful gains.

) I don't have a good feel for the reliability of Japanese software, but
) as far as their quality is concerned, I don't think they are well made.
) Remember the quality is not just reliability but also includes the design
) of the system.  In this area, I think they lag well behind.  The problem
) analysis and solving ability of average Japanese programmers is not that
) good in my opinion.

Again, it depends on the value system. If the tool does the job - or,
rather, if it makes money...

Consider the lowly cash register. Most people (that can include us
software types) don't think much about such commodities, but there are
a lot of cash registers ("point of sale terminals") that are running
multitasking, real-time operating systems with disks and graphics and
local area net support. Do we or the store owner or almost anyone else
care if the code inside is structured or spaghetti or in assembler or
COBOL (yes, there are cash registers running COBOL) as long as the right
barcode gives the right price and it doesn't bill the wrong amount to
our credit cards?

We can't reasonably separate the software from its context. I don't
think it especially relevant if a product contains elegant code if such
elegance results in the failure to satisfy the customers' needs. In
this respect, Japanese software engineering is healthily pragmatic. While
Japan improves its techniques (it is gaining on the U.S.) it is 
making money along the way. Think about that the next time you use
your computerized Japanese camera, your computerized Japanese automobile,
or your computerized Japanese fax machine or copier: do you really care
about the code inside?

As a mathematician, I appreciate elegance and simplicity. As an
engineer, I appreciate the ability to solve problems. 

So I don't think there is a fair answer to the above without defining
"problem solving ability" or even specifying the goal. I don't mean
the above argument to imply that some other point of view is wrong, but
rather to show how subjective it all is.

When all else is equal, the *real* threat to the U.S. software industry
from the Japanese software industry will arise because U.S. programmers
don't know how to work in groups as well as the Japanese. As technology
and industry progress, there will be more and more large projects,
things that weren't feasible in the past. All of this wonderful stuff
like CASE and reusable code and the like is extremely valuable, but
it doesn't eliminate the need to work with others.

) This is my assessment on the situation.  What I'd like to ask
) this guy who wrote the original article is that if Japanese software
) houses' quality is that good, why doesn't he just order out his
) company's development to Japanese?  Wouldn't that make more business
) sense?

That is exactly the response that is wrong. I suppose there are a few
"pure" programming projects out there, but most of the work being done
(and needing to be done) involves understanding the environment in which
the software will be used. I don't care what the myth says, it's
unusual to be able to specify a problem, then give it to someone else
to code. Developing software is an iterative, interactive process,
requiring effort by the user as well as by the developer.

roger@zuken.co.jp (Roger Meunier) (07/09/90)

In article <18AM80D@drivax.UUCP> marking@drivax.UUCP (M.Marking) writes:

 >We can't reasonably separate the software from its context. I don't
 >think it especially relevant if a product contains elegant code if such
 >elegance results in the failure to satisfy the customers' needs. In
 >this respect, Japanese software engineering is healthily pragmatic.

This is where the Japanese shine.  They like to develop software
products which provide *all* the functionality a customer needs.  They
listen to the customer and make lots of revisions.  The internal code
limits the inclusion of new features at times, but for the most part
this is not seen as a major problem.  *New* (to Japan) software development
practices (of the modular sort) are helping to allow faster and cleaner
revisions.
 
 >When all else is equal, the *real* threat to the U.S. software industry
 >from the Japanese software industry will arise because U.S. programmers
 >don't know how to work in groups as well as the Japanese.

I've experienced the opposite.  Japanese work by concensus, which often
boils down to taking the greatest common denominator among the peers.
This tends to bog things down, and prohibits the tackling of large
system design in a timely fashion.  It also makes introduction of new
technologies difficult, because there are always desenting voices
which talk about such things being too risky.

The *real* threat is hidden in your next thought:

 > As technology
 >and industry progress, there will be more and more large projects,
 >things that weren't feasible in the past. All of this wonderful stuff
 >like CASE and reusable code and the like is extremely valuable, but
 >it doesn't eliminate the need to work with others.

Although CASE is still a lot of hot air, the idea that technology is
progressing and becoming increasingly *proven* in the marketplace will
aid the Japanese more than anyone else.  Once an idea is *proven* to
work, the *risk* disappears and the Japanese adopt the *new* technology
overnight.  It is clever *management*, not working in groups, which
determines the success of the Japanese software industry.  The people
who pull the strings here are making good, sound management decisions.

Once the Japanese see that something works and is *profitable*, they
come up to speed quickly, often by brute force (long hours, subcontracting,
etc.).  They may not be on the cutting edge of software technology,
but they know how to take advantage of accepted methodology.

 >That is exactly the response that is wrong. I suppose there are a few
 >"pure" programming projects out there, but most of the work being done
 >(and needing to be done) involves understanding the environment in which
 >the software will be used. I don't care what the myth says, it's
 >unusual to be able to specify a problem, then give it to someone else
 >to code. Developing software is an iterative, interactive process,
 >requiring effort by the user as well as by the developer.

Again, this is where the Japanese shine.  Although there is a lot of
redundancy and inefficiency along the way, they understand the user's
needs and produce *usable* products.  The coding may not be efficient
and the project not well coordinated, but the end result is a product
which sells.

How do we judge software engineering?  By profit-and-loss statements,
user satisfaction, or by some internal standards which the *real*
world never sees, like code reusability, modularity, maintainability,
etc.?  The Japanese, at least at this juncture, are less concerned
with "pure" programming than turning a profit.  That's sound business
practice here, and I think holds true in the West, also.  But for
those of us who have to design and build the products, we know there is
a better way; it's just hard to get upper management to give the
resources to get the job done *right*.


--
Roger Meunier @ Zuken, Inc.  Yokohama, Japan	(roger@zuken.co.jp)