Sunday, October 4, 2009

PMBOK, RUP, XP, SCRUM, Kanban or Do Whatever/Nothing


Firstly, this writing is a result of Kevin Thompson's LinkedIn Discussion on "Kanban versus Scrum". He advised me to do a blog so I added it as a topic. Maybe we can have a Cafe Conversation on this. It stems from a comment I posted inspired from Henrik Kniberg's brilliant document on http://www.crisp.se/henrik.kniberg/Kanban-vs-Scrum.pdf



I particularly liked Henrik's diagram showing the RUP, XP, SCRUM, Kanban and Do Whatever from "Prescriptive" to "Adaptive" comparing the steps involved in each approach in terms of software development and project process perspective. So I added the Project Management Body of Knowledge (PMBOK) framework from the Project Management Institute (PMI) as a reference. It consists of a matrix of 5 process groups and 12 knowledge areas in which there are 59 processes (as of 2004, now in its 4th edition with changes).



I've put my comment (as posted) into a table format below comparing PMBOK, RUP, XP, SCRUM and Kanban ...




Program/Project Management Intensive

PMBOK and specifically portfolio management

for multiple projects in a program spanning business units and operations such as radical business process changes over a period of time.

Software Architecture Intensive

RUP, controlled iteration

for projects over a longer period, establishing new platforms and assets in a complex or hybrid environment such as EA and SOA initiatives.

Software Engineering Intensive

XP, Values, Principles, Practice for SE Teams

for products that are software engineering and test intensive with lots of interdependencies, example object orientated software components as libraries or engines used to deliver and support functional work.

Product Management Intensive

SCRUM, Time-box, functional/feature focus

for establishing, evolving and maturing assets with good platform foundations and tools where focus is on the functional product, for example web 2.0 technologies with mature back end infrastructure.

Workflow Intensive

Kanban, Workflows, application maintenance and configuration management

for higher levels of automation, administration and managed change for configurable processes.



It is not simply about waterfall versus iterative life cycles. Also not just about prescriptive versus adaptive as this can be associated with the way the enterprise and teams approach trade-off decisions. It has to do with the nature of the project, organization, scope and scale. Bureaucracy versus agile is also a factor in terms of center of control, hence the balance also between central, federated and autonomous controls.



More About Nothing or Do Whatever



Indulge me for a moment as I explore the "Nothing" option. It does not necessarily mean "nothing" or a less interventionist approach. One thing about making a strategic, political, business or technical decision involving a trade-off is to visualize a series of events and to first contemplate what would happen if you simply did nothing (let nature take its course). Is there a "natural" process of software development? Just as everything has an architecture whether or not it is explicitly defined, there must be a pattern for a social or human organizational endeavor or pre-occupation - which is what software development is ultimately about. Software development processes can be automated but ultimately it is about people. And people have a natural way of working - a natural enterprise process.



In comparing software architecture with building architecture history, I've noticed a pattern in the story of building architecture that demonstrates a pattern of natural social pre-occupation. Over a period of a few thousand years of civilization, our social pre-occupation has evolved in a way that can be articulated across 4 phases.







We initiated architecture by building naturally and organically, using patterns from nature or our environment and surrounds. Nature was our first reference or model of quality - "what is beautiful" or "what is good". Through the classical period which I think of as a more advanced learning period, we started to discover qualities of raw materials. This coincided with urbanization and in dealing with limited space, we turned to mathematics and geometry. Over time our sense of quality, standards, aesthetics or beauty became defined through symmetry. A study of artifacts and in particular the contrast between African art and crafts with other parts of the world and western civilization over the years demonstrates the difference in systems thinking.



The industrial and post industrial period was an intensive period focused on the production process of construction and manufacturing. This heralded the era of machines and modernism was born from the social impact of trying to balance life between man and machine. But over the last century, we have become aware of the dangers and impact to our natural environment. We have reviewed our own social belief systems in the western world and how we have based our beliefs on science from absolute morality and Newton's law to relativism and Einstein's theory of relativity. Postmodernism is an era of openness and transformation.



Interestingly, this process that has taken thousands or years with phases spanning hundreds of years is similar to the Rational Unified Process (RUP) 4 phases of Initiation, Elaboration, Construction and Transformation. In software development projects, you may see this pattern happening in a matter of months and over weeks. A small team initiates a project and develops organically, learning from the business environment. As they decompose the system, they develop a better understanding of the layers and sub systems of the architecture and design. But as the timelines loom towards the quarter or half way mark, management concerns begin and the process seems chaotic and unmanaged. More intensive construction and processes are put in place. More resources and a factory is carved out of the initial design work. If all goes well, there is a transition towards realization and to produce the production release.







While I believe that smaller iterations and agile approaches such as agile and SCRUM can influence the sub phases and iterative cycles, it seems more natural that overall a software intensive system takes a period of time to mature irrespective of the approach. There may be many ways to abstract this period and to make it more successful dependent on whether the meaning of "success" is based on financial/budgetary constraints, quality, time or other indicators and metrics. But there does seem to be a "natural" process that takes place.



It will take more research but I would also like to explore this association with natural patterns. Specifically, I am thinking of fractals which you can find extensive material on as well as on the topic of Chaos Theory. A Fractal is "a rough or fragmented geometric shape that can be split into parts, each of which is (at least approximately) a reduced-size copy of the whole," from the "The Fractal Geometry of Nature" (Mandelbrot, 1982). Also consider "Fractals: The Patterns of Chaos" by John Briggs, 1994.

No comments:

Post a Comment