by Andrew N
As the world changes, so does our business, we become focused on building products but we love to ensure that they are the best. This leads to some troubles of how this can be done, how are you sure that your product is made completely, and it is the best product possible. But not only does this apply to physical products it also applies to software development. Because in order to be the best, there are many things that you need to take into account. Many people claim they have a great development method to ensure that your software will be the best it can be, most of these methods come from the simple SDLC model as the father but some come from a whole other world. This topic is important to this class due to the fact that it shows the many different methods used in software development and system design. Lean will show how important it is that when trying to develop any project it is important to try and reduce waste and to consistently keep the project updated.
One methodology that is now becoming very popular for software development is a method known as Lean Software Development. It was developed by Robert Charette in 1993 (Anderson, 2012). This method was adapted from the management that Toyota was popular for using in their manufacturing and industrial engineering processes. This method has been around for a while and for the longest time it was used as a reason to explain while Agile method were the best methods to use, but now it has taken on a whole world of its own (Anderson, 2012). Now Lean is known as something that is popularly used side-by-side with Agile methods (Woods, 2010).
Lean is very interesting because it does not have a specific process to it, it is mostly used to create a set of guidelines during the software development process. It creates some confusion because most projects are known for having a specific recipe when this one simply allows someone to choose their own method but make sure they keep an order of what needs to be done or stratified. Lean became very popular in the 2000s when companies were focused more on cost savings (Poppendieck, 2012). With lean methodologies it allows for motivated and empowered teams which shows that this leads to building products faster and with better quality. There are many places where Lean can help bridge the gap to Agile practices because Agile is known for being team based and being focused on short term plans where as lean focuses on a consistent flow of the product even after the product is released. Although Lean is a great software development process it does not fit for all practices one of which being flow and queuing theory where it can lead to overemphasizing (Poppendieck, 2012). Agile methods are also commonly known for having problems on a large scale, where an issue of iteration can risk not being seen when integrated into the rest of the software, where as with lean methods you are more likely to catch this. The pairing of Agile and Lean allow for a combination of the rapid feedback that comes from Agile and the Lean system where the work is based on value of each output which allows it to be combined into one product (Poppendieck, 2012).
In this system they developed a set of guidelines which consists of: creating value for the customer, eliminating waste, optimizing value streams, empower people, and continuously improve. This is also a process that is continuously done throughout the life of the product (Poppendieck, 2012). These guidelines are then paired with the Lean principles when in the development the principles are: follow a systems thinking and design approach, emergent outcomes can be influenced by architecting the context of a complex adaptive system, respect people, use the scientific method, encourage leadership, generate visibility, reduce flow time, and reduce waste to improve efficiency (Anderson, 2012). The main focus of all of the steps is to eliminate waste in order to make sure that you provide the best product to your customers.
Each principle provides a different idea behind it, the idea behind following a systems thinking and design approach is because a systems design approach is known for having a Plan-Do-Study-Act process which allows for groups to develop an understanding of their capability before they start their work (Anderson, 2012). It also leads to optimization due to the fact that this viewpoint also requires considering the demands made by the customer and their desired outcomes. The idea of using the scientific method allows the use of statistical process control charts of raw data for lead time and it helps the developer(s) understand the capability of the system (Anderson, 2012). Leadership being encouraged allows for different visions and strategies throughout the group rather than from one person. Most importantly the idea of reducing waste allows for cleanup of their deliverables and gets rid of transaction costs from performing setup and cleanup (Anderson, 2012). So in order to do so this means that they should provide larger batches of work instead of constant take down and assembly.
Lean seems to be the best methodology of trying to limit the amount of work in the typical Agile system and most importantly it allows for the update of the product to ensure highest quality (Woods, 2010). Although there are no fixed guidelines for the Lean Software Development yet it does seem to be a great tool with general principles and guidelines that provides great results when paired with Agile methods.
Anderson, D. (2012, November). Lean software development. Feb. 10, 2014.
Poppendieck, M., & Cusumano, M. A. (2012). Lean Software Development: A Tutorial. IEEE Software, 29(5), 26-32. doi:10.1109/MS.2012.107
Woods, D. (2010, January 12). Why lean and agile go together.