Recent posts (max 20) - Browse or Archive for more

Agile By Example Conference

source:/BRANCH/TRUNK/artifacts/presentations/agile_by_example_button_2.png I was honoured to be invited to speak at the second  Agile By Example conference in 2012 in Warsaw Poland. Here I gave an updated version of my Thinking Distributed to Improve Agility talk that I first gave at JAX the previous year. The slides for the talk are here:

This was a fantastic, well organised conference, with a fairly unique structure. Well worth attending for those who can make the trip.

Version 0.5.0 now available

NEW RELEASE - 0.5.0

Based on  Trac 0.11.7 this release adds some significant improvements.

  • #904 - Tickets can now be added to an iteration using a ticket action.
  • #27 - An assigned ticket is shown as orange for the next incomplete completion stage. This provides a fast visual indication of whether someone is working on a ticket or not.

  • #905 - Progress bar legends and completion stage status is now shown correctly in Chrome (recently Chrome's rendering broke and stopped displaying these items correctly).

To Upgrade Your Installation

1. Upgrade the Agile-Trac plugin

easy_install -U http://svn.agile-trac.org/BRANCH/AGILE-TRAC/SOURCE/0.11/REL/

2. Update the patch

You must also use svn to update your agile-trac patch.

Note: The location of your  Trac install will depend on the version number, for example you might have  Trac 0.11 or a newer version like  Trac 0.11.7.

Windows

This will depend on your installation, for example with  Trac 0.11, this may work.

cd C:\Python25\Lib\site-packages\Trac-0.11-py2.5.egg

Linux

Do these commands as a user of sufficient privileges, for example as root.

This will depend on your distribution. For example in Debian Testing for  Trac 0.11 you might type:

cd /usr/lib/python2.6/site-packages/Trac-0.11-py2.6.egg/

Now run svn update from the current location, for example,

svn update

3. Restart you web server

For example if you are using apache you might need to execute,

apache2ctl graceful

Thinking Distributed to Improve Agility

source:/BRANCH/TRUNK/artifacts/presentations/jax_2011_autumn_edition.png Today (2nd Nov 2011) I gave a talk titled "Thinking Distributed to Improve Agility" at  JAX 2011 in London. This was the first talk in the Architecture track on the second day of the conference. This is bleed over from Agile Day yesterday, but also talked to the architecture of teams within an organisation.

The premise of the talk was that, contrary to poplar belief, distributed teams exhibit characteristics that can make it easier for them to transition to agile and improve their agility. In contrast co-located teams can somehow struggle to transition and be agile. I take a look at organisational patterns and crowd communication in an attempt to explain why this might be the case.

I've uploaded the  slides from the presentation as a PDF. Hopefully it will be a good read.

There was some good feedback from the talk, with one person observing that one aspect of the distributed teams is that you are forced to do things well, otherwise you simply cannot survive. Very true in many ways but certainly only one aspect of the overall problem.

The conference has been very good with a high standard of talks over all, highly recommended to anyone who hasn't been to JAX before.

Feedback Loops in Agile Development

source:/BRANCH/TRUNK/artifacts/presentations/agile_on_the_beach.png Yesterday I gave a talk at the inaugural  Agile on the Beach conference down in Cornwall on the  Tremough Campus near at  Falmouth.

It's been a very good conference so far with a great turnout. The slides  Feedback Loops in Agile Development are available for download.

The essence of the talk was to emphasise the importance of observing and learning from feedback loops that appear in an agile methodology. It starts by examining briefly the nature and problems of typical development, then explores the key elements of an agile methodology. From here I illustrate how we can use these elements to amplify the feedback loops present to facilitate a better understanding of how to leverage agile development. Finally it takes a look at some of the practical things you should pay attention to when going agile along with a short prescription of where you can start.

The official synopsis for the talk was:

So everyone knows what being agile is all about? It's an old buzzword now, stamped on everything that moves in a development methodology, or everything in an organisation for that matter. The problem of course is that it's hard to to really distil what makes you agile and what doesn't. If you cobble together enough process, and throw in a couple of practices, you have all you need to innovate yourself to a successful, or failing, project. That's the trouble, without real agility it is often hard to know how successful you are being in a project, and often it is hard to know how agile you are. You might think you are agile and that your project is being successfully delivered when in fact neither is true.

