Understanding

December 2nd, 2006

In my experience, perhaps due to my intellectual make-up, I seek for understanding beyond the superficial reality of it just is. If I am exposed to a concept or approach that offers a new way of seeing the world, to me, I can only truly embrace it with conviction when I feel I understand. In very complex disciplines such as depth psychology or quantum mechanics, there are many phenomena that just is, that exist before our eyes but whose explanation eludes those seeking knowledge of how and why they are. In these situations it seems enough to harness the phenomena without understanding, especially when the benefits of using them are great. Stanislav Grof, the founder of transpersonal psychology, admits that it is not possible to explain why certain conditions of the mind manifest, or indeed how his psychological modality achieves some relief in his patients. The fact Grofs suffering patients can attain relief through his therapeutic approaches is enough for Grof – he may never understand why, but his goal is to relieve suffering, and if something works without being explainable, so be it.

While some concepts in our universe cannot be explained, only observed, in our discipline of software engineering the phenomena we face are not so esoteric, and are often explainable and observable. We are fortunate in that we can develop the right level of understanding to grow with new concepts as we discover them; the greater challenge for many is in the commitment to learning in a busy world. Yet, exposure to new models of thought, new paradigms of practice, ultimately requires deeper knowledge which has to be attained through experience, intellectual inquiry and time. Of course, the first step is to realise that a new concept or idea is different to that which we compare it against, and to appreciate that we cannot successfully project existing mental models onto the new idea and hope to completely understand; at some point we need to allow the formation of new models, which as a process could potentially shatter previous belief systems and whole ways of thinking – these shifts may be too great for some, yet for others, be they individuals or organisations, it can mean progress.

Understanding the Chasm

One can be forgiven for thinking that choosing an approach such as agile development might be as simple as learning a few new simple rules and practices. In some respects, at the superficial level, this may be true; but it’s not so simple. Any organisation that makes the decision to learn agile development, is not just stating the forgoing of traditionalistic values, principles and practices, but is committing to the endeavour of education and discovery of new paradigms and mental models that jeopardise the very survival of its present identity. In some respects, at a deeper level, this is exactly what happens to those that cross the chasm.

A step onto the road of agility can mean the want to make progress, to seek the pastures of greater success where the software endeavour itself has been civilised and socialised into the organisations culture and way of being. To an establishment rooted in hierarchy, deterministic projections and control and command management cultures, the land of agility can often seem like a nice sunny place one might visit for a short holiday, but would not wish to spend much time there. “Those people over there…they’re not like us”. Through diplomacy and noble struggles the two can conjoin on a foundation of understanding, on the bedrock of recognition that differences abound, the cause is common; to achieve success with software development, to discover the key behind the software code. This is Right Understanding.

To my mind, it is important to remember that there will be great times to be experienced by many new teams that discover agile development. And of course, there will be times when difficulty arises, when the team is faced with a problem that rocks deep to the heart of their being, when fear itself manifests and challenges them to step back, to return to what it knows, to old habits that are predictable and safe.

Agility means going slower than we used to, rattling off feature after feature like a helicopter machine gun, ripping through the heart and soul of the victim that is the very code our project and life depends on; thunk, thunk, thunk…in go the features. Stand back – do we have a flatliner? The focus is quality, not quantity. Agility means stepping into a world of uncertainty, a world where a plan starts to fade as soon as the ink reaches the parchment, a place where both chaos and order are allowed to exist as respected adults. Command and control is substituted for a healthy respect for the people, no longer are they seen as cogs in the machine of corporate strategy. The people are left to self-organize, to act and react to the forever existing impetus of uncertainty and change; adapting, reacting, embracing. Through shared vision, shared goals and passions, customer, developer, manager, all come together in a collaborative, respectful honour of the reality that software construction is hard, but together through united understanding, a difference can be made; but there must be change.

Commitment 

