Featured Whitepapers
- Apples, Oranges, and Acorns - All Agile Development Tools Are Not the Same
- One's Enough for Agile Application Development Management
- Requirements Management 101 – 4 Basics Everyone Should Know
- Tips on Requirements Traceability – Learn How to Control Change and Improve Quality
- Scaling Continuous Integration to Large and Distributed Teams
|
"And faith unfaithful kept him falsely true." - Idylls of the King, Alfred Lord Tennyson It is inherently difficult to codify/capture and hence transfer within teams and organizations system-software development craftsmanship. Simply put, the “essence” of agile-lean product (system-software) development is not a codifiable process or methodology. Believing so and calling it such conveys the wrong message, leads to confusion, misinterpretation, disappointment and waste. As an agile system-software development craftsman you focus on being agile-lean within dynamic real-time given situations and contexts with a strong reliance on tacit knowledge[1]; you do not do agile, you are agile. In this article, Is “Agile Methodology” an Oxymoron and Counterintuitive to Agile-Lean Product Development and Craftsmanship, I’ll explore the differences between a process and methodology. Then discuss why, in my opinion, the word process or methodology is a wrong word to use to label and encapsulate agile-lean product (system-software) development. I will also provide guidance how a team can move forward inspired and motivated to uphold the team’s agile-lean product (system-software) development approach, continuously improve and confident in the security such guidance provides. First, let me clarify my understanding of a process and methodology. According to Merriamm-Webster.com, the primary sense of the noun process is: a : progress, advance <in the process of time> b : something going on : proceeding 2 a (1) : a natural phenomenon marked by gradual changes that lead toward a particular result <the process of growth> (2) : a continuing natural or biological activity or function <such life processes as breathing> b : a series of actions or operations conducing to an end; especially : a continuous operation or treatment especially in manufacture 3 a : the whole course of proceedings in a legal action b : the summons, mandate, or writ used by a court to compel the appearance of the defendant in a legal action or compliance with its orders Thus, a process is holistic in nature and is devised with a specific goal in mind. While different organizations apply system-software development processes that are similar in many respects, their processes also differ in some ways. A system-software development process must be flexible enough to meet the needs of both a particular organization and a particular project. A methodology is a much broader concept than a process. The Random House Dictionary defines a methodology as “a set or system of methods, principles, and rules for regulating a given discipline….” The American Heritage® Dictionary of the English Language defines the two main senses of the term methodology as follows: “A body of practices, procedures, and rules used by those who work in a discipline or engage in an inquiry; a set of working methods….“The study or theoretical analysis of such working methods.” Dictionary.com gives this definition of the suffix -ology: a “branch of knowledge, science.” The Random House Dictionary says the word “method refers to a settled kind of procedure, usually according to a definite, established, logical, or systematic plan.” The American Heritage® Dictionary defines a method as a “procedure, especially a regular and systematic way of accomplishing something” or “the procedures and techniques characteristic of a particular discipline or field of knowledge….”
I have found the codification of system-software development past and present to be comprehensive and extensive bodies of knowledge that attempt to codify/capture the structure and substance of roles, tasks, artifacts, principles, guidelines, examples, templates, checklists, practices, activities and methods, targeting many different system-software development situations and contexts. “One size fits size all”, software development processes or methodologies don’t work. It isn't so much a problem with what is contained in a methodology but how it is packaged and its practicality of use. Methodologies end up being a large software development process repository, which is like a large pantry containing all the ingredients you would need to make any number of meals. Unfortunately, people don’t seem to realize or come to understand they don't need all of the ingredients for every project. What usually results is many projects using way too much process, which in turn results in more documentation, more design and less software. Also, trying to quickly find a specific answer to what you are looking for ends up to be an ineffective, time consuming and frustrating experience. "The six most important words: I admit I made a mistake. The five most important words: You did a good job. The four most important words: What is YOUR opinion? The three most important words: If you please. The two most important words: Thank You. The one most important word: We. The least important word: I." - Author Unknown The what, why, and how of agile-lean product (system-software) development and delivery is not one persons vision alone; to become reality it needs to be a "shared" vision through negotiation and compromise between individuals, the team and the organization. System-software development needs to be adapted to each specific situation and within context. Individuals and teams have different skill sets, levels of experience and levels of capability. Projects have different budgets, schedules, scope and risk profiles. Organizations have different value chains and target markets. Fundamentally, agile-lean product development is an empirical and adaptive system-software development approach to be guided by a general set of values, principles and practices – a philosophy and set of norms rather than a step-by-step process or methodology. Norms are the behavioral expectations and cues within a team or organization. This sociological term has been defined as "the rules that a group uses for appropriate and inappropriate values, beliefs, attitudes and behaviors. These rules may be explicit or implicit.” The following set of norms lays a pragmatic and adaptive foundation for the agile-lean product (system-software) development craftsperson to rally around and evolve. Values
The following values are from the 2009 Manifesto for Software Craftsmanship:
That is, in pursuit of the items on the left we have found the items on the right to be indispensable
The following values are from the 2001 Manifesto for Agile Software Development:
While there is value in the items on the right, we value the items on the left more
Principles
The following principles are from the 2001 Manifesto for Agile Software Development
Practices
Figure-1 – Candidate Practices Since so-called best practices are ‘best,’ they also inhibit a “challenge everything” culture and continuous improvement—a pillar of lean thinking. Why would people challenge ‘best’? Mary Poppendieck, coauthor of Lean Software Development, reiterates this point and draws the historical connection from best practices to Taylorism: Frederick Winslow Taylor wrote “The Principles of Scientific Management” in 1911. In it, he proposed that manufacturing should be broken down into very small steps, and then industrial engineers should determine the ‘one best way’ to do each step. This ushered in the era of mass production, with ‘experts’ telling workers the ‘one best way’ to do their jobs. The Toyota Production System is founded on the principles of the Scientific Method, instead of Scientific Management. The idea is that no matter how good a process is, it can always be improved, and that the workers doing the job are the best people to figure out how to do it better… Moreover, even where a practice does apply, it can and should always be improved upon. There are certainly underlying principles that do not change. These principles will develop into different practices in different domains...”[3] In Conclusion We need to though be keenly aware norms should not be rigid or prescriptive and should evolve through collaboration between self-organizing and self-directing cross-functional teams based on reality. Norm setting can only work if the team is truly able to arrive at consensus. Norms won’t stick if members have reservations about them. However, once consensus is reached, the team is equipped with a guide that can serve to strengthen positive practices. A set of norms can serve as a common reference if contrary behaviors arise. Finally, written norms are handy for potential members and newcomers who want to quickly get a sense of the team’s adoption of being agile. Starting with a simple, clear and concise set of norms in hand, based on reality, a team can move forward inspired and motivated to uphold the team’s agile-lean product (system-software) development approach, continuously improve and confident in the security such guidance provides. Given the changing world and the many lessons learned over the past decade we have unofficially refined the meaning of agile software development through trials, tribulations and countless successful (and unsuccessful) agile system-software development projects. Just like in 2001, when the seventeen like-minded individuals collaborated on creating the four values and twelve principles of the Manifesto for Agile Software Development, and defined the foundational philosophy of present day agile, perhaps the time has come for an official update to the Agile Software Development Manifesto, “The New Agile Product (System-Software) Development Manifesto.” My article Agile Software Development – Past, Present, Future <http://www.agilejournal.com/articles/columns/column-articles/2863-agile-software-development-past-present-future> delved into this and focused on methodologies and the importance of learning from the past and the present while looking to the future. We are headed in the right direction by de-emphasizing agile software development processes and methodologies and by elevating the level-of-awareness of system-software development craftsmanship with the likes of the Manifesto for Software Craftsmanship and its Renaissance. [1] Tacit knowledge is knowledge that is difficult to transfer to another person by means of writing it down. [2] My indirect influence for these values is David J. Anderson’s book, Kanban – Successful Evolutionary Change for your Technology, pages 22-33, ISBN: 978-0-9845214-0-1 [3] Poppendieck, M., 2004. “An Introduction to Lean Software Development,” at www.poppendieck.com/pdfs/Interview.pdf About the Author
Russell Pannone is the founder of We Be Agile and the Agile Lean Phoenix User Group, as well as the Editor-In-Chief of the Agile Journal and the Agile-Lean Adoption Lead and Coach at US Airways. With almost 30 years of experience, Russell is an industry thought leader and an agile-lean product (system-software) development coach and practitioner.
Russell specializes in working side-by-side with folks on real projects helping them deliver valuable software to production early and often, giving those he collaborates with the best opportunity to beat the competition to market, realize revenue and discover insights that they can use to help them improve.
Set as favorite
Bookmark
Email this
Hits: 2585 Trackback(0)Comments (0)
|
| Last Updated on Tuesday, 07 September 2010 21:59 |
Agile Marketplace - Announcements and Special Offers
The Business Case for ALM Transformation
Are legacy systems holding your company back? Breakthrough these technical constraints with an open and scalable environment that meets your unique business need to transform. There is no reason to be locked into an obsolete platform. The output of a number of recent transitions from legacy systems, this is practical white paper shares lessons learned and illustrates how guidance and enablement can pave the way for change.
Download this Whitepaper


Is “Agile Methodology” an Oxymoron and Counterintuitive to Agile-Lean Product Development and Craftsmanship?