This talk goes back to basics and re-emphasises the concepts behind agility: showing that agility is achieved through understanding, observing and amplifying the feedback loops present in a truly agile approach to development. By understanding how you setup and magnify feedback loops in your methodology, using loose processes and practices, you have a chance at agility. I'll present reliable techniques and show how they relate to agility within the feedback context. You should come away from the talk with a refreshed view of agility, some practical tips, and be able to look more critically at how you try to be agile in your organisation.

Version 0.4.0 now available

NEW RELEASE - 0.4.0

Based on  Trac 0.11.7 this release adds two notable features.

  • Predicted completion dates for milestones of the same priority are now determined based on their relative weighting (defaulted to the same). This means that milestones of the same priority are considered to run in parallel with the observed points per period value spread across the milestones based on their relative weights. See also Milestone Priority and Relative Weight
  • It is now possible specify the number and weights of previous iterations that should be considered when determining the observed points per iteration. The default is for the current and previous four iterations to be used with each treated as having an equal weight. In other words the average is taken. This can be added to the trac.ini file as:
    [agile-trac]
    historical_iteration_weights = 1 1 1 1 1
    
    The number of weights specified is the number of iterations considered and the weights can be any values and may be floats. See also Determining how past Iterations are used to Calculate Points Per Iteration

To Upgrade Your Installation

1. Upgrade the Agile-Trac plugin

easy_install -U http://svn.agile-trac.org/BRANCH/AGILE-TRAC/SOURCE/0.11/REL/

2. Update the patch

You must also use svn to update your agile-trac patch.

Note: The location of your  Trac install will depend on the version number, for example you might have  Trac 0.11 or a newer version like  Trac 0.11.1.

Windows

This will depend on your installation, for example with  Trac 0.11, this may work.

cd C:\Python25\Lib\site-packages\Trac-0.11-py2.5.egg

Linux

Do these commands as a user of sufficient privileges, for example as root.

This will depend on your distribution. For example in Debian Testing for  Trac 0.11 you might type:

cd /usr/lib/python2.5/site-packages/Trac-0.11-py2.5.egg/

Now run svn update from the current location, for example,

svn update

3. Restart you web server

For example if you are using apache you might need to execute,

apache2ctl graceful

4. Upgrade your trac environment

Since this release includes a schema change you will need to run,

trac-admin upgrade /path/to/your/trac/project

so that the schema changes required can be applied.

Version 0.3.2 now available

NEW RELEASE - 0.3.2

This is the last the in the 0.3.x series of releases. The intention here has been to update the patch to the latest stable version of the  0.11 Trac release and fix some minor issues. The next version will be 0.4.0 and will still be based on the  0.11 Trac. This will bring better support for same priority milestones and more control over how iteration history is used to calculate the points per completion rate.

Notable in this release:

  • The patch is now based on the latest stable  Trac 0.11.7 release
  • Milestones are now shaded alternately in the roadmap summary view based on the milestone priority. Milestones with the same priority are shaded the same
  • The resolution of a story is now displayed as part of the mouse-over hint when a story is completed. Different colours are also used depending on the resolution
  • A possible overflow error was fixed for situations were very low completion rates could cause the predicted completion dates to overflow

To upgrade your installation use:

easy_install -U http://svn.agile-trac.org/BRANCH/AGILE-TRAC/SOURCE/0.11/REL/

You must also use svn update on your patch using:

sudo svn update

from the trac folder in your Trac installation.

It is probably a good idea to restart your web-server also.


The plans are to continue support for new 0.4.x series of releases while work starts on supporting  Trac 0.12.

Version 0.3.1 now available

NEW RELEASE - 0.3.1

Notable in this release:

  • Iteration pages now display an Iteration Stats sidebar in the same way Milestone pages do
  • The ticket work table in the Roadmap and the Iteration pages should now render consistently even on old versions of IE

To upgrade your installation use:

easy_install -U http://svn.agile-trac.org/BRANCH/AGILE-TRAC/SOURCE/0.11/REL/

You must also use svn update on your patch using:

sudo svn update

from the trac folder in your Trac installation.

Paying Lip-Service to Agile

source:/BRANCH/TRUNK/artifacts/presentations/jaxlondon_autumn.png Today I gave a talk about "Paying Lip_service to Agile" at  JAX 2010 in London. This is the first day and so far it has been a great conference. There was a very strong turn-out for the Agile Day and it was encouraging to see so many wanting to learn more about agile development.

I've uploaded the slides Download from the presentation as a PDF. I hope it makes for an enjoyable read!

Effective Use of agile-trac for (Distributed) Agile Development

source:/BRANCH/TRUNK/artifacts/presentations/jaxlondon2010.jpg Today I gave a talk about using agile-trac at  JAX 2010 in London. This quote, from the JAX London site, sums the JAX conference up quite well, "JAX - it's all about Technology, Architecture, Agility". I've uploaded the  slides from the presentation as a PDF. There is an 'agile-trac In a Nutshell' section which actually provides quite comprehensive documentation.

Version 0.3.0 now available

NEW RELEASE - 0.3.0

The 0.3.0 release marks some significant back-end changes and some general improvements overall. It is recommended that all users upgrade to this latest release.

  • Notably an important schema change was introduced to allow efficient mapping between tickets and iterations. This mapping is now visible on the Roadmap and on each Ticket where you can see which Iterations a ticket is associated with. This association is achieved through the addition of a new iteration_ticket table in the database.
  • This release is up-to-date with the latest stable release of  Trac, at the time of release that is  Trac 0.11.5.
  • Finally it important to note that this release would not have been possible without the help of dfraser who recently joined the development team and has already made a significant impact on the project. Long time users will remember his name from the 0.2.0 release where he provided at least one patch and other valuable feedback.

To Upgrade Your Installation

1. Upgrade the Agile-Trac plugin

Upgrade your plugin using easy_install as shown. Ensure you have administrative privileges, for example if using Linux you might need to run this as root or prepend the command with sudo.

easy_install -U http://svn.agile-trac.org/BRANCH/AGILE-TRAC/SOURCE/0.11/REL/

2. Update the patch

You must also use svn to update your agile-trac patch.

Note: The location of your  Trac install will depend on the version number, for example you might have  Trac 0.11 or a newer version like  Trac 0.11.1.

Windows

This will depend on your installation, for example with  Trac 0.11, this may work.

cd C:\Python25\Lib\site-packages\Trac-0.11-py2.5.egg

Linux

Do these commands as a user of sufficient privileges, for example as root.

This will depend on your distribution. For example in Debian Testing for  Trac 0.11 you might type:

cd /usr/lib/python2.5/site-packages/Trac-0.11-py2.5.egg/

Now run svn update from the current location, for example,

svn update

3. Restart you web server

For example if you are using apache you might need to execute,

apache2ctl graceful

4. Upgrade your trac environment

Since this release includes a schema change you will need to run,

trac-admin upgrade /path/to/your/trac/project

so that the schema changes required can be applied.

Refer to Installing Agile-Trac for more details.

Version 0.2.0 now available

NEW RELEASE - 0.2.0

This is an important release with several noteworthy points.

  • we've created a release branch starting with 0.2.0 to allow more aggressive changes to be made on the development branch. For those who don't mind the odd breakage then you are free to install and update from the development branch. Details for the release branch can be found on the installation page. Branch details are summarised at the end of this post.
  • we've moved to a single unified patch for all 0.11.x trac installs. This will significantly reduce the overhead of making updates. We held off doing this as there were some version specific issues that are now all resolved. In essence the unified patch will be against the latest trac release on the 0.11 branch.
  • we've fixed quite a few annoyances, some of which were considered critical. These are listed below. Some great community support has made these fixes possible.
  • we've ironed out database back-end issues so that we work with both Sqlite and Postgresql (including 8.3). If you have an Sqlite install and would like to migrate to Postgresql then you can read more on the Migration from Sqlite to Postgresql page.
  • we've added some improved documentation for the configuration options currently supported by Agile-Trac.

