Cyber Agility – The Next Frontier

Could Virtual Reality (VR) and Augmented Reality (AR) be tools to enable distributed Agile teaming?

Co-location and pair programming are two of several elements in enabling high-performance agility. Soon, VR and AR could be enablers for a distributed Agile team while still maintaining the same level of high communication bandwidth that was previously only afforded by face-to-face communication. Before I go into my ideas on how this could work, I’d like to expand on why co-location and pair programming are so important to high-performance agility.

Face to Face Communication and High Performance

The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.

In 2001, the signatories of the Agile Manifesto got together to discuss “better ways of developing software”. I find it interesting that most of the manifesto is about people skills and less about software. For example, “People and Interactions” is a core value, and “face-to-face communication” is a supporting principle.

The best way I know of to enable face-to-face communication is being co-located. The tighter the co-location, the more the interactions; hence having Agile teams sitting together in open office configurations.

My friend Mark Pearl pointed out on Twitter that the reason we strive for co-location is that it is an enabler for collaboration. I’d agree with his assessment.

mark-pearl-twitter-colocation

Pair Programming and High Performance

If a software team were to take on only one Agile practice, then I would suggest pair programming. Seriously! It has the biggest bang for your buck as it helps with:

  • Moving from a group of individuals to a team (because of the bonding)
  • Increasing code quality (pairing is an extreme version of code reviews)
  • Increasing creativity and collaboration (a pair’s thinking power is more than the sum of two individuals)
  • Removing silos (because of knowledge transfer)
  • Improving code consistency (team coding standards)
  • Creating a sense of ownership by the team (collective code ownership and story ownership)
  • Continuous improvement (through coaching and mentoring, your B’s will become A’s over time)
  • Specialist Generalists (pairing on tasks other than ones matching your core competency)
  • Fun! (it’s incredible social)

I have found that pair programming can act as a foundational practice to other high-performance Agile practices: merciless refactoring, continuous integration, test-driven design/development, refactoring to patterns, DevOps, continuous delivery, coding standards, collective code ownership, clean code, etc.

Unfortunately, I’ve noticed pair programming is considered distasteful by some and is not practiced by many Agile teams. I put this down to either, people who have had a bad initial experience, or, to people having never tried it because it’s unintuitive and uninviting. I’m not going to try and sell you on it here but will leave you with the advice that if you find yourself in one of these two categories, I hope you get a chance to experience pair programming one day the way it should be practiced.

Pair programming, and mob programming (an extension of pair programming), is easier when your team is co-located. And there is my second argument for co-location: in addition to better communication and collaboration, it makes pair programming a whole lot easier.

Virtual Reality and Extended Reality as Alternatives to Co-location (and office work in general)

While I am a big advocate for co-location and Pair Programming, I could be persuaded toward a distributed team model supported by the new emergent technologies of Virtual Reality (VR) and Augmented Reality (ER).

I think we could use VR/ER to enable distributed Agile teams in the very near future. Here’s what it might look like your office will be in your home and consist of a keyboard, VR/ER headset, and special gloves that you can see where your hands are in virtual space and in relation to your physical keyboard. You have arranged to meet your team for a daily huddle at a certain time and meet in a virtual space; in a virtual team meeting room. In this room you can hear and see your teammates; well, digital renditions of them, and yourself. In this room, you have access to a story map, an iteration storyboard, whiteboards, and computers. You proceed to sync up with your team and decide on your pairing partner for the next task. Or, you may even choose to mob program en masse or in a sub-group on a task/story.

Once the team has self-organized into pairs or mob(s), they go to a chosen pairing/mobbing room in a virtual space that can be customized to their heart’s content. For a pairing example; I may choose to sit in a desert and my pairing partner has chosen a field of poppies. In my reality, my pairing partner is with me in my desert landscape but in their cyberspace, I am in their poppy field. You can decide on whatever environment makes you feel most productive and happy.

Continuing with the pairing example: when I look to my left, I see my pairing partner. I pull up a virtual computer screen in the dimensions, font, colors, and theme that I am most comfortable with along with my preferred IDE (Integrated Development Environment) and keyboard shortcuts. My pairing partner might have something totally different but as long as our IDEs are in sync, we can look at the same code. Off we go code crafting; free of interruptions to focus on the work at hand in our pair programming session.

Off to one side, I have yet another screen that I can use to refer to anything else I may need in this pairing session without switching away from the code e.g. supporting documents, API documents. This would be much like having a laptop next to a pairing station in the real world.

To further this pairing scenario in virtual space: as we are crafting, a green interrupt notification comes up on our chat program. This indicates that one or other of our teammates or pairs has a non-urgent interruption. (There are also urgent and immediate interruptions that would alert us in other colors.) At the next convenient point in our pairing session, we open the chat session with the other pair and see what it is they want. “Hey Ron, which class was it where we…” At this junction, we may choose to move to a mob programming room with the other pair, a whiteboard breakout room, or just stay in chat mode. Can you see where this is going?

Working this way in a virtual space, I would be on board with trying an experiment with distributed team members all working from home. I’m excited by this new technology and think that as well as Agile software development, most desk jobs will be conducted this way in the near future.

Until then, however, I’m sticking with co-location as your best chance for success and high performance because of the higher bandwidth communication it offers and the pre-requisite for pair programming. There are certainly some exciting times ahead and I eagerly await to see what experiments Agile teams take on in this space.

Supporting Articles

We hope you found this post informative

Before you move on, please consider supporting our non-profit mission by making a donation to Agile Alliance todayThis is a community blog post. The opinions contained within belong solely to the author or authors, and may not represent the opinion or policy of Agile Alliance.

Picture of Quinton Quartel

Quinton Quartel

Untethering the human spirit in the workplace.

Recent Blog Posts

Recent Posts

Join Agile Alliance!

$5 per month (paid annually)*

*Corporate plans are also available

Post your comments or questions

Recent Agile Alliance Blog Posts

Discover the many benefits of membership

Your membership enables Agile Alliance to offer a wealth of first-rate resources, present renowned international events, support global community groups, and more — all geared toward helping Agile practitioners reach their full potential and deliver innovative, Agile solutions.

IMPORTANT: We have transitioned to a new membership platform. If you have not already done so, you will need to set up an account on the new platform to establish your user profile.

When you see the login screen, choose “Set up Account” and follow the prompts to create your new account. You can choose to log in using your social credentials for either Google or Linkedin (recommended), or you can set up your account using an email address.

Not yet a member? Sign up now