Date: December 12, 2017
Author: Athittaya Kamlang-ek
Read the book “The Machine that Changed the
World”. Then write a 3 to 5 page paper describing how the lean production
methods described in the book can be applied to software development.
projects of various sizes and levels of complexities is always a part of
business, regardless of what vertical industry one is involved in. Therefore
the software industry is not much different from the auto industry. “The Machine
that Changed the World” showed how Toyota employed lean production methods that
can be directly applied to software development.
What benefits can be derived from the book and lean production as
globalization causes extremely high competition in the software industry,
developing quality software is crucial towards success in the market. With the extensive
use of the Internet, great software ideas have already been thought of.
However, quality implementations are not always a part of these great ideas and
this is what will distinguish a great company from a good company. Therefore
using principles from “The Machine that Changed the World” (e.g. finding out
the needs of the customers, designing the products to fulfill these needs, simplifying
the production process, etc.) can be beneficial and give a software company the
edge of becoming more successful than its competitor.
What are the commonalities between auto manufacturing and software
*Organizational Problem is Prime:
process of auto manufacturing and software development, the cause of a problem
is ultimately an organizational problem. For example, what happens when there
is a problem that the production team of one module cannot fix? If a company
wishes to be efficient, it should implement the lean production style of
In contrast to
the inefficient auto mass-production plant, Toyota’s Ohno instructed the
workers to stop the whole assembly line immediately if a problem that they
couldn’t fix emerged. As a result, the whole team can come over and work on the
problem. Similarly, if a software development team is well organize, when an
engineer or group of engineers encounter a problem they cannot fix, they should
consult other individuals/team-sector so that the problem is properly and
production organizational principle of Toyota is managing employees and
suppliers well by not pitting one against another and transferring the maximum
number of tasks/responsibilities to workers that can add more value to the car
on the line. Similarly in a well-organized software development team, the
sub-teams should not be pitted against each other and related
tasks/responsibilities should be combined together and completed by a certain single
team in order to rapidly and properly develop quality software.
team well also involves having everyone be on the same page. For Toyota, all information,
daily production targets, current production, equipment breakdowns, personnel
shortages, and overtime required are displayed on electronic boards that are visible
from every workstation. Similarly, a software development team should have a
visible board that includes important information for completing software.
organizational component for an efficient and dynamic work team can ultimately
eliminate organization problems, efficiently create a quality product, and
decrease turnovers for all industries.
How can software quality be improved through the techniques
described in the book?
*Testing Well by Designing First:
software, quality testing and bug fixing requires numerous software iterations.
Oftentimes it can be tremendously difficult for teams to isolate issues and
quickly fix the problems. These difficulties can be mitigated by a lean
approach to component (i.e. in software it would be modular subsystem) supply
described in the book. For example, Toyota had the car’s break suppliers be
responsible for working as an integral part of the product development team in
developing a new product and included them in the design process. In software
development, one can have the development team of the Authentication Service
(i.e. Entitlement Service API) be involved with designing the Housemate Model
Service. This made the assembly production development team aware of
performance specifications (e.g. brakes should fit into a space 6″ x 8″ x 10″
at the end of each axle) and give the suppliers the creativity to make their
own engineering system. Suppliers are then told to deliver a prototype for
testing and if the prototype worked, they got the production order. Testing the
prototype first before assembling the car ensured that the car design was
followed and eliminated malfunctioning cars. Similarly for software design, when
the modules work from designing first and having all teams be involved in the
design, the quality software is easily integrated with each other and the
quality testing process can be more effortless. Ultimately bugs,
multiple/malfunctioning iterations are reduced.
What aspects of our software design course are relevant?
main reoccurring principles that were taught in this class are the abstraction,
divide and conquer, separation of concern, and Occam’s razor principles. These
4 principles encompass and synchronizes with many other design principles and
should perhaps be employed in all software. Toyota’s Lean production design
exemplifies all 4 of these principles as well.
of the main goals of the Abstraction Principle is reducing duplication of
information and code in a program. Two organizational features of a lean plant achieve
first feature is grouping and transferring the maximum number or tasks and
responsibilities to those workers who are doing related/similar task and are
adding value to the car line. This is similar to using abstract data type where
the data is defined by its behavior from the data-user’s point of view and
potentially group together in a way so that there are no repetitions in the
feature of a lean plant organization (that is related to the Abstraction
Principle) is detecting defects quickly and in turn fixing the ultimate cause. Toyota
believes that a small space enables workers to have lost of face-to-face
communication and therefore able to communicate efficiently and freely about
defects and potential problems. Similarly, having interfaces between hardware
communication layers (i.e. abstraction levels/layers) can be an efficient way
to design a program so that classes can efficiently communicate and avoid
*Divide and Conquer:
Breaking down a problem into two or more sub-problems so that they
are simple enough to be solved efficiently and directly is one of the goals of
the Divide and Conquer Principle. The lean product development and engineering
also follows this principle.
solve the mass production problem of lacking efficiency and reliability, lean
product developed a flexible production system that enabled them to reduce
production-engineering costs. They solved the problem of unreliable supply by having
assemblers divide their parts order between 2 or more members of their supplier
group, to prevent anyone letting down on delivery reliability or quality. This
way when one supplier falls short on quality or reliability, the assembler does
not dismiss the company; instead, they shift a fraction of the business from
that supplier to its other source for that part for a given period of time as a
penalty. Similarly when developing software, understanding the nature of the underlying
problem to be solved and coming up with a well-organized division of the
problem so that it can be easily solve (with potential problems mitigated) is
*Separation of Concerns:
a computer program into distinct sections, such that each section addresses a
separate concern is the underlying goal of the Separation of Concern Principle.
Toyota does this by separating its production concern with its supplying
concern while still emphasizing interdependence between the two organizational separations.
Toyota, factory workers share a fate with their employer and suppliers share a
fate with the assemblers. The company’s auto production is divided into
concerns of the assembly production and concerns of the suppliers. Each section
is mainly unaware of the details of the other concerns, yet both are able to
work efficiently together to create a quality auto product. Similarly in
software development, the Separation of Concern Principle is exemplified in developing
modular programs. Each modular encapsulates its information inside a section of
code that has a well-defined interface, yet the modular are able to work
together efficiently and run quality software.
*Occum’s Razor (KISS):
Occam’s Razor encourages us to eliminate unnecessary elements that would
decrease a design’s efficiency. Toyota did this by and directly finding out
what customer wants and coordinating the supply chain resourcefully.
employee goes through extensive market research to discover the needs of their
customer. In team meetings, the needs are shared and the car parts are built to
directly give customers what they need. This uses the Occam’s Razor Principle
because the customer’s demand assumptions are eliminated and the company can
efficiently built and sell their cars. Because the customer is buying a car
tailored to his/her needs, the price bargaining is almost eliminated and
discounts are unnecessary to get rid of a car.
Toyota coordinates its supply chain so that changes can be easily made. For
example when consumers demanded high performance 4 cycle engines and
disregarded the rising energy prices, engineers worked hard on refining their engine
design details before informing suppliers of the specs they need. Designing
first and then coordinating with suppliers eliminated the ambiguous problems
that come with producing a more complex car with additional parts.
a software, finding out the customer’s desires, purpose for the software and
requirements first and then fulfilling those requirements through carefully
designing the software well can make the process more effortless; thus using
the Occum’s Razor Principle like Toyota.
The book “The Machine that Changed
the World” disclosed more beneficial information than what was covered in this
paper. In a future with rapidly developing technologies and
flexible/reprogrammable robots, a well design system will still be essential.
Toyota’s relentless oversight of every design, production and logistics process
will always be ideal, regardless of industry. Therefore designing software first
with all the requirements in mind before implementation will forever be ideal.