Some Stories and Defects addressed in 0.2.0

There have been more changes than those listed and some incremental changes for stories which are not yet complete, however some of the highlights are shown in the list below.

  • #91 - Error when an iteration contains a story that does not belong to a milestone. Many thanks go to augustinus for reporting this and providing a patch!
  • #101 - Previewing a ticket when progressing a completion stage resulted in an error. Many thanks go to dfraser for reporting this and providing a patch!
  • #67 - Ticket changes were not being saved when a ticket had custom fields
  • #75 - Workflow bug where a completed story because of resizing to 0 is not DONE
  • #76 - No notification email sent when a story is partially complete
  • #97 - Makes it possible to reset the calculation of points per iteration to account for large team size changes.
  • #98 - Provides an indication what the date calculations on the Roadmap are based on.
  • #105 - Documents and provides working support for custom completion stages

To Upgrade Your Installation

Upgrade your plugin using easy_install as shown. Notice the new URL for this release,

sudo easy_install -U http://svn.agile-trac.org/BRANCH/AGILE-TRAC/SOURCE/0.11/REL/

You must also use svn to checkout the new unified patch, replacing your previous patch.

sudo svn co http://svn.agile-trac.org/BRANCH/AGILE-TRAC/SOURCE/0.11/REL/patch/trac/ trac

Refer to Installing Agile-Trac for more details.

New Trac-0.11.x Agile-Trac Branches

There is now a development and release branch for the Trac-0.11.x version of Agile-Trac.

The URL for the development branch is:

The URL for the release branch is:

Starting with SVN revision 270 it is now possible to install Agile-Trac onto a trac install using Postgresql 8.3

svn update required

As many of you might know, using trac with an  SQLite database on the back-end is not a very scalable solution. With a very large database and or many users you'll get a slow trac or even database lockups. Moving to  PostgreSQL will address most of these problems. However, starting with  PostgreSQL 8.3 type checking became stricter and many plugins do not work well. Included in those was Agile-Trac. However since r270 Agile-Trac now works as expected with  PostgreSQL 8.3.

Patch for Trac 0.11.3 now available

Support for  Trac 0.11.3 is now available.

For  Trac 0.11.3 use,

svn co http://svn.agile-trac.org/BRANCH/TRUNK/source/agiletracplugin/0.11/patch-0.11.3/trac/ trac

Starting with SVN revision 247 it is now possible to install Agile-Trac onto an exisitng environment

svn update required

Previously it was not clear how best to install Agile-Trac onto an existing trac environment - with existing tickets. After sufficient experience of Agile-Trac in the real world a simple strategy has been adopted to handle this scenario and has allowed ticket:44 to be finally addressed.

There are two key areas that have caused difficulties. First Agile-Trac relies on the data stored in the ticket_completion table to calculate information relevant to ticket groups (like milestones and iterations), and second, the milestones themselves have an additional priority field in Agile-Trac which is used to help order milestones on the Roadmap view.

Starting with SVN revision 247 ticket completion fields and milestone priorities are lazily created so it is not required that they exist in the database. For milestones this has actually not been an issue for some time now, but for ticket completion fields it was unclear what an appropriate default set of values were.

The approach taken is this:

  • If a ticket does not yet have a status of closed then the initial size values are considered to be undefined.
  • If a ticket has been resolved to a status of closed then the size values for the ticket are considered to be 0.

The reason for considering closed tickets to have a sizing of 0 is actually quite simple. We use the sizing only to associate the progress of a ticket with a time duration - an iteration, and since these tickets were closed previously that association does not exist. Hence we treat as having a 0 size. This aligns well with the notion of a fixed ticket being simply available. The recommendation in fact is to rename the fixed resolution to available and make another resolution, for example split or invalid the default resolution.

Brief Server Downtime Today (Feb 15th 2009) during Lenny Upgrade

We experienced some brief downtime (approx. 25 minutes) today while the server was upgraded to a shiny new Lenny install.

User Stories and Use Cases? Sure, it even makes sense.

