Lean approach: also in Tech fields
Usefulness of applying Lean in the software development process.
Software development is a complicated task, how many software production projects that you can think of, did not meet customer expectations or were finished with delay? Or just think on your own experience at university, in programming courses, how many times did you need to change your code to fix problems? Probably many times.
As you already read on this post, lean IT aims to eliminate waste. You may think, software is an intangible asset and no waste is involved. This is totally false. Waste, in this context can be writing excessive code and adding unnecessary features. Defects, which are common on software production, are also a type of waste.
“Only 16% of software projects are successful” (Standish Group)
Although delivering a perfect software product is complicated, Lean Software Development methodology may help you!
This methodology is characterized, in few words, by:
How do we identify elements which add value?
Prioritizing requirements is the main ingredient for satisfying that rule. We must take into consideration that priorities are dynamic, our customer can add, delete or change requirements throughout the process. That’s why it is important to include the customer in the prioritization stage, he is the one defining which are his priorities.
“80% of the useful functionality of a software application is described by 20% of the requirements” (Hibbs,Jewett & Sullivan, 2009)
Secondly, priorities must be re-evaluated in each iteration to make sure customer requirements are met. Please, be aware, that the one who will be using the product will be the customer not the software developers!
How are our customers going to participate in the process?
Indeed, this characteristic is what differentiates Lean from Agile, voice of customer is completely integrated in the process . Apart from being included in the requirements stage, they define also the acceptance tests for the testing stage. Also, customers are available in the design and implementation stages, in order to answer questions or resolve ambiguities. Keeping the customer informed is a must and access to the product by the customer during the development stage must be granted, it is needed. Finally, feedback cannot be forgotten, through every iteration, customers provide with inputs and monitor the progress. Customers are usually represented by a product owner, a profession which might be new to you. This product owner is the voice of the customer for the development team.
What are rapid iterations?
The standard approach for software development is the waterfall: Requirements, design, implementation, testing, feedback and deployment. But this is not effective at all, the requirements are only defined once, and feedback is not included throughout the process. Furthermore, defects are not solved on time, as they are dragged during all the process. Lean Software development solves that problem, implementing an iterative process, which includes rapid and incremental iterations, where each of them represents a “waterfall”. This approach leaves room for rapid problem solving and considering feedback from customers.
Does any famous company apply Lean Software Development?
Yes, Google. They take into account voice of the customer, they observe which features and functions are popular (prioritizing requirements) and observe daily usage behaviour (feedback) to guide future development. Also, they are not late launching their new products, these customer-driven innovations are often released in days or weeks.