Posted in Information Technology & Systems, Total Reads: 398
Definition: Lean Programming
Lean programming is a term used in computer programming which deals with improving the efficiency and reducing the waste in the process of developing a computer program. It is based on the concept ( originated in a Japanese industry, incorporated by the US in 1980s) that efficiencies can be optimized and waste can be managed at all levels of the organization be it at individual level, departmental level, interdepartmental operations, the company as a whole or the relationship of the firm with its suppliers and customers.
Lean programming is based on certain rules. Some of them are: a) immediate artifacts and waste should be kept at a minimum level, b) documentation must be concise and relevant and c) views of employees and customers should be taken regularly and seriously. The elimination of defects in a software application is the prime purpose of lean programming. This leads to reducing the amount of code with bug free products which eventually leads to reduction of inventory and waste. For example, small samples of defect free codes are often used to build large applications to meet the client needs. Thus basic goal is continuous improvement at all levels and every stage of the company.
Lean software development can be summarized by seven principles. They are:
1. Eliminate waste: Incomplete work, extra features, waiting for the information, excess paper work etc.
2. Amplify learning: Running tests immediately after code is written, Usage of short iteration cycles, Increasing feedback sessions with customers for improvements etc.
3. Decide as late as possible: It refers to delaying decisions as long as possible so that they can be made based on facts and not on predictions and assumptions.
4. Deliver as fast as possible: Liked by clients, quick delivery means less time for customers to change their mind, faster is the delivery longer is time until which decisions can be delayed.
5. Empower the team: People need support from the team leader, faith, motivation and assurance that they will not be interrupted during the completion of the task.
6. Build quality in: Customer should have an overall experience of the system (perceived integrity) , system’s different components must work together as a whole maintaining a balance between flexibility, efficiency, and responsiveness (conceptual integrity), Keeping simple, clear and minimum features in a code (refactoring) , code must be verified thorough testing at the end.
7. See the whole: Defects can be eliminated/reduced by decomposing the big tasks into smaller ones. Larger the system, greater is the importance of having well defined relationships between different vendors as more teams are involved in its development process.
The lean principals has to be understood and practiced by every member of the project in order to ensure success in the software development.