Saturday, August 21, 2010

SW Paradigms: Waterfall, Agile, Craftsmanship

Software Manifesto Paradigm Shifts:
Waterfall, Agile, Craftsmanship

I have combined "Manifesto for Software Craftsmanship"
with "Agile Manifesto" (see both at the end of this text)
to present natural evolution of software development processes.

WaterfallAgileCraftsmanship
3. comprehensive documentation2. working software1. well-crafted software
1. following a plan4. responding to change2. steadily adding value
4. processes and tools1. individuals and interactions3. community of professionals
2. contract negotiation3. customer collaboration4. productive partnerships


In addition, I have extended the evolution metaphor
to "maturity models" (you => I => we), well known in psychology,
and popularized by book "7 Habits of highly effective people".
"Agile" principles are described in contrast with pre-Agile ("Waterfall"),
and "Craftsmanship" principles are described in contrast with Agile.

The order of principles has changed, I have added numbers in the table to show original priority. For "Waterfall" order of priorities, I am sure pre-Agile practitioners would have opinion of their own.

Now, those "levels of thinking" could be related to paradigm shifts well known in psychology, and described by Dr. Stephen Covey in his seminal book "7 Habits of Highly Effective People"
that represent maturity level of an individual or an organization.

Dependence Independence Interdependence
YOU I WE
take care of me can do it myself can do it better together

  • At the beginning, a developer behaves as a child, dependent on a bureaucratic organization to do planning, monitor every step.

  • By accepting Agile principles, a developer becomes independent, able to solve problems on his/her own in efficient way.

  • Finally, at Craftsmanship level, it accepts ultimate response-ability for Quality of the work, and is able to work in interdependent effective teams to produce worthy results in a synergistic way!
This progression is natural, and requires focused effort. It applies to all fields of human development, including software! There are no shortcuts, and focused practices help produce real professionals in the field.
By extending the metaphor, we can describe "7 Habits of Highly Effective Software Developers", almost as a tutorial how to improve on Jurney from Novice to Expert described in excellent book Pragmatic Thinking and Learning by Andy Hunt, one signers of Agile Manifesto.



Manifesto for Agile Software Development
We are uncovering better ways of developing software by doing it and helping others do it.
Through this work we have come to value:


Individuals and interactions  
over processes and tools
Working software  over comprehensive documentation
Customer collaboration  over contract negotiation
Responding to change  
over following a plan

That is, while there is value in the items on the right, we value the items on the left more. 


Manifesto for Software Craftsmanship "Raising the bar.
As aspiring Software Craftsmen we are raising the bar of professional software development by practicing it and helping others learn the craft. Through this work we have come to value:

Not only working software, 
but also well-crafted software
Not only responding to change, but also steadily adding value
Not only individuals and interactions, but also a community of professionals
Not only customer collaboration, but also productive partnerships

That is, in pursuit of the items on the left we have found the items on the right to be indispensable."



No comments: