Archive for the ‘Agile’ category

Succeeding With Agile

February 2nd, 2011

Mike Cohn is a well respected author, trainer and coach. I follow his blog at Mountain Goat Software avidly and am hoping to attend his Certified Scrum Master training in the near future. In the interim, I obtained a copy of the three books he has published and I will be working my way through them as time permits.

I am not new to Agile or Scrum (but of course always learning), but more recently I have been tasked with building a Scrum team, delivering working software, and looking to further spread Scrum. Succeeding with Agile describes how to introduce and spread Scrum within an organisation, and the challenges\rewards of such an endeavour. I was looking forward to seeing how my experiences would compare to the experiences relayed by Mike.

» Read more: Succeeding With Agile

Interviewing for an Agile Team

November 15th, 2010

Over the years, I have been involved in interviewing candidates for lots of different roles and companies. I say involved, as it is normally the case that I am rolled in to help assess the technical competency of the candidate and provide feedback in this regard. Typically this involves quizzing the candidate on roles and technologies outlined on their curriculum vitae and technologies utilized by the hiring company or team. Very rarely does the process go beyond this.

More recently, I have been seeking to hire for a specific role and have been receiving curriculum vitae from a number of different sources.

Having more influence on the process, I decided I would screen candidates via a 30 minute phone call during which I would introduce the role, and ask a number of questions from a predefined list. If the candidate displayed any particular in depth knowledge of a specific area, I would “go off piste” and deviate from the predefined list. The aim of this approach was to reduce the amount, or weight, of subjective opinion when evaluating the candidates familiarity with the technology stack. I felt it was less disruptive for all involved than having a face-to-face screening interview.

For candidates who progressed beyond the screening, I decided that for this particular role, I would take a more novel approach to the interview. I felt that at this stage, I had already established (as much as I could without sitting them in front to of a keyboard) that the candidate was familiar with the technology stack so I wanted to assess their approach to problem solving and design.

My approach was to present the candidate with a popular board game (Monopoly) and ask them to design an online platform for the game. There was a short brief but everything they needed was in the box. So what was I looking from the candidate?

I was looking for the candidate to display a willingness to take on the challenge, be pragmatic in their approach to presenting a design in the short time frame available, and be able to present a coherent explanation of their solution along with the decisions they had to make along the way. I also expected the candidate to have an appreciation of how the solution would further evolve .

I was also looking for other less desirable traits, such as the temptation to dwell too long on the instructions, or an unwillingness to have their design challenged.

Overall, I think the approach worked well and though some within the team were originally skeptical, everyone soon appreciated the benefits of this approach over the more traditional Q&A approaches. I will certainly be more willing to try alternative interviewing techniques in the future.

I’d be very interested to hear feedback on this approach or on other approaches people or companies have taken.

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading ... Loading ...

Patterns of Agile Practice Adoption

July 13th, 2010

Patterns of Agile Practice Adoption” is another book from InfoQ that describes potential ways in which Agile practices could be adopted individually and as clusters of practices that complement one another.  As with Domain Driven Development Quickly, this book can be freely downloaded (registration required).

Part 1 – Business Value, Smells, and an adoption Strategy

This part of the book focuses on the reasons why one might consider adopting agile practices.  It starts by looking at the value that agile practices can bring to the business, follows on by suggesting problems that agile practices could address and finishes by describing how to adopt agile practices.

Business Value

Agile practices have the potential to deliver value to the business in a number of areas and your business might be more sensitive in one or more of these areas.  The areas discussed include:

  • Reduce time to market
  • Increase value to market
  • Increase quality to market
  • Increase flexibility
  • Increase visibility
  • Reduce cost
  • Increase product lifetime

A useful exercise is presented at the end of this section to help one determine which areas are more important to your business.

Smells

We, as developers, are used to discussing code smells but probably less used to discussing smells in our development methodology or practices.  This section discusses “Business smells” and “Process smells”.  Business smells are smells that affect the business and are visible to customers while process smells are only visible to the development team.  I’ve listed the smells discussed below:

Business Smells

  • Delivering new features to the customer takes too long.
  • Features are not used by the customer.
  • Software is not useful to the customer.
  • Software is too expensive to build.

Process Smells

  • Us vs Them.
  • Customer asks for everything including the kitchen sink.
  • Direct and regular customer input is unrealistic.
  • Lack of visibility.
  • Bottlenecked resources.
  • Churning projects.
  • Hundreds of bugs in bug-tracker.
  • Hardening phase needed at end of release cycle.
  • Integration is infrequent.

Again, a useful exercise is presented at the end of the section that asks one to discover, investigate and rank smells within the organisation.

Adopting Agile Practices

An awareness of agile practices is assumed as business values are related to corresponding agile practices that could potentially enhance the ability to deliver these values.  Similarly, smells are related to corresponding agile practices that could potentially address the smell.

