Posts Tagged ‘Agile’

The Zen of Agile

Thursday, January 12th, 2012

Author: Colin McCririck

We don’t really do TDD, we are a long way from achieving continuous delivery and our low levels of test coverage make releases a nervous time, but we think we’re pretty good at Agile.

I was reflecting on what I had learnt in the past year and how agile my team had become.  Despite immaturity at some of the key agile practices, in 12 months we deployed 79 releases to production for an application that is now processing 2 million transactions a day and serving 5 lines of business, 45 products and 3,000 concurrent users.   We ran four major projects concurrently while supporting production on a single codebase.  2011 involved lots of hard work, a dose of good luck and some progress on our journey to be more agile.

So here are some things I learnt last year:

  1. Speed.  Velocity is great, especially if you deploy to production often, because business benefits start rolling early.  Rapid delivery also builds confidence and trust in your delivery capability (with management and the business).  There is, however, a dark side.  Velocity for us has brought with it technical debt.  The business and project teams care less about this while projects are delivering but speak to any production support or maintenance team and quality and technical debt usually feature highly.  Getting the balance right is difficult.  Do you pay your credit card off every month or let the interest grow till you hit the card limit (there’s a reason banks set limits on credit cards – there’s a point of no return).  Lesson –Deliver things fast to build business trust and confidence – success breeds success.  Make sure someone champions quality and technical debt reduction.  Velocity rarely needs a champion because it’s simpler to understand gets its own momentum.
  2. Quality.  If speed is not matched with repeatable testing capability then you’ve built technical debt because every change requires regression testing to give confidence that the production system won’t break.  Remember this is the same functionality we wanted to deliver fast to get early benefits – if changes break the system your benefits stop rolling a lot faster than your project took to get them rolling.  Building quality in is the best way of working.  Traditional projects have late testing cycles.  The culture of ‘develop functionality fast and get someone else to test it later’ (lets call it test separation) amplifies two problems.  The first is slow defect feedback cycles which raise costs and lowers quality.  Secondly, projects cut testing effort when schedules slip and deadlines are committed.  Test separation culture is strong and difficult to shift to a team owned test culture (BDD, ATDD, TDD, test automation ie team shared accountability for building quality in).  Don’t underestimate this.  This is particularly important as you scale.  A team of 8-10 TDD guns can do amazing things, but when you scale that to 150, you have different problems to solve (hiring 10 TDD guns won’t change the other 140 people).  Lesson – Invest in building quality in.  It’s cheaper and more effective long term.  For larger teams you need to build capability and apply change management to make it stick.
  3. Scale.  Size matters.  Agile is easier with small teams of smart engaged people but so is waterfall.  Big organisations have momentum and it’s difficult to turn a big ship.  Beware lipstick on a pig (politics drives some people to put lipstick on their pigs and call them agile) – thankfully agile is pretty transparent and pigs with lipstick stand out if you’re willing to walk the floors and read a few story walls.  Scaling from 10 people to 100+ usually means you have a normal distribution curve of capability.  To counteract this you need a change program at multiple levels.  Examples include the shift from manual to automated testing and the changing role of BA’s, developers, testers but also decision making and business involvement.  Lesson – Walk the floors, use the transparency to reinforce the changes.  Be brave enough to declare pigs with lipstick as pigs.
  4. Culture.  From a leadership perspective this is one of the most important.  Many people see Agile as a methodology or see technical views of practices like TDD.  From a leadership perspective I see a shift from hierarchical command and control to self empowered teams – the teams choose what stories get done next.  This is confronting to leaders who thrive on the power of control and followers who want to be told what to do.  But a culture where people collaborate to understand business priorities and work together to deliver them faster is very powerful.  Cultural change needs strong leadership but also needs the right attitude and adaptability of the people in the engine room.  Lesson – Be willing to try new things and make it safe to fail.  Educate business, technical leaders and project managers as well as the engine room.  Set expectations – not everyone will drink the kool-aid.
  5. People.  Standups and retrospectives are easy to learn, TDD is hard (as is BDD).  Many TDD advocates probably disagree, but I’ve found this practice to be much more difficult to adopt at a large scale.  I think this is because it’s a mindset shift.  Arrogance plays a part but change resistance is a bigger component.  Why do I need to test a one line change to a 10 line class?  In an application with 500,000 lines of code no one knows how the whole thing behaves.  TDD combined with automated acceptance tests provides fast feedback (read higher quality and lower cost defect reduction) and confidence that changes can be deployed to production.  People who have relied on testers and testing stages of projects for years struggle to change to the mindset that testing happens at the beginning, should be automated and repeatable and is the whole teams accountability.  Lesson – people naturally resist change.  A learning culture still needs goals and measures to help guide and drive capability improvement.

In summary, do simpler agile practices first, build on successes, keep learning.  Some agile practices are hard (especially at larger scale) but also have greater benefits.  Build a learning culture.  To misquote a Zen saying, if you think you’ve achieved it, you haven’t.

The Quick and The Dead…………….

Tuesday, December 20th, 2011

Author:David Greenless

In the ever changing world of IT it’s extremely important to stay on top of things.  To be successful at almost everything these days you need to ‘hit the ground running’.

It’s fair to say that the above is common understanding.  But what tasks do you undertake to achieve it?

It is especially important in the world of consulting… multiple projects, multiple clients, and an even greater need to avoid failure!

I think it’s even more important in the world of software testing consulting.  By nature we (software testing consultants) are called in towards the end of the project…

It may be behind schedule, or perhaps testing was an after thought (shock, horror… but it still happens).  Whatever the reason may be, it tends to happen quite frequently.  This leaves us very little time to gain the amount of knowledge required to introduce a successful quality control such as testing.  All of this and I haven’t even begun to think about entering an agile environment.

Does this make it even more important again?  By nature, true agile environments are fast paced so I would think it does.

Below is a small sample of the things I like to do which assist me to ‘get up to speed’ in a timeframe that suits the context and level of my engagement (in no particular order):

  •  Exploration – I find this is key, especially when engaged at the analyst level.  I find it very handy to request access to the applications/s under test (even if read only to begin with) and just get in there and dig around.  Take a tour of the application/s and note key areas/function points as you go and try some of the more common scenarios or use cases.  This will give you a great understanding even if only visual.  There will be many occasions when you attend meetings, etc. where the participants are talking about the application/s and you’d be surprised how much easier it will be to follow the discussion if you can visualise the areas they are talking about.  Michael Bolton wrote a cracker of a blog here, (http://www.developsense.com/blog/2009/04/of-testing-tours-and-dashboards/) and also take a look at the comments, specifically Cem Kaner’s.
  • Meetings – Schedule new ones, attend existing ones.  When you’re new to an organisation or a project you’ll normally find that introductory meetings are booked, however if not then book away!  Putting a face to a name is vital and will help you understand where you can go if you need a question answered (we can’t know it all unfortunately).  I also find it useful to attend existing meetings that would not normally be attended by your role.  Even if it is simply a one off in the first week or so, it will give you a greater level of understanding and a better appreciation of what others are facing.  This is often met with confusion by the meeting chair when requested, but nine times out of ten they will actually be all for it once explained.
  • Interviews – This does depend greatly on the level of your engagement, however one on one interviews are a great way of getting individual perspectives on project progress, team morale, etc.  Ask each of the Test Analysts how they feel about the application or what they think the biggest benefit will be from the new system, etc, etc.  You’ll discover many differing opinions which will assist in guiding your approach.
  • Reading – This one goes without saying.  On most occasions there will be hundreds of pages of reading… project documentation, organisational procedures, training, etc, etc.  Fitting all of this in is a big task.  Instead of simply reading everything I’ll usually ask the right person (whomever that may be) what I need to concentrate on, and what I can skim over.  Take a risk based approach like you would for testing.  We’ve all heard of exhaustive testing and how in real world contexts it’s not possible?  Well exhaustive reading isn’t either, not when the deadline is knocking on your door!
  • Build Relationships – I cannot stress enough how important this is!  Everyone does this differently, and your focus needs to be different depending on the type of relationship you’re trying to build.  Maybe you need to get on the developers side because you can see straight away there are going to be a large amount of bugs, or you’re going to need their help in developing stubs… maybe the architect because they know the business and technology layout like the back of their hands and will be able to answer any question you may have.  Whatever the need, get in early and build!  If you can identify with the ‘go to’ person in the initial few weeks, then things will be much easier for you.

(more…)

How Many Dysfunctions Fit

Wednesday, November 16th, 2011

Author: Graeme Robb
Once upon a time there was a team and a manager…Once upon a time
Something has to be changed about the way the team is working.
The management decide what changes should be made and do not consult the team.

The team suggest that the change isn’t perfect, and the management would be wise to consider a few risks and suggestions.

The risks are noted but the suggestions from the team are not considered, partly because the frustration felt by the team comes through as a little negative, but mostly because the decision has been made already and the project must move on.

The team are frustrated, and cautiously proceed with the changes, the considerations that were raised by the team have been “noted”.

The risks eventually become an issue, the team is frustrated, and attempt to raise the suggestions as before, but cannot conceal their increased frustration.

The management are also frustrated by the issue, but are perturbed by the teams frustration which is now distinctly unconstructive.

The management conclude that the biggest issue is with the team’s attitude, and not by the risks that were raised.

The management decide that they must step in to address this problem and something has to be changed about the way the team is working.

The management decide what changes should be made and do not consult the team………..

Safe to fail – Blame worthy or Praise worthy?

Friday, August 19th, 2011

Author: Phil Abernathy

In the April 2011 issue of the Harvard Business review , Amy Edmonson , Professor of Leadership and Management at the Harvard Business review, has a great article on strategies for learning from failure.

It made me think of  how the Agile way of working looks at failure and how we learn from it . In Agile the ‘safe to fail’ mantra is often talked about and just as often abused in more ways than one.

Sometimes teams and people are blamed for failure and hence don’t feel safe, sometimes teams use the ‘safe to fail’ umbrella to not follow any procedure or agreed rules and just do what they want.

A ‘safe’ environment is essential for improvement and innovation, creativity and morale, the key ingredient to creativity and morale, the key ingredient to creating this safe environment is clarity of what types of failures are ‘safe’.

The Failure Spectrum

 

 

(more…)

Agile is a Fad!

Monday, July 18th, 2011
 
Author:  Jonathan ‘Kupe’ Kupersmith
 

Jonathan 'Kupe' Kupersmith

Jonathan “Kupe” Kupersmith is Vice President of Brand Development, B2T Training and has over 12 years of business analysis experience. He has served as the lead Business Analyst and Project Manager on projects in various industries. He serves as a mentor for business analysis professionals and is a Certified Business Analysis Professional (CBAP) through the IIBA and is BA Certified through B2T Training. Kupe is a connector and has a goal in life to meet everyone! Contact Kupe at kupe@b2ttraining.com.
 
(This blog was originally written on the BA Times blog site. It is kindly reproduced here with Kupe’s permission).
 
Agile is the hottest word in our profession these days. Go to any BA or PM conference and there is at least 1 session dedicated to agile. Even if the session does not have agile in it, you’ll hear the agile word over and over. On sites like this one, there are many blogs and articles written about agile. Here is the article that inspired me to write this post, Four Agile Tips to Eliminate Rework in Application Development.
 
 The article lists these four tips which are credited to agile methods.
  1. Collaborate – Involve multiple stakeholders in requirements definition.
  2. Be Lean – Quote from article – “Agile methods teach us that a 400-page document is not required in order for development to begin. In an agile environment, development can start with high-level user stories with perhaps one layer of detail added.”
  3. Iterate – Approach requirements definition in an iterative process.
  4. Visualize – requirements do not have to be written in paragraph form.

I agree 100% with all of these tips not because they are agile tips, but because they are smart practices. Before the Agile Manifesto was developed, I worked on teams that collaborated, were lean, iterated, and visualized. I wrote about this in a blog post last year, My First Agile Project. I would guess you have been doing this for some time too. This is why the word agile is a fad. In the near future we will stop having debates of whether you use agile vs. traditional approaches. We’ll just start doing what is appropriate for projects to drive results.

This spring I saw Scott Ambler speak and he said we don’t need repeatable processes we need repeatable results. What this says to me, is do what is needed to drive results.  Teams need to come together and determine what will work best to give them the best chance to deliver results. This is just smart.

The agile movement shook our community and made us all think about how we were running projects. It made us make sure we are focusing on business value. Don’t push for agile over waterfall, push for what is right for the project. Push for what is right for the business in the short and long term. Even though I think the word agile is a fad, the agile movement is definitely a trend.

All the best,

Kupe

Don’t forget to leave your comments below.

12 Agile Adoption Failure Modes with Jean Tabaka

Tuesday, June 14th, 2011

Author: Renee Troughton (@AgileRenee)

I had the pleasure on the 9th June to see Jean Tabaka in action at the Brisbane YOW night. Topic in reflection: 12 Agile Adoption Failure Modes.

My interest was immediately peaked when the opening question was:

“Ask the four or five people around you what are some of the key causes for an Agile Implementation to fail”.

What we were met with was two elements of failure – 1) at a team layer and 2) at an organisation or enterprise layer. An element of distinction between these two was not really made so I am left to assume most of the twelve failure modes are directed at an enterprise layer.
(more…)