source:/BRANCH/TRUNK/artifacts/presentations/agile_2008_logo.png I'm not sure why but somewhere along the way User Stories were branded 'agile' and Use Cases largely relegated to a high ceremony tool for non-agile methodologies. I gave a talk about this at Agile 2008 that set out to challenge that view by suggesting that both User Stories and Use Cases could, and should, co-exist as complimentary techniques in effective agile methodologies.

The terms User Story and Use Case are two pretty broad terms, so the first thing the talk does is to clarify just what I mean by each. It would of course be possible to adopt one term over the other. For example, we could call a User Story a Use Case Brief (a la Cockburn), but I believe it is helpful to keep a separation between the two terms. Another aspect of the talk was the idea that User Stories can be used to provide a uniform method of capturing functional requirements, as well as system constraints.

Having introduced the terms, I outline how, and when, User Stories and Use Cases can be used in a typical agile methodology, and importantly how one relates to (and compliments) the other. For example, typically User Stories are the technique of choice when Release Planning and Use Cases help a lot with Iteration Planning.

As User Stories and Use Cases can exist at different levels, from business use down to component interaction, I show how a User Story can relate to more than one Use Case, and how a Use Case can be related to more than one User Story. Similarly I also look at how Use Cases can sometimes provide a 'glue' between User Stories.

If you are an experienced agile developer you may not get a lot from this presentation, but I would hope it does get you thinking.

Agile Development in Globally Distributed Team

source:/BRANCH/TRUNK/artifacts/presentations/agile_2008_logo.png One of the great uses for tools like trac, and obviously agile-trac, is development in a distributed environment. Much of the initial design of agile-trac grew from an agile project where the whole team was distributed with team members on different continents and hence also in different time-zones. During that project a lot was learned about how to work effectively in a distributed setting.

A key observation is that the solution to distributed development is not co-location. You can effectively develop within a distributed team, and with reasonable tool support this can be quite pain free. I link to a  presentation here that was first given at Agile 2008 in Toronto last year. It captures many of the lessons learned from several years of working in agile distributed teams. It turns out that going agile can really bring benefits in a distributed setting as it helps focus both the nature and the quality of communication.

Foundations of Agile Development

When I am introducing agile development within a company, or within a team, I find it useful to give a brief overview of what I actually mean by agile development.

The reasons for this are simple. Most people have heard of the term agile development but yet there appear to be many different perspectives on what is meant by that.

For example, many people are of the opinion that to be agile means practicing one of the many canned agile methodologies, like XP, FDD or Scrum. Others have a very practice oriented view of agile development. That is, they see agile development as nothing more than a collection of practices, like TDD, pair programming and so on.

As a result of that I typically introduce the idea of agile development with a quick presentation of what I feel are the  foundations of agile development. I also try to tie into that discussion some of the terms with which most developers are already familiar with, such as use cases.

Of course agile-trac has been designed to support the foundations of agile development outlined in this presentation. Some of the screenshots in the presentation are from a heavily hacked wiki site which used perl scripts to try to simulate some of the functionality that is supported first class in agile-trac.

This presentation is a good starting point for understanding agile-trac and how it should be used. It is not intended as a replacement for documentation, but should nevertheless provide some useful insights.

Version 0.1.5 now available

NEW RELEASE - 0.1.5

Notable in this release:

  • the addition of date-picker controls for iteration dates, complete stage dates and milestone due dates
  • support for  Trac 0.11.2

To upgrade your installation use:

sudo easy_install -U http://svn.agile-trac.org/BRANCH/TRUNK/source/agiletracplugin/0.11/

You must also use svn update on your patch using:

sudo svn update

from the trac folder in your Trac installation.

SVN update required for patches of revision 209 or less

svn update required

r210 contains a fix for ticket:73. Many thanks to sgissinger for the patch. Please use svn update to obtain the changes.

For  Trac 0.11 use,

svn co http://svn.agile-trac.org/BRANCH/TRUNK/source/agiletracplugin/0.11/patch-0.11/trac/ trac

For  Trac 0.11.1 use,

svn co http://svn.agile-trac.org/BRANCH/TRUNK/source/agiletracplugin/0.11/patch-0.11.1/trac/ trac