To have longevity with agile a commitment is needed to develop enough understanding to know what to do and how to behave when the journey brings adversity.  Agility is not just about programming, its about creating a foundation of values and ethics from which to interact with our customers, our employees and other teams.  Its about understanding that while there is uncertainty, this breeds innovation from within (if cultivated), further allowing that organisation to act, adapt and ultimately create new differentiation in a dynamic business environment.   Courage and strength come from a commitment to developing the right knowledge and theory behind the principles (surely its an obligation?), so that the team can be supported by their leaders in the face of adversity.  Agililty is a new paradigm, and it does require new understandings – right understandings.

5 Responses to “Understanding”

  1. Damien Morton Says:

    I never liked the term Agile – to me, it evokes a sense of nervous energy, jumping all over the place (… fury .. signifying nothing). A better term for the unplanned yet mindfull approach you advocate might be “Elegant”.

  2. nrobinson Says:

    Hi Damien,

    I have seen in recent times some rhetoric both for and against the term Agile. I remember reading somewhere that the term Agile was used in the 90’s in a different business domain to software development, referring to organisations that embrace change and create change for their competitors; indeed survival itself is fed on the oxygen of the riches from embracing change.

    And I have to say, I disliked the term, liked it, disliked it, and at the moment I’m not sure what I think. I know that Kent Beck has publically begun using the term Responsible rather than eXtreme or Agile. Responsible represents a shift in conduct and respect from the top-down within the organisation, again focusing heavily on the people element; peopleware.

    An observation I have had on multiple occassions, is that sometimes a manager supports the use of agile development as much as he would support the upgrading of the developers computers, or buying them an extra flat-panel monitor. Its a new “gimick” the development team folk seem to like; “..but just make sure you deliver!” The issue is that it is so much more than a gimick or new technique.

  3. Sergey Lipnevich Says:

    Understanding doesn’t happen right away usually, more so when the subject is complex and important choices must be made; that’s why people may be more willing to go a long way rather than cross the chasm. So, I think that until agile responsible software development is accepted and taught as a discipline in software schools, both programming and management, fair amount of patience, evangelizing, and examples of successful implementations will remain a necessity.

  4. nrobinson Says:

    I agree Sergey.

    My call out, is to that very point. Understanding something as different as agile that challenges old schools of thought is going to take time (indeed thats one of the points I mention), but the responsibility for me comes in commiting to recognising the differences such that leadership in times of adversity can prevail. Of course, theres no substitute for success, but people strat agile development expecting the holy grail, and its no grail nor silver bullet.

    It has taken me five years or more to understand agile development to the level that I do, and I am aware my journey continues. I see agile development as being a rather important concept to move over, and I see that there could be more ease with the process if there was more understanding, or indeed understanding that there needs to be a different understanding to the way things used to be. I see *that* as responsible.

    Very simple example: developers creating technical stories. In almost every project I have taken part in, developers end up arriving at the same hotel of developer tasks on the road to learning the practice; this is a nice cosy place that makes it easy to relax in the warmth of things that feel too difficult to turn into a user story. I see it every time because theres something different that needs to be appreciated, and nobodies at fault for thats the process. With a little more understanding, such issues can be worked with at a deeper level. Seeing that we are customer-centric, business-value-centric, and that we are not spending our time in the 64% domain of features that seemed-like-a-good-idea-but-nobody-actually-used-them.

    Maybe chasm is the wrong term, I did wonder about it. My real point is simply understanding that learning C# is very much like learning Java, but learning Agile is completely different to working with waterfall practices.

  5. nrobinson Says:

    My inner sense is that maybe the answer is pedagogical, that there is something in the process in which consultants, mentors, coaches, teachers can do differently that can support the journey.

    At the same time I am aware there may not be answer, no matter how unsatisfactory this answer feels. The basis to Right Understanding is in knowing that a new understanding is needed. Learning the agile techniques requires practice, since much of it is experiential. This covers the hows, I think its the whys that require a deeper inquiry, both of the programming techniques, and the softer techniques that imbue the values and principles of agility.