The Evolution of Test Driven Developers

Thursday, June 9th, 2011
Author: Peter Sellars (Reprinted with thanks to Peter)

Evolution

Test Driven Development (TDD) since its rediscovery by Kent Beck in the early noughties has led to an evolution in the information technology developers of our species. So where on the test driven developer evolutionary tree do you or your developer kind sit?
(more…)

Agile @Home – Finances!

Thursday, February 24th, 2011

Author: Jonathan Coleman

Let me begin by telling a story.

In our household – there’s 2 adults, and 3 kids. We live off one income, and have done so for the last 8 and ½ years. We’ve tried all sorts of things to keep our day-to-day budget under control – everything from pencil and paper adding up, to complicated spreadsheets that only a 3rd generation statistician can understand, to nothing at all (short lived), to back to paper and pencil …. etc etc.
(more…)

Open your retrospective purse and count the change!

Thursday, January 20th, 2011

Authors: Agile Coaching Community

Retrospectives without action are like faulty vending machines – neither give you change!

In part of 1 of this 2 part series the Agile Coaching Community offer their ‘wisdom of the crowd’ on what makes for a good retrospective.

“Retrospective is a shift from a study of what you did to an action that will change the future of how you do things.” ~Diana Larsen

A retrospective is an Agile practice that subscribes to the Kaizen philosophy and Lean principle of continuous improvement. Kaizen is Japanese for ‘improvement’ or ‘change for the better’ and goes beyond simple productivity improvement. When applied correctly, Kaizen, not only increases productivity and adjusts processes but focuses also on increasing people’s self belief and morale. Praise and encouragement are key parts of promoting innovation and creativity critical elements in the long term health and productivity of the organization.

