{"id":489,"date":"2009-10-27T13:49:36","date_gmt":"2009-10-27T12:49:36","guid":{"rendered":"http:\/\/blog.eweibel.net\/?p=489"},"modified":"2009-10-27T20:19:05","modified_gmt":"2009-10-27T19:19:05","slug":"kaizen-and-software-engineering","status":"publish","type":"post","link":"https:\/\/blog.eweibel.net\/?p=489","title":{"rendered":"Kaizen and Software Engineering"},"content":{"rendered":"<p><a href=\"http:\/\/en.wikipedia.org\/wiki\/Kaizen\">Kaizen<\/a> is a very interesting approach, also in the software industry. On Wikipedia you\u2019ll find the following description of Kaizen:<\/p>\n<blockquote>\n<p>Kaizen is a Japanese word adopted into English referring to a philosophy or practices focusing on continuous improvement in manufacturing activities, business activities in general, and even life in general, depending on interpretation and usage.<\/p>\n<\/blockquote>\n<p>Kaizen aims to eliminate waste, to improve the process or activities (techniques). I heard about Kaizen the first time at an economic course, and I found the <a href=\"http:\/\/en.wikipedia.org\/wiki\/Muda_%28Japanese_term%29\">Muda (seven wastes)<\/a> very interesting. I tried to find locations or situations where you can detect such wastes:<\/p>\n<p><strong>Overproduction<\/strong><\/p>\n<blockquote>\n<p>Overproduction happens each time you engage more resources than needed to deliver to your customer. For instance, large batch production, because of long change over time, exceeds the strict quantity ordered by the customer. For productivity improvement, operators are required to produce more than the customer needs. Extra parts will be stored and not sold. Overproduction is the worst Muda because it hides or generates all others, especially inventory. Overproduction increases the amount of space needed for storing raw material as well as finished goods. It also requires a preservation system.<\/p>\n<\/blockquote>\n<p>Overproduction happens then, when you don\u2019t follow the <a href=\"http:\/\/en.wikipedia.org\/wiki\/You_ain%27t_gonna_need_it\">YAGNI principle<\/a>. Don\u2019t try to make assumptions about the future or the customers. Just produce the things as <a href=\"http:\/\/en.wikipedia.org\/wiki\/KISS_principle\">simple<\/a> as possible.<\/p>\n<p><strong>Unnecessary transportation<\/strong><\/p>\n<blockquote>\n<p>Each time a product is moved it stands the risk of being damaged, lost, delayed, etc. as well as being a cost for no added value. Transportation does not make any transformation to the product that the consumer is supposed to pay for.<\/p>\n<\/blockquote>\n<p>Don\u2019t build chatty interfaces, make use of the <a href=\"http:\/\/msdn.microsoft.com\/en-us\/library\/ms998421.aspx\">coarse-grained interface pattern<\/a>.<\/p>\n<p><strong>Inventory<\/strong><\/p>\n<blockquote>\n<p>Inventory, be it in the form of raw materials, work-in-progress (WIP), or finished goods, represents a capital outlay that has not yet produced an income either by the producer or for the consumer. Any of these three items not being actively processed to add value is waste.<\/p>\n<\/blockquote>\n<p>Deliver early and often. Don\u2019t wait at the end of the project to deliver the whole software at once. If you deliver your software earlier and often, you will receive more feedback and so the costs to fix bugs will reduce. Also the customer will be happier because he could use much earlier important parts of your software and he could observe better the progress of the software project.<\/p>\n<p><strong>Motion<\/strong><\/p>\n<blockquote>\n<p>As compared to Transportation, Motion refers to the producer or worker or equipment. This has significance to damage, wear, safety. It also includes the fixed assets, and expenses incurred in the production process.<\/p>\n<\/blockquote>\n<p>Good hardware and a good chair is very important to be productive. Slow computers are just horrible to work with and a bad or cheap chair is not very good for the health of the software engineers. If the software engineer feels comfortable, he\u2019s much more able to be concentrated or work longer.<\/p>\n<p><strong>Defects<\/strong><\/p>\n<blockquote>\n<p>Whenever defects occur, extra costs are incurred reworking the part, rescheduling production, etc.<\/p>\n<\/blockquote>\n<p>Reduce Defects. Unfortunately there doesn\u2019t exists a programming language where it isn\u2019t possible to make no errors. So testing is absolutely necessary. Do unit testing with or without TDD, but a modern software project should have tests (unit tests, integration tests or acceptance tests, etc.). Without tests you don\u2019t have a safety net (regression tests) if you change something in your project. One of the worst error a customer could find is one which he already found and was fixed.<\/p>\n<p><strong>Over-Processing<\/strong><\/p>\n<blockquote>\n<p>Over-processing occurs any time more work is done on a piece than what is required by the customer. This also includes using tools that are more precise, complex, or expensive than absolutely required.<\/p>\n<\/blockquote>\n<p><a href=\"http:\/\/en.wikipedia.org\/wiki\/Overengineering\">Overengineering<\/a> and Patternoholics are a danger to do more than it is necessary.<\/p>\n<p><strong>Waiting<\/strong><\/p>\n<blockquote>\n<p>Whenever goods are not in transport or being processed, they are waiting. In traditional processes, a large part of an individual product&#8217;s life is spent waiting to be worked on.<\/p>\n<\/blockquote>\n<p>Slow computers where you have to wait for a build step or just for the compiler are an unnecessary waste. Also if you wait for an answer from your customer or an other teammate. Don\u2019t wait, make a follow-up, make a phone call or write an other mail. Also don\u2019t let the others wait. If you receive an email, answer it or write a short email to say that you will response later, so that the other knows, that you saw his mail and you planed to response him.<\/p>\n<p><strong>Conclusion<\/strong><\/p>\n<p>One important question is: \u201cDo you add value to your solution, product or service which the customer is ready to pay for?\u201d This question or view isn\u2019t new. It focus all the actions in software engineering on business value, the value which the customer pays for. To reduce the waste you have to improve (Kaizen) your code, methods and communication with others. The seven wastes are a help to find locations or situations where waste could happen.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Kaizen is a very interesting approach, also in the software industry. On Wikipedia you\u2019ll find the following description of Kaizen: Kaizen is a Japanese word adopted into English referring to a philosophy or practices focusing on continuous improvement in manufacturing activities, business activities in general, and even life in general, depending on interpretation and usage. Kaizen aims to eliminate waste, to improve the process or activities (techniques). I heard about Kaizen the first time at an economic course, and I&#8230;<\/p>\n<p class=\"read-more\"><a class=\"btn btn-default\" href=\"https:\/\/blog.eweibel.net\/?p=489\"> Read More<span class=\"screen-reader-text\">  Read More<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_exactmetrics_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[17,5,14],"tags":[],"class_list":["post-489","post","type-post","status-publish","format-standard","hentry","category-agile","category-good-practices","category-software-engineering"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/plOV9-7T","jetpack_sharing_enabled":true,"jetpack-related-posts":[{"id":1248,"url":"https:\/\/blog.eweibel.net\/?p=1248","url_meta":{"origin":489,"position":0},"title":"VDD &#8211; the new programming manifesto?","author":"Patrick","date":"17. Jul 2012","format":false,"excerpt":"When I was at the NDC, I had also the possibility to visit with colleagues the city of Oslo. During a stop in front of a little shop, a colleague discovered a post card about Viking laws. When I read it, I was really surprised how well the laws fit\u2026","rel":"","context":"In &quot;Agile&quot;","block_context":{"text":"Agile","link":"https:\/\/blog.eweibel.net\/?cat=17"},"img":{"alt_text":"VikingLaws","src":"https:\/\/i0.wp.com\/blog.eweibel.net\/wp-content\/uploads\/VikingLaws_thumb1.jpg?resize=350%2C200","width":350,"height":200},"classes":[]},{"id":1121,"url":"https:\/\/blog.eweibel.net\/?p=1121","url_meta":{"origin":489,"position":1},"title":"Speaking at the .NET Usergroup Bern","author":"Patrick","date":"4. Dec 2011","format":false,"excerpt":"During a Lunch event organized by the .NET Usergroup Bern at the 7 December 2011 in Bern I will speak about the following question: Is Software design overrated? Yes, I know, it's provocative. And obviously wrong. Really? I'm not so sure. After 10 years as software engineer and some years\u2026","rel":"","context":"In &quot;Design patterns&quot;","block_context":{"text":"Design patterns","link":"https:\/\/blog.eweibel.net\/?cat=3"},"img":{"alt_text":"image","src":"https:\/\/i0.wp.com\/blog.eweibel.net\/wp-content\/uploads\/image_thumb18.png?resize=350%2C200","width":350,"height":200},"classes":[]},{"id":1117,"url":"https:\/\/blog.eweibel.net\/?p=1117","url_meta":{"origin":489,"position":2},"title":"Speaking at the .NET Usergroup Zentralschweiz","author":"Patrick","date":"18. Nov 2011","format":false,"excerpt":"I'm holding at the .NET Usergroup Zentralschweiz a short talk about \"Know your warm-up\", see my last blog post. I'll explain what I developed exactly and how I train new employees with this warm-up. I will also demonstrate the sample application which a new employee develops from scratch. Come to\u2026","rel":"","context":"In &quot;Good practices&quot;","block_context":{"text":"Good practices","link":"https:\/\/blog.eweibel.net\/?cat=5"},"img":{"alt_text":"dotnetzentral","src":"https:\/\/i0.wp.com\/blog.eweibel.net\/wp-content\/uploads\/dotnetzentral_thumb.png?resize=350%2C200","width":350,"height":200},"classes":[]},{"id":1213,"url":"https:\/\/blog.eweibel.net\/?p=1213","url_meta":{"origin":489,"position":3},"title":"Quality isn&rsquo;t a tool&ndash;You can&rsquo;t install it!","author":"Patrick","date":"20. Jun 2012","format":false,"excerpt":"Did you ask yourself why a team in an organization produces very good software quality and another team in the same organization just struggles to get things done and those things are in really bad quality? Interesting is also that for both teams exists the same rules (methologies, procedures, tools,\u2026","rel":"","context":"In &quot;Agile&quot;","block_context":{"text":"Agile","link":"https:\/\/blog.eweibel.net\/?cat=17"},"img":{"alt_text":"time, quality and money concept","src":"https:\/\/i0.wp.com\/blog.eweibel.net\/wp-content\/uploads\/Fotolia_36622856_S_thumb.jpg?resize=350%2C200","width":350,"height":200},"classes":[]},{"id":1082,"url":"https:\/\/blog.eweibel.net\/?p=1082","url_meta":{"origin":489,"position":4},"title":"Branch or not to branch","author":"Patrick","date":"22. Aug 2011","format":false,"excerpt":"That is a question? Yes, it is a question which you should ask yourself before to create a new branch or reuse an existing branch. There are other practices or possibilities to create new features in an existing software, which I will show in this blog post. Also there are\u2026","rel":"","context":"In &quot;Good practices&quot;","block_context":{"text":"Good practices","link":"https:\/\/blog.eweibel.net\/?cat=5"},"img":{"alt_text":"Fotolia_25836922_S","src":"https:\/\/i0.wp.com\/blog.eweibel.net\/wp-content\/uploads\/Fotolia_25836922_S_thumb.jpg?resize=350%2C200","width":350,"height":200},"classes":[]},{"id":499,"url":"https:\/\/blog.eweibel.net\/?p=499","url_meta":{"origin":489,"position":5},"title":"Favoured podcasts","author":"Patrick","date":"1. Nov 2009","format":false,"excerpt":"I migrated my desktop PC to Windows 7 Professional. I didn\u2019t choose the upgrade path, I install Windows 7 from scratch. So, after installing iTunes I had to register my favoured podcasts again: .Net .Net Rocks! Hanselminutes herding {code} Stackoverflow Polymorphic Podcast Alt.NET podcast Java The Java Posse Software engineering\u2026","rel":"","context":"In &quot;.NET&quot;","block_context":{"text":".NET","link":"https:\/\/blog.eweibel.net\/?cat=13"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"_links":{"self":[{"href":"https:\/\/blog.eweibel.net\/index.php?rest_route=\/wp\/v2\/posts\/489","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.eweibel.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.eweibel.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.eweibel.net\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.eweibel.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=489"}],"version-history":[{"count":6,"href":"https:\/\/blog.eweibel.net\/index.php?rest_route=\/wp\/v2\/posts\/489\/revisions"}],"predecessor-version":[{"id":495,"href":"https:\/\/blog.eweibel.net\/index.php?rest_route=\/wp\/v2\/posts\/489\/revisions\/495"}],"wp:attachment":[{"href":"https:\/\/blog.eweibel.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=489"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.eweibel.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=489"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.eweibel.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=489"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}