Lean/Agile Myth #12• Lean and Agile Methodologies are only applicable for greenfield opportunities - Not applicable for brownfield - Not applicable for Package Integration - Not applicable for Application Maintenance Services (Yesterday)
Agenda• What are Package Implementation Projects ?• How are Package Implementation Project typically done?• What aspects of Package Implementation projects could be done in a Lean Manner?• Questions
Package Implementation Projects• Package Implementation Projects are projects that typically involves a Commercial Off The Shelf(COTS) product that needs to be integrated into the client environment.• These products involve more or less configuration and customization depending on the product and fit to the client’s requirements.
Audience Participation• Question #1 – Why do companies choose COTS products? - Time to Market? - Cost? - Transfer of Risk? - Shared Cost of Ownership? - Available resources/capacity? - Product fit to Requirements? - Others?
Reasons for choosing COTS products• Surprisingly, the two main reasons for selecting COTS products to address a business problem are: - Transfer of Risk - Shared Cost of Ownership• The one reason which should have greater importance but usually is not taken into consideration: - Product Fit to Requirements (read Cost) - Rule of thumb is that an 80-90% fit is required to make a COTS implementation cost effective. Otherwise possibly more money would be spent customizing a COTS package than building new.
• How are Package Implementation Project typically done?
Contracting• This is done is a very adversarial way to try and anticipate all aspects of the relationship to ensure both parties are covered.• The contracts are very detailed and allow for very little change and modification• Most of the contract deals with how the companies will interact and there is little to any mention of the business problem being solved.
Specification• Specification follows the contracting process and the emphasis is to create extremely detailed specification documents to define all the functionality required.• Of course there are always items not thought of or not detailed enough.• Many time the product rationale is used to defend functionality. (i.e. that is how the product works) This can be initially accepted by the business but frequently requires change later when reality hits.
Testing• Testing of the COTS application is then problematic and it builds upon the specification which was built upon the contract.• Testing then attempts to verify that the application works as documented. Lost in this process is whether the application is actually addressing the business problem.
Implementation• Implementation is then built upon the testing which was built upon the specification which was built upon the contract and the question that is asked at Implementation is not: - Does this solve the business problem?• Rather it is: - Can you accept this solution and go live?
Lean Principles Refresher• Before we discuss how Package Implementation can be done in a Lean manner, let’s do a Lean Principles Refresher
Lean Software Development• Lean Software development is a style of software development that emphasizes customer satisfaction through continuous delivery of functional software. In contrast to traditional software development methods, lean developers liaise continuously with business clients.• Their objective is to deliver working software as frequently as every two weeks during a project, and welcome changes to the requirements in response to evolving business needs.
Lean Software Development• The most crucial aspect of Lean is the execution of the project in iterations and quick feedback loops possible because of these iterations. It is essential to note that these iterations to not just apply to construction, they also apply to the following tasks: - Project Management and Planning - Analysis - Technical Design - Testing - Deployment
Lean Software Development• Iteration planning is ‘the’ key planning initiative - Iterations need to be planned in conjunction with the client to accomplish the following: • Deliver functionality to define the cadence and tempo of the project • Deliver functionality to deliver real value to the client • Deliver functionality to reduce and minimize risk for the entire project • Lessons learned from one iteration must feed into subsequent iterations so that we don’t execute the project in iterations with similar results, but that we execute the project in iterations with better results. - We execute better, smarter, and quicker
Lean Software Development Principles• Eliminate Waste - The three biggest wastes in software development are: - Extra Features - Churn - Crossing Boundaries• Build Quality In - If you routinely find defects in your verification process, your process is defective. - Mistake-Proof Code with Test-Driven Development - Stop Building Legacy Code - The Big Bang is Obsolete
Lean Software Development Principles• Create Knowledge - Planning is useful. Learning is essential. - Use the Scientific Method - Standards Exist to be Challenged and Improved - Predictable Performance is Driven by Feedback• Defer Commitment - Abolish the idea that it is a good idea to start development with a complete specification. - Break Dependencies - Maintain Options - Schedule Irreversible Decisions at the Last Responsible Moment
Lean Software Development Principles• Deliver Fast - Lists and queues are buffers between organizations that simply slow things down. - Rapid Delivery, High Quality, and Low Cost are Fully Compatible - Queuing Theory Applies to Development, not Just Servers - Limit Work to Capacity• Respect People - Engaged, thinking people provide the most sustainable competitive advantage. - Teams Thrive on Pride, Commitment, Trust, and Applause - Provide Effective Leadership - Respect Partners• Optimize the Whole - Brilliant products emerge from a unique combination of opportunity and technology. - Focus on the Entire Value Stream - Deliver a Complete Product - Measure UP
• What aspects of Package Implementation projects could be done in a Lean Manner?
Audience Participation• Question #2 – How could we implement an COTS application in a Lean Manner? - Visual Project Management? • i.e. dashboards/Ticket Boards - Iterations? - Requirement Management? - Implementation? - Logistics? - Lean Project Management? • i.e. Daily Stand ups
Requirements Management• Requirements Management is key to any successful project. For Package Implementation projects it becomes even more important to ensure everyone understands the requirements.• Frequently Use Cases are the traditional way of documenting requirements.• A much better way of defining requirements are: - User Stories - Test Cases
User Stories• A user story of one or more sentences in the everyday or business language of the user that captures what the user wants to achieve.• They are typically in the following format: - "As a <role>, I want <goal/desire> so that <benefit>"• User Stories are much more concise that Use Cases and provide this extra communication and detail required when dealing with an external and somewhat unknown COTS product.• These User Stories can then be collected together to define features of the system.
User Stories• One challenge with User Stories is the ability to document batch on non end user processes• Honestly we need to address this on all Lean project
Test Cases• Traditionally Test Cases are not used for Requirements Management but rather for the testing process itself.• Ultimately, there are no better requirements than to list the test cases that will confirm the requirement has been met or not met.• These Test Cases should be defined at the start of the project and with User Stories will define the system requirements.
Iterations• Traditionally, Package Implementations follow a Big Bang approach. All the functionality is analyzed, designed, coded, tested, and implemented at once.• This does not take advantage of one of the main tenets of Lean to execute better as we progress through the project.• It is highly recommended that Package Implementations also be implemented in iterations. These iterations should go right through to production.
Iterations• It is important to remember that these iterations are not just for development and testing, but for all phases of the project including testing and implementation.• Sometimes critical items are left out of iterations like Reporting and Data Conversion. This is not recommended. An iteration must be able to stand on it’s own.
Iteration Schedule• Agreement on scope and schedule• Execution of required scope• Demonstration of iteration scope - This is more than a simple project led demonstration - The business execute all of the User Stories and Test cases to ensure the expected outcome occur• Feedback is then solicited for new User Stories or test cases that should be added to future iterations• Clients are then asked to sign off that iteration
Implementation• For some unknown reason the bulk of Package Implementations still implement using the Big Bang approach• Very rarely are they implemented using the parallel or pilot approach• This adds a great amount of risk to the projects.
Contractual• Include Contractual incentives - profit sharing for finishing early - Cost sharing for finishing late - Ability and incentive to add additional business value • Concept of trading User Stories
Logistics• Lean Software Development recommends having the project team and business co-located.• For Package Implementations, I would also recommend that the vendor should also be co-located.
Conclusion• The principles of Lean Software Development are applicable to all types of projects• They are some areas of Package Implementation projects that can benefit greatly. These are: - Requirements Management - Iterations - Implementation - Contractual - Logistics