While Kaizen is a daily process, retrospectives are traditionally more aligned with the practice of ‘Kaizen blitz’ that is designed and organised to address issues that occur over the course of a short timeframe such as a week or an iteration (2-3 weeks).

How often do you course correct?
Traditionally a retrospective is held at the end of every iteration, but let’s make one point clear, once at the end of a project or release is not enough to course correct. The longer we wait to address issues the bigger and harder they become. By making frequent and small improvements we end up with larger gains. We have seen an example of one team who held a daily short and sharp retro to address small and frequent change increments with great success. Another good technique to force a retrospective is to post actions on the wall throughout the iteration until a certain number of actions are reached.

If you can change something now that will make a positive impact for your team why wait?
Continuous improvement should be a team mindset and they should not hold off addressing issues until a retrospective is held. However, remember that it is important to create a sustainable and stable delivery time box. Continuously changing the process during the iteration should be avoided.

So what questions should you ask during a retrospective?
Do you always ask:

  • What worked well?
  • What didn’t work well?
  • What still puzzles us?
  • The answer is that is – It depends!

Final thoughts on running a 70 person retrospective

Thursday, November 25th, 2010

Author: Jonathan Coleman

After the celebration morning tea, I did some follow up work to keep the momentum going and so that everyone was reminded of the great experience we had on the day of the retrospective. I emailed out photos/descriptions of the major issues, the top things we could do about them, and the names of the action owners to everyone. We then followed this up through the next iteration. Several workshops were born and we chased up on issues through these.

Would I do it again with 70 people? My answer would be YES!

This was a very successful retrospective in that it did the following things:

  • Gave people a chance to speak out in the group (through smaller groups on the day)
  • Allowed people to “own” the issues rather than being told what to focus on
  • Fostered intense collaboration between the groups because of the necessary timeboxing
  • Allowed people who don’t usually have an opportunity to present, to be front and centre to the team what the actions were.
  • Built the team culture of facing obstacles honestly, and having the ability with the team itself to overcome them.
  • Nothing is impossible!

So, again thanks go to the ideas/tips gleaned from the Agile Academy’s Facilitation Course. The retrospective itself was a really useful session for me and thanks to everyone who attended and took part. I look forward to facilitating future retrospectives, no matter how big. My final thanks go to James King and Craig Smith, two great Agile coaches and trainers for their ideas and input.