Podcast: Play in new window | Download (41.0MB) | Embed
Subscribe: Apple Podcasts | Spotify | Email | RSS | More
Kaizen is the Japanese word for “continual improvement”. Kaizen revolutionized industrial production, first in Japan, but later in America, and it can help you improve your own development process. This is especially helpful if you are in management, but you can still get a lot out of these concepts even if you aren’t.
“Beej and I happen to have a friend that was an industrial psychologist who introduced us to the concept.”
The kaizen process can help you refine your software development process, reducing bugs and improving your ability to deliver software on time and under budget. This process removes the “woo-woo” and “feels” aspects of agile as commonly practiced and lets your team react to hard numbers. This helps you both support the decisions you made to management and to make better ones more quickly.
12:50: History of Kaizen
“This is mostly taken from Wikipedia.”
It started within the Training Within Industry program during the 1940s. The initial premise related to American manufacturing during the war years, and was focused on small, incremental changes over time, rather than large changes that might have constituted a risk. As part of the Marshall Plan after WWII, American forces worked on rebuilding Japanese industry. The Civil Communications Section (CCS) developed a management training program that taught statistical control methods. This was taught by Homer Sarasohn and Charles Protzman during 1949-1950
“You may have a resource today that you may not have next week.”
It was after this point that W. Edwards Deming came into the picture. You might have heard of Deming at some point, as he was a major champion of statistical process control and one of the key people in Japan’s post-war growth into an industrial superpower. He is considered to have had more influence on Japanese industry than any non-Japanese person. He didn’t get a lot of recognition in the US until the early 90s, when he died, but his principles have seeped into American manufacturing as well. The Deming prize in Japan is named after him and he was awarded the Order of the Sacred Treasure, which is an honor granted by the emperor of Japan.
“We’re better than we used to be but people expect software to crash constantly.”
This dedication to continual improvement in manufacturing changed Japanese industry from one that had a reputation of making cheap, low-quality crap, to one that could take on American manufacturing, and often win (at least, until we started taking the ideas more seriously).
18:02 What’s the point of it?
“If you’re in a business environment, you probably can’t take a year off development to improve your environment.”
The point is to be able to surface incremental improvements in your processes, without excessive downtime that can create risk. In Toyota’s production system, personnel are expected to stop production lines if they notice an abnormality. When this happens they and their management will suggest improvements, which are then quickly implemented in the process.
“It’s one of those things where I’d like to just stop it and rewrite the whole thing.”
The cycle of Kaizen is Plan, Do, Check, Act. This is also known as the Shewhart Cycle or PDCA (or PDSA). Some variants of the methodology (notably Toyota’s) add an addition “O” step at the beginning that refers to observing the current situation before planning the next step.
“Obviously time is the most expensive asset that programmers have.”
There are numerous things in a business environment that this improves. It helps reduce waste, both in terms of time and materials. It reduces manufacturing defects, which improves product reliability in the field. It empowers employees to improve the manufacturing process, which improves morale and puts everyone in a position of looking for improvements instead of just a select few.
23:42 The steps of kaizen.
During this phase, you’ll determine what’s going on with the existing system, including taking actual measurements. It’s important to note that this is a “measurement” step, not a “feelings” or “guessing” step. You need real concrete data here to prove that your improvement actually helped things.
This is where you come up with your objectives and the process to achieve them. This also includes defining what success actually is. This requires actual measurable goals. It’s not about the feels.
This is where you actually do the work to fix the situation, including the collection of data for use in the following steps. It is extremely important that you measure during this phase, in order to compare to your earlier baseline.
In this phase, you compare the new results you obtained to the previous ones you collected during the observation phase. You may want to chart the data you’ve collected over several PDCA cycles, especially if you are evaluating success based on multiple criteria.
If the new process is better than the old one, this is where you make it official and it becomes the new baseline. If the new process isn’t better, then you don’t implement it.
32:35 How to use this yourself in a development lifecycle.
“It’s hard to argue with numbers because there’s so many of them.”
If you are in an agile environment, a lot of this is already in place with the typical agile lifecycle. Odds are also good that your agile process is missing some critical things for this to work. You have to measure your current state. “The app is slow” is not a measurement, but an opinion. You have to have a good definition of success and you have to a means of measuring it. You have to actually collect and use your measurements. You have to actually implement the improvements you discover.
If you are doing waterfall, this will be more difficult as your process doesn’t really support iterative change (or the iterations are too long to be useful).
To a large degree, kaizen can be considered a refinement of what you are probably already doing with agile, mostly by focusing on letting data drive your decisions. This will largely require plugging in things like analytics packages, running automated code tests and the like to be able to get useful data in a timely manner. For instance, if you are trying to improve performance, you’ll need to actually measure things like memory usage, time at each stage of a process, etc. You’ll have to have a baseline of performance and you’ll have to do this on your “improved” version of the code. You’ll need to compare the performance between the two versions, which means you’ll need the data in the same format.
IoT Incubator for Growing Bacteria
The incubator is basically a styrofoam cooler that includes a fan, temp sensors, and heating pads. These are controlled via an Arduino style microcrontroller connected to temperature sensors. The heating pads and fans are used to maintain constant temperature within the container. The microcontroller turns these on and off as needed based on data from the sensors. All the data collected can be stored in the cloud and accessed from a web or mobile interface.
- SparkFun ESP8266 Thing
- SparkFun DS18B20 Temperature Sensor
- LM35 Temperature Sensor
- SparkFun Heating Pad
- Fairchild semiconductor
- Darlington High Power Transistor
- Mfr 25frf52 1k sml
- Resistor 1k ohm
- Generic 5v DC Fan
- Styrofoam cooler
Tricks of the Trade
This is a bit of a rant about the Equifax breach. It’s a business opportunity. There is significant market opportunity in the manufacture of handcuffs, judging by our government’s unwillingness to use them. Clearly they are rare…