Loading ...
Sorry, an error occurred while loading the content.

376RE: Agile Software Development Revolution

Expand Messages
  • Mike Beedle
    Jul 8, 2002
    • 0 Attachment
      (I know most of the people subscribed to this list belong to
      the Extreme Programming mailing list, but just in case some
      of you missed this posting at the Extreme mailing list.....
      here it is. My apologies included if you have received multiple
      copies of this message.)

      Dear agileers,

      It troubles me that the _fundamental differences_ between
      traditional and agile processes are not highlighted,
      either by, we, the creators and supporters of the Agile movement,
      or by traditional software development figure-heads.

      Because if we don't highlight the differences of why Agile
      Software Development processes we run the danger of hearing
      and, worse, accepting that:

      there is nothing really all that new with
      Agile Software Development processes

      This will relinquish Agile Software Development as "one"
      of many other compatible worldviews, and soon Agility will be
      muddled into oblivion.

      Don't take me wrong, I admire and respect the contributions
      of people like Humphrey, Paulk, Parnas, Boehm, Constantine,
      Booch, Jacobson, Gilb, Jackson, Yourdon, etc.; but I think in our
      desperate effort to make sense of Agility, we will find
      that many important concepts are forgotten if we try to equate them
      with their traditional software development counterparts. And that
      misconceptions and misunderstandings will be created like:

      The CMM is compatible with agile processes, or
      XP can be an instance of RUP

      In my opinion, there are radical and fundamental _differences_
      that make Agile Software Development Processes and Traditional Software
      Development Processes two very different ways of developing software
      from the perspective of the nature of their underlying processes:

      Traditional Software Development Processes advocate and
      eventually prescribe a _defined_ and _repeatable software
      engineering process, as well as many other _defined_ and
      _repeatable_ processes that correspond to different
      "process areas". And they are based on the erroneous belief,
      in my opinion, that software can be "manufactured".

      But,

      Agile Software Development Processes, on the other hand,
      use inspection/adaptation feedback cycles that "generate"
      a process by people that self-organize based on the
      application of a set of practices, or patterns really,
      that in an Alexandrian way lead to the emergence of
      an organization and a process. This is stated directly
      in the Agile Principles:

      "The best architectures, requirements, and designs
      emerge from self-organizing teams."
      http://www.agilemanifesto.org/principles.html

      Therefore Agile Software Development Process more
      closely resembles a New Product development process
      like the one described in:

      [NonakaTakeuchi] Takeuchi H. and Nonaka I., The New New Product
      Development Game, Harvard Business Review (January 1986),
      pp. 137-146, 1986.

      In my opinion, this is an important, radical and fundamental
      _difference_, that subtly changes the underlying assumptions
      of why and how things work in a software development process.

      How does this difference affects the people that work on an
      Agile Software Development Process?

      It is this feature of Agility that brings out these essential
      characteristics in an Agile Software Development Process:


      1) Greater Liberty and Freedom

      People in an Agile Software project feel more liberated
      because they feel _free_ to do whatever it takes
      to achieve their goal:

      talk to the customer, think, imagine, code, test, refactor,

      in any order, as many times as they need/want, and as often as
      they need to.


      2) Required Learning, Knowledge Creation and Knowledge Sharing

      People in an Agile Software project are constantly learning,
      and sharing knowledge because by definition Agility is
      based on continuous short feedback cycles of:

      inspection --> adaptation

      where we learn from the customers, from other team members,
      from practitioners in the field, and even from ourselves
      on a daily basis.


      3) A More Enjoyable and Humane Work Environment

      People in an Agile Software project participate in a more
      human "fun-like" way because the more human and intellectual
      activities of research, understanding, imagination,
      creativity, cooperation and sharing are encouraged and required;
      as opposed to being considered just "another station in
      a production line".


      4) A Hyper-productive Cooperative Work Mode

      People in an Agile Software project work in teams that
      exhibit a mode of cooperation that leads to hyper-productivity --
      the dynamic pull-system way that Nonaka and Takeuchi describe in the
      Knowledge Creating Company as the "hypertext" organization.

      This mode of cooperation, taps into the collective
      intelligence and collective knowledge and memory stored
      in the distributed mind of the team and the organization
      as a whole.


      5) The Quality of Life

      Agile Software projects work under the assumption and
      expectation that "emergent" behavior is the only way to
      confront uncertainty. Agile Software projects openly
      accept that it is impossible to:

      outline what tasks are going to be needed
      to complete a software project up-front, and

      get all the requirements up-front, and/or
      design an architecture up-front.

      Rather, the plan, the requirements and the architecture
      of the project, gradually emerge, by constant feedback cycles,
      research and creativity, and constant interaction among
      the participants of the project and the customer.

      This is what gives Agile Software Development teams
      the distinctive feature of "ordered chaos" that
      Life itself uses to accomplish its miraculous chores.

      And therefore, this is what literally makes teams
      more "alive", because teams more closely resemble
      living systems like ant or bee colonies,
      brains, or rugby/soccer/football teams.

      etc.

      For these reasons, which are not all, I hereby declare the
      beginning of a new era in software development, and I therefore
      proclaim officially that the creation of the Agile Manifesto:

      http://www.agilemanifesto.org/

      and its principles:

      http://www.agilemanifesto.org/principles.html

      mark unequivocally the beginning of the:

      Agile Software Development Revolution

      which was created, sponsored and supported by all of
      you brave souls that dared the world by practicing and
      advocating a _new_ Agile way, that makes software development
      different, more productive, more humane and therefore
      clearly better, in my opinion.

      Don't find yourself muddled out by figure-heads ... stay Agile!

      - Mike

      http://www.agilescrum.com
      http://www.xbreed.net
    • Show all 17 messages in this topic