| 
Brad Appleton's ACME Blog

Brad Appleton{Agile Configuration Management Environments}
  • Homepage
  • ACME website
  • Publications
  • SCM Patterns book
  • Blogger.com profile
  • Technorati profile
  • Professional profile


  • What is Agility? Part 2 - Software Agility PDF Print E-mail
    Brad Appletons ACME Blog
    Friday, 10 April 2009
    In Part 1 of "What is Agility?" we looked at numerous definitions and descriptions of business agility.

    The overwhelming majority of them had the following elements in common among their descriptions:
    • Agility means swiftly sensing and rapidly responding to change and uncertainty.
    • Demand for change may be internal or external to the organization/environment.
    • Responding to the change utilizes resources & staff that are both internal and external.
    • Changes can be unpredictable and unanticipated, as well as foreseeable and anticipated.
    • Unanticipated changes are typically handled with dynamic adaptation through short cycles of feedback and learning.
    • Anticipated changes are typically handled with simple yet flexible structures that are resilient when modified.
    • And of course all this is achieved with solutions that are effective, efficient, and economical to implement and deliver!
    So what is missing from the above that is an essential characteristic of agile development as defined by the values and principles of the Agile Manifesto?

    I think it is the people factor, and what Jim Highsmith calls "a focus on talent and skills of individuals and teams." Close collaboration across functions and other internal & external boundaries is the "secret sauce" that best leverages the talents & skills of individuals & teams. This is what enables the rapid learning which, when combined with those talents and skills, delivers the most innovative solutions and best results in the shortest time.

    Put ALL of the above together, and we have a definition of software development agility that looks something like the following:

    Software development agility is the ability to ...
    • swiftly sense and rapidly respond to change & uncertainty
    • in close collaboration with internal and external stakeholders
    • to create simple, sustainable structures with sufficient flexibility
    • to dynamically adapt & evolve business processes, products & plans
    • that realize results with efficiency in motion, economy of effort, energy in execution, and efficacy of impact!

    And there you have it! Note that the last bullet above is really just a fancy phrasing of mandatory business jargon that ultimately means "Lean", but we'll explore that connection further in a later blog-entry.

     
    BOOK: Clean Code - A Handbook of Software Craftsmanship PDF Print E-mail
    Brad Appletons ACME Blog
    Tuesday, 07 April 2009
    My review of Robert Martin's (and the rest of the folks at ObjectMentor) book Clean Code: A Handbook of Software Craftsmanship was just published in the April 2009 issue of the Agile Journal.

    Robert ("Uncle Bob") Martin and the folks at ObjectMentor have written a new book that should be required reading for all programmers! When it comes to writing clear and maintainable code, cleanliness is indeed next to godliness, and we should all follow the Boy Scouts' Rule whenever we write or modify any piece of code: leave the place cleaner than when you found it!

    Robert C. Martin is one of the giants of object-oriented design, and a founding father of the agile manifesto and of agile software development. More recently, he helped kickstart the software craftsmanship movement, which gained much attention from his keynote at Agile2008 and subsequent talks on craftsmanship and ethics.

    ...

    If you are at all serious about programming, then as soon as you finish reading this review you should get your hands on Clean Code as fast as you can! Get it. Read it. Learn it. Then live it!

    Read the full review

    Additional resources related to the book are:

     
    CRISP Builds PDF Print E-mail
    Brad Appletons ACME Blog
    Tuesday, 07 April 2009
    Jeff Langr and Tim Ottinger have a pretty sweet and useful "gig" going on at The Agile In a Flash project, which will "result in a book and replenishable deck of at least 52 flash cards."

    I made a suggestion to them late last week about Mike Clark's "CRISP" acronym for builds, and they turned it into a CRISP flashcard. Here is the comment I made that led to that result ...
    Mike Clark gave a 2004 presentation on Pragmatic Project Automation that included a description of what he called the "CRISP" criteria for build:

    • Complete (recipe lists all ingredients)
    • Repeatable (version control time machine)
    • Informative (radiate valuable information)
    • Schedulable (complete and repeatable)
    • Portable (machine-independent)

    There is a similar description in the 2007 presentation “All Builds are Good”, and a more detailed description in this 2007 CT-SPIN presentation on project automation:

    Complete:
    • Build from scratch and independently without human intervention.

    Repeatable:
    • Must be able to create exactly the same build at a later time.
    • Store build scripts in source control.

    Informative:
    • "Detector of unexpected changes".
    • Provide information on why a build failed.

    Scheduled:
    • Let the builds run automatically.

    Portable:
    • Build should be runnable from any system (same platform), not just that of the developer.
    • For cross-platform software, it should build on all platforms.


    I'm curious as to whether or not others have come across this acronym and if they like it and find it useful? What corrections, clarifications or additions do you think should be made to the acronym or its description?

     
    What is Agility? Part 1 - Business Agility PDF Print E-mail
    Brad Appletons ACME Blog
    Monday, 06 April 2009
    Kicking off my series of posts on the subject of "What is Agility?" is this first posting on Business Agility, and how agile methods got its name from those roots...

    Some of you may already know that before Agile methods used the word "Agile", the term "Lightweight methods" was being generally used to describe them. It wasn't until the February 2001 gathering at Snowbird, Utah that they began using the term "Agile", and the "Agile manifesto" was born.

    At that time, the term "Agile" was already in use to refer to "business agility" by those in the field of organizational change and learning. I know of at least a few people (Mike Beedle for example) who were there at Snowbird that knew this and even liked the term and used it from time-to-time before that now famous gathering.

    So the then lightweight methods community intentionally adopted the terms "agile" and "agility" in this context. Let's explore our roots and see exactly what "Business Agility" means. I surfed the net for some time and gathered a number of definitions.

    Business Agility is ...

      “the ability to both create and respond to [anticipated and unanticipated] change in order to profit in a turbulent business environment.” —[James Highsmith and Highsmith2]
      “the ability to adapt rapidly and cost efficiently in response to changes in the business environment.” —[Wikipedia]
      “the ability to sense environmental change and to respond efficiently and effectively to it. Sensing the need for change also includes the proactive initiation of change.” —[Gartner1 and Gartner2]
      “the capability to be flexible, responsive, adaptive, and show initiative in times of change and uncertainty”—[BNET]
      “the ability of enterprises to cope with unpredictable changes, to survive unprecedented threats from the business environment, and to take advantage of changes as opportunities” —[Agile Business: The competitive weapon. Market research study in four business segments (2004)]
      “the ability to swiftly change businesses and business processes beyond the normal level of flexibility in order to effectively deal with unpredictable external and internal changes.” —[Business Agility in the Netherlands: Research Study Public Sector (2005)]
      “the capacity to gain competitive advantage by intelligently, rapidly and proactively seizing opportunities and responding to threats.” —S. Meredith and D. Francis (2000)
      “the ability to cope with unexpected changes, survive unprecedented threats from the business environment, and take advantage of these changes as opportunities.” —Z. Zhang and H. Sharifi (2000)
      “The ability to thrive in a continuously changing, unpredictable business environment.” —R. Dove (1999)


    Those are some nutshell definitions. They are focused on the dynamic capability to swiftly sense and rapidly respond to change using a combination of adaptation (for unforeseen changes) and flexibility (for foreseeable changes).

    Let's look at some more details from a few more sources ...

    From Process Transformation for Reaching Agility: CIO Role
    • Business agility calls for quick decisions and action. Agility is the ability of a business system to sense environmental change and respond efficiently and effectively to that change. Any framework for agility must address issues that go well beyond selection of the latest technologies.

    • Business system's willingness to be agile, its understanding of its own business system building blocks and its enablers of agility, and its adherence to an "agility cycle" are just as important as the judicious use of agility-influencing technologies.

    • The following four fundamental capabilities enable a business system to increase agile performance across the agility cycle. They are essential to being able to allocate corporate activities to measurable categories:

      • Awareness (the right information through data and event monitoring mean knowing what is going on)
      • Flexibility (the right options by rule modeling and simulation render possible confronting expected change)
      • Adaptability (the right reactions by rapid rule modification enable confronting unexpected change)
      • Productivity (the right policies, procedures and operations through automation for executing well day to day).

    From What Lessons can the Agile Community Learn from a Maverick Fighter Pilot? and Thriving on Chaos:
    • The key to thriving on chaos is a skill Boyd calls agility, which is “the ability to rapidly change one’s orientation—[or] worldview—in response to what is happening in the external world.”

    • In the context of battle, agility involves four distinctive activities: observe your environment (yourself; your opponent; the physical, mental, and moral situation; and potential allies and opponents), orient yourself to decide what it all means, reach some type of decision, and attempt to carry out the decision. Observe, orient, decide, and act.

    • It turns out that the most critical step in the agility cycle is the first one: observe. This is much more than a process of looking around. Rather, it is a relentless search for the truth about your situation. The idea is to “go out and get all the information you can by whatever means possible.” Why? Because you can never be sure beforehand which stray idea will prove essential.

    • In Boyd’s conception, the first step—observe—is the only input from outside yourself. For this reason, how well your orientation matches the real world is largely a function of how well you observe. You are looking for mismatches between your current worldview and the world as it actually is. “A general rule is that bad news is the only kind that will do you any good….

    • You must seek out and find data that doesn’t fit with your worldview and you must do this while there is still time.” Otherwise the world will change and you will find yourself disoriented. You will have lost the initiative, which is dangerous in any conflict. However, if you are able to get the facts right and are willing to orient yourself to them, then astute decisions and effective actions will follow.


    From Towards Agile Government:
    • In practice, agility features the following four characteristics: short term frontline responsiveness, strategic adaptation, outcomes focus. preventing or reducing problems before they arise.

    • Agile organisations are ‘hyper strategic’, tackling challenges wrought by turbulent external environments, while also preparing for future changes that are not yet apparent. They move through an agility cycle, seeking out and interpreting information to inform short, medium and long term decision making and action. The agility cycle is a four-step process through which organisations:

      • scan emerging trends and issues
      • sense opportunities to translate information into actionable solutions
      • respond to opportunities and risks
      • shape future environments.

    From Agility thru SOA (Master’s Thesis)
    • Business Agility is the ability to sense internal and external changes, as well as being able to swiftly adapt, in reaction to sensed changes, businesses and business processes beyond the normal (operational) levels of flexibility, effectively using internal and external resources, to effectively manage unpredictable external and internal changes.

    • Different types of agility:

      • Product Agility – the ability to easily change between various products to address changing needs
      • Process Agility – the ability to easily adapt the internal processes to address changing circumstances
      • Market Agility – the ability to easily enter and change markets
      • Network Agility – the ability to easily coordinate and cooperate with various partners, ranging from suppliers to customers

    So what did we learn? Share your thoughts! (I'll share mine in my next blog-entry.)

     
    What is Agility? PDF Print E-mail
    Brad Appletons ACME Blog
    Friday, 03 April 2009
    I'm involved in an Agile adoption effort that has done of lot of communication as of late. And one of the things we always cover in any intro training is the question What is Agile Software Development?"

    Our standard answer and presentation materials usually involves citing the text of the Agile Manifestoand either this definition by Scott Ambler and/or this comment by James Highsmith that "Ultimately, Agility is about embracing change rather than attempting to resist it, [and a] focus on talent and skills of individuals and teams."


    I've noticed our responses attempt to describe what Agile Development is by describing what it looks like (Ambler's definition), or the Agile values (from the manifesto), or the emphasis on change and collaboration (Highsmith). What they don't do is describe what Agility is! The Highsmith comment comes closest, but none of them really describe what it means for something to have the ability called agility.

    I think it is key to understand what Agility is, and why/how it works, in order to understand Agile software development. I think without that understanding, it can be much harder to understand and apply the principles of lean/agile development, and to "inspect and adapt" to improve the right things in the right direction.

    Toward that end, I did a bit of research on a lot of different definitions of agility (beyond some of my previous blog entries like Nutshell definitions of Agile development, Agile development distilled, and Business Agility defined) and of various attributes of agility. And I plan to share them in some blog-entries for each of the following:
    • Business Agility
    • The Agility Cycle
    • Software Agility
    • Self-Organization
    • Collective Intelligence
    • Social Creativity
    • Swarm Behavior
    • Emergence
    • Collective Ownership
    • Change & Uncertainty
    • Simplicity, Sufficiency and Sustainability


    So "stay tuned" to this blog over the next several days because I intend to post on this more than weekly.

     
    I'm ba-a-ack! PDF Print E-mail
    Brad Appletons ACME Blog
    Thursday, 02 April 2009
    I must apologies to my readers of this blog (or at least whomever is left). I haven't blogged in 9 months. I became heavily immersed in an agile adoption effort that had just managed to succeed in getting the senior-most management fully bought-in to Agile.

    I've had a LOT of ideas I've been wanting to blog, many of them queued up and waiting, but I kept having too many other higher-priority things on my plate. I finally have a bit more breathing room now and plan to "catch up". So expect a burst of activity over the next few months.

     
    Summer of Books PDF Print E-mail
    Brad Appletons ACME Blog
    Wednesday, 02 July 2008
    I'm going on some long needed (and hard earned) vacation. I won't be blogging again for about one month (so this will likely be my only entry for July).

    I've got a lot of REALLY GREAT and interesting books to try and catch up on. I hope to blog about them when I return. Here is what's on my summer reading list:

    Theory U: Leading from the Future as it Emerges, by C. Otto Scharmer
    I saw the executive summary and other chapters at www.TheoryU.com (also see www.dialogonleadership.org). This looks to be THE penultimate book on leadership for the Agile Organization. It doesn't even use the word "Agile" anywhere, but the values and principles from the book are so well aligned with[...]
     
    Assigning Code Ownership-Policy Ownership PDF Print E-mail
    Brad Appletons ACME Blog
    Wednesday, 25 June 2008
    Jurgen Appelo has an interesting article on StickyMinds entitled "Code Ownership Re-Visited"

    Jurgen prefers the term "artifact assignment" rather than "code ownership" and explains there are 4 methods of artifact assignment:
    1. Local Artifact Assignment (LAA) delegates policy to subsystems and subsubsystems (etc.)
    2. Authoritarian Artifact Assignment (AAA) assigns change/access-control access-control of of ALL related artifacts to a single individual "benevolent dictator" who approves/authorizes all changes and who may also assign individual change-tasks to developers
    3. Collective Artifact Assignment (CAA) assigns the whole team (rather than any one person) as collectively accountable for all its artifacts
    4. Individual Artifact Assignment (IAA)
    5. [...]
     
    Four Rules for Simple Codelines PDF Print E-mail
    Brad Appletons ACME Blog
    Wednesday, 18 June 2008
    Some of you may be aware of Kent Beck's Four Rules of Simple Code that state simple code:
    1. Correctly runs (and passes) all the tests
    2. Contains no duplication (OnceAndOnlyOnce and The DRY Principle)
    3. Clearly expresses all the ideas/intentions we needed to express (reveals all intent and intends all it reveals)
    4. Minimizes the number of classes and methods (has no superfluous parts)
    (I've seen some boil this down into some of the same rules for writing clear prose: correct, consistent, clear, and concise.)

    Lately I've been noticing some parallels to the above and rules for what I would call "simple codelines" and I think there may be a similar way of expressing them...

    Simple codelines:
    1. Correctly build, run (and pass) all[...]
     
    Traceability Matrix in an Agile Project PDF Print E-mail
    Brad Appletons ACME Blog
    Wednesday, 11 June 2008
    InfoQ.com summarized an email-list discussion thread on the subject of using a Traceability Matrix in an Agile Project.

    I contributed quite a lot to the thread, and InfoQ apparently included many of the key things I said along with the related URLs to articles I've written. (Thanks guys!)

     
    Iterative and Incremental redefined redux PDF Print E-mail
    Brad Appletons ACME Blog
    Saturday, 07 June 2008
    The agile community has written much about this in the past year or so:
    Apologies in advance for being a "stick in the mud" on this one - I'm not particularly happy with the definitions so far. I searched around some more on the WWW and came across one I like a lot that I think better meets our needs.
    Last Updated ( Tuesday, 29 July 2008 )
     
    << Start < Prev 1 2 3 4 5 6 7 8 9 10 Next > End >>

    Results 1 - 11 of 103
    If you already have an account on CM Crossroads, Login Now. If you do not, register using the link below...

    NOTE: Once you register you will need to activate your account by clicking the link sent to you by email.

    Video Spotlight

    Accurev

    Sponsored Links