Advice is then delivered on how to use the information presented to develop a tailored agile adoption strategy.  This advice can be summarised as follows:

  • Be business-value focused.
  • Be goal oriented.
  • Adopt iteratively.
  • Be agile about your adoption.
  • Use a test-driven adoption strategy. (i.e. validate your results)

Part 2 – The Patterns

As with any pattern language, the patterns presented adopt a standard layout.  The layout presents:

  • Name: Pattern name
  • Description: Brief description.
  • Business Value: Business values pattern effects.
  • Sketch: Narrative of pattern use.
  • Context: Environment where the pattern may be applied.
  • Forces: Elaboration of specific environmental conditions acting on the pattern.
  • Therefore: Full pattern description.
  • Adoption: Adoption guide.
  • But: Negative consequences.

Automated Developer Tests

This pattern describes a set of tests that are maintained by developers to reduce the occurrence and/or cost of bug, increase confidence when refactoring and increase decoupling.  The tests are then executed automatically as part of a continuous integration process.

Test-Last Development

This pattern describes writing automated developer tests after the code has been written.  Tests tend to conform to the initial implementation rather than the requirements (if they differ).

Test-First Development

This pattern describes writing automated developer tests before the code has been written.  Testing in this way is more effective than Test-Last Development but harder to adopt.  Tests conform to the requirements as no code exists.

Refactoring

This pattern describes changing the structure of code without changing the behaviour.

Continuous Integration

This pattern describes the practice of performing a clean build, deploy and execution of unit and integration tests every time a code change is committed to the source repository.

Simple Design

This pattern describes resisting over engineering a solution and extending a design only when required.  Add more flexible\complex designs only when needed to avoid the cost of complex software until the benefit is necessary.

Functional Tests

This pattern describes executable requirements that can be used as functional tests.  These functional tests represent the requirements of the user and when complete indicate the requirement is done.  Some useful examples are provided to clarify what functional tests are.

Collective Code Ownership

This pattern describes code ownership where no one individual or set of individuals has exclusive ownership of a section of the code base.

Part 3 – Clusters of Practices

Clusters, as described in this book, are groups of agile practices that build upon or complement each other such as the cluster of practices are greater than the sum of their parts.

Evolutionary Design

This cluster describes a set of practices that support an evolutionary design process.  These practices include Automated Developer Tests, Refactoring and Simple Design.

Test-driven Development

This cluster describes a set of practices that focuses on developer tests.  These practices are primarily Evolutionary Design, Collective Code Ownership and Continuous Integration.  The primary practices in turn include others resulting in the inclusion of many of the practices described.

Again the sketch is very useful in that it narrates a very real illustration of adopting this cluster of practices.

Test-driven Requirements

This cluster describes a set of practices that focuses on testable requirements.  These practices are Functional Tests, Customer Part Of Team and Continuous Integration.

Thoughts

The first part of the book deals with the first problem when trying to adopt agile practices and that is to get buy in from the stakeholders.  What is the business getting from this transition? What are the business owners getting?  What are the developers getting?  All questions that need to be answered before you can start to transition to agile practices.  The transition is not an easy one and so you will need committed stakeholders.

The section on smells relates the problems that the business is experiencing to those of the development teams and vice versa which is really useful in clarifying possible cause and effect.

I recently read The Pragmatic Programmer and I like the way the material presented similarly to a pattern language i.e. short, concise and well organised.  Presenting them as patterns also leads a developer familiar with patterns to understand how they can be applied, as guidance rather than absolute right or wrong.

The “Sketch” narrative in the patterns section enhances the understanding of the pattern.  I like this story telling approach and it is similar in style to the Kate Oneal stories by Ron Jefferies.

The difficulty of non-consistent architecture when applying evolutionary design is very real and although it is addressed in the book, it is a problem that will always be difficult to address.  Communication and collaboration can be the key but then you have the potential problem of too much communication.  The “Divide After You Conquer” technique is one I have seen work well in the past and this is the approach I would tend to take.

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading ... Loading ...

Ron Jefferies – Annals of Kate Oneal

January 27th, 2010

While I was re-reading JUnit Recipes recently I followed one of the suggested links to Ron Jefferies website on Extreme Programming. Ron provides some really interesting material on his website but one of the things that I really liked was the ‘Annals of Kate Oneal‘.

Anyone who has read one of the Head First series of books will be familiar with a conversational style of writing that introduces concepts progressively through fictitious scenarios. Ron uses a similar approach with the ‘Annals of Kate Oneal’ through which he presents Agile ideas and concepts.

The ‘Annals of Kate Oneal’ are presented in a series of bite size stories centered on Kate Oneal, who is advocating Agile methods to a company that has had difficulty using traditional approaches to software development. As an advocate, Kate is often explaining the advantages of Agile from different perspectives and to different audiences. She also has to deal with the practical aspects of introducing Agile to a company that has no previous exposure, so is often found in the role of a mentor.

I am not going to describe her tales any further but, if you haven’t done so already, I do recommend you visit Ron Jefferies website and read the ‘Annals of Kate Oneal’.

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading ... Loading ...