New Agile Acronym – EFCIC

Recently, I was preparing for a couple of speaking engagements and was thinking about how to summarize what Agile means to me.

What I came up with was Empowerment, Flexibility, Communication and Collaboration, Iterating on Feedback and Continuous Improvement.

Written out as an acronym, this spells EFCIC, which kind of sounds like efficacy, which means “the power to produce a desired result; effectiveness”.

Well, that sounds like a pretty good goal and something that Agile can help with, so here is my new Agile acronym…

E mpowerment

For Agile to work well, teams and individuals must be empowered. Empowered to make decisions, empowered to estimate effort and complexity, empowered to fail and learn from mistakes, empowered to ask questions, empowered to be creative, empowered to develop their skills, etc. If teams are empowered, they are more likely to be able to face challenges that come their way.

F lexibility

Let’s face it, plans rarely go as expected, especially in software development. The ability and need to be flexible is essential. Having the mindset that things are going to change can help be prepared when the time comes… and it will. If teams are flexible, they will be able to quickly pivot and head in a different direction when necessary.

C ommunication and Collaboration

To me, communication and collaboration have a strong correlation and both are really important. Teams need to have strong internal communication so they can become high performing and external communication so they can work with other teams and identify dependencies. Collaboration – whether it’s pair programming or working with the PO to define a feature – will help teams get the most out of each other and also increase team cohesiveness. If teams communicate and collaborate, they are more likely to be on the same page, come up with better solutions and continue to improve.

I terating on Feedback

Don’t fool yourself and think that you’re going to build a product right the first time. Instead, build something small, get feedback, iterate on it, get more feedback, iterate, feedback, iterate, feedback, etc. If teams iterate on feedback, they are less likely to waste time and more likely to build the right product.

C ontinuous Improvement

Even if your team seems like they are firing on all cylinders, chances are that there are some improvements that could be made. Focusing on continuous improvement is important so teams don’t get too comfortable. Experimentation is one of the keys here because it helps people think outside the box and leads to new discoveries. Even if the experiments don’t work, at least you know what doesn’t work. If teams focus on continuous improvement, they will challenge themselves and the status quo, benefiting not only the team, but the organization as well.

Does EFCIC represent the way that you view Agile? I would love to hear your thoughts.

Location, Location, Location – Working with distributed teams

Location is important for Agile teams

Working with distributed groups is not an ideal situation for an Agile team, or any team for that matter. However, there are certain steps that can be taken to maximize the effectiveness of distributed teams, and I’ve outlined ten below.

Step 1 – Relocate

Relocate your distributed team so that they are no longer distributed.

Step 2 – Minimize locations

Minimize the number of locations for the distributed team. For example, I was on a team with people in six different locations at the same time. I’ve also been on teams where people were located in only two locations. Two locations is preferred over six because the coordination is much easier.

Step 3 – Limit time zones

Match the time zones as closely as possible. I have worked with team members in China, India, Belarus, Russia, Lithuania, Mexico, Uruguay, Colombia, Argentina, Brazil and different states in the USA. Having team members in Chicago and Mexico City is easier than Chicago and India because the time zone is the same. With distributed teams, you want to maximize the amount of overlapping work hours.

Step 4 – Get everyone together

If you’ve got a group of distributed team members in the same location, have them get in the same room/area for meetings. I was part of a distributed team where all but two people were in the same location – same building, same floor, all sitting right next to each other – and despite this, they all stayed at their desks and dialed into the call individually. Find a conference room or use the speaker phone, but have everyone get together for meetings.

Step 5 – Emphasize communication

Form your distributed teams with people who are good at communicating and want to communicate. Communication is paramount, and when team members are distributed, it is even more important. I have been on teams where people simply did not want to communicate with one another, and it makes the team less effective. Having good communication and collaboration will help the team function at a higher level.

Step 6 – Use tools

Identify tools that make communication and collaboration as effective as possible. Having everyone on the same call is a start, but that is pretty basic and rudimentary. If possible, use webcams so you can see facial expressions and body language. There are many tools available for calls (Hangouts), estimating (Planning poker), retrospectives (IdeaBoardz), etc, etc. With that being said, identify a backup for when the tool you’ve chosen doesn’t work. It will happen.

Step 7 – Get to know each other

If the team is new, take the time to introduce yourselves and learn about each other. It will make working together easier and more fun. You can use various games or simply go around the group and answer some questions (hobbies, interesting fact, favorite travel location, etc). If the team is already formed and doesn’t know each other very well, there’s no better time than the present to get started. If your company is willing to pay for it, fly the team to the office. Face to face meetings will help create bonds and relationships that will increase the team’s effectiveness.

Step 8 – Facilitate

It is all too common for one or two individuals to dominate a call. It is also common to have little or no participation on a call. This is where the Scrum Master (and the rest of the team) needs to identify this pattern and help correct it by engaging everyone in the discussion. This may mean soliciting information from a quiet team member or possibly guiding the discussion in another direction. It can be challenging, so have patience and stick with it.

Step 9 – Implement a buddy system

I have seen this work several ways. (A) If you have one distributed team member, assign a watcher who is in charge of monitoring that person. Is the person trying to chime in but not getting the chance? Did they get disconnected from the call or maybe they are frozen? Are they sleeping? It’s the watcher’s job to keep an eye on this. (B) If there is a large distributed group, pair up with a buddy and help identify the same issues as mentioned earlier. Work to keep your buddy engaged in the conversation. It’s easy to forget about the people on the phone, so make sure it doesn’t happen.

Step 10 – Be creative

Different techniques work for different teams, so mix it up. Try new things. Experiment. Inspect and adapt. Be Agile. If it doesn’t work, try something else. One of the worst things you can do with a distributed team is accept a lower level of effectiveness without trying to make it work.

These are just a few ideas – there are many more out there. Please let me know if you have any tips on how to improve distributed team cohesion, communication and effectiveness.