This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Thesis: Agile software development requires little or no up‐front analysis. TDD and Refactoring will get you there. Requirements will change anyway, so why bother?
Antithesis: You cannot build value into software until and unless you understand the problem you are solving, and how you propose to solve it
Synthesis: Determine the knowns (don’t play dumb) and be guided by them. But defer decisions when possible, as you’ll know more tomorrow
Thesis: Don’t build things until you know you need them. Building in anticipation leads to excessive complexity and unnecessary cost
Anti‐thesis: Inadequate up‐front design leads to brittle and viscous systems that collapse in the face of new requirements
Synthesis: Design to knowns, but adhere to the critical qualities, principles, practices, and disciplines that reduce the risk and waste of changing the system later
Principles:– General guidance that leads us to good results. Can appear in many different ways, and are not always achievable, but when they are not followed risk is incurred
Based on the work of Bertrand Meyer, and ultimately a product of pre‐OO thinking by Ivar JacobsenJacobsen: “All systems change during their life cycles. This must be borne in mind when developing systems expected to last longer than the first version”Meyer: “Software entities (classes, modules, functions, etc.) should be open for extension, but closed for modification”
Practices:– Built‐in, automatic activities that are always followed regardless of circumstance.
– Examples from non‐software domains include: Sterilizing instruments for doctorsRetaining all documents for lawyersMeasure twice before cutting in woodworking
– A practice must be simple, low‐cost, valuable, and easy to promote across the entire team
A simple practice that promotes the separation of use from constructionIs the topic of another entire presentation – We’ve got a recorded version available
Discipline: – A shared approach to doing work, adopted and adhered to by the team. Requires good training and a commitment of time/effort to adopt, but has a commensurate value associated with it.
– Also creates shared language elements that promote communication and therefore collaboration
Not simply “knowing the patterns”, but a complete design paradigm based on them. Includes analysis, design, implementation, and how patterns work together.
– Test‐Driven Development (including Refactoring)Not simply “up‐front testing”, but using tests to create executable specifications that drive development forward.
“Improving the Design of Existing Code”Behavior‐Preserving Change of code – Same outward effect as before– Same tests pass as before– Design/Quality is improved
*Refactoring: Improving the Design of Existing Code by Martin Fowler
One big virtue of Test‐Driven Development /Design is that it drives the “testability” issue to the forefront in design– A class that is too tightly coupled will be hard to test, because all of its dependencies will have to be tested with it
– A class that is weakly cohesive will be hard to test, because all possible combinations of its multiple responsibilities will have to be tested, due to lack of encapsulation
– Redundancies in the system will produce redundancies in the test(s)
Software is valuable relative to the world around us, and the needs it has…The world, and its needs, changeFor software to retain its value, it must changeThe pace of change is increasingSoftware must always be in a state of evolution
Disciplines, Principles, and Practices make it possible…
Complexity When You Need it– But not before you need itGood Design reduces riskRisk is WastefulOver‐Design is Wasteful
Emergent Design:– Qualities can define “good”…– Principles can guide us…– Practices can protect us…– Disciplines can empower us…– …but you can’t stop thinking
Design Patterns Explained, A New Perspective on Object‐Oriented Design. Shalloway, TrottEmergent Design: The Evolutionary Nature of Professional Software Development. BainEssential Skills for the Agile Developer: A Guide to Better Programming and Design. Shalloway, Bain, Pugh, KolskyInterface Oriented Design. PughLean‐Agile Acceptance Test‐Driven Development. Pugh.Lean‐Agile Pocket Guide for Scrum Teams. Shalloway, TrottLean‐Agile Software Development: Achieving Enterprise Agility. Shalloway, Beaver, TrottPrefactoring. Pugh
See www.netobjectives.com/resources/bibliography for a full bibliography
Business & AgileThis webinar series, co‐sponsored by Digite, provides a wide view of Agile by starting with presentations on what Agile is and the main methods for adopting it ‐ Scrum and Kanban. It then discusses different ways to start an Agile adoption as well as the dangers of certain common methods of adopting Agile. It then proceeds to investigate different methods on how to scale Agile.
– Agile Implementations: Overviews of Scrum, Kanban, and ScrumbanMay 9, 2013, 9am‐10am PDT
– How to Start an Agile ImplementationJune 5, 2013, 9am‐10am PDT
Scrum Gathering 2013 – Each of the Scrum Values guides you down the path of self‐discovery during this
conference wherein the presenters help identify where you might "Up the Ante."– May 6 – 8– Westin Las Vegas Hotel Casino & Spa, Las Vegas NVAgile Development/Better Software West 2013 – Join industry experts and peers for a week jam‐packed with learning sessions that will
help you make a powerful impact in your job role and for your company.– June 2 – 7– Caesars Palace, Las Vegas NVÜberConf 2013 – Java is a technology platform and ecosystem. ÜberConf will educate developers and
explore the powerful languages and tools which are changing the way we create software using the Java Platform.
– July 16 – 19– Westin Westminster, Westminster CO
Net Objectives offers the most comprehensive Lean‐Agile training in the world. Our offerings include Lean, Agile Analysis, Design Patterns, Test‐Driven Development, and Lean‐Agile Testing.
Our approach is a blend of principles and practices to provide a complete team and/or enterprise wide training solution.
Certification Programs by Net Objectives
Net Objectives offers certification programs that provides a road‐map of knowledge as well as resources to get there.• Lean‐Agile Project Management Certification• Advanced Lean‐Agile Project Management for
Scrum Masters• Business Product Owner Certification
Net Objectives is not affiliated with the Scrum Alliance
Gap Analysis (“Assessments”)
An effective way to embark on an enterprise level transition to Lean‐Agile methods is to start with an analysis of where you are, where you want to go and options on how to get there that are right for you and your budget.
Lean‐Agile Coaching
While training provides foundational knowledge and is a great jump start, coaching is another effective way to increase the abilities of teams.
Our coaches work with your teams to provide guidance in both the direction your teams need to go and in how to get there.
Coaching provides the knowledge transfer while working on your own problem domain.