I consider myself extremely lucky that I got involved in the Agile (nee XP) world early. Back around 2000, I was introduced and it just felt right. As I like to tell, I drank the Kool-Aid, and it was so tasty I started selling it myself. I wouldn't change a thing. But maybe I should? I think we got a lot of things right, but I'm starting to think we got one wrong. "Steve, what could that possibly be?" you say. Well, in this specific case, I'm referring to colocation. After three plus months of enforced remote work, it turns out you *can* be agile and work remotely.
Lets explore this a little though. Yes, it is definitely easier to be agile if you are all working together. More importantly, it is easier to make great software if we are all working together. But this is 2020! Technology has advanced greatly in the last twenty years. Also, our understanding of how to communicate and work together has advanced. Mob programming is a beautiful thing. It enhances our productivity, and also helps us have much more fun while working, which is important.
So yes, we can do great programming collaboratively but not in the same room. I'd like to explore a few aspects of this though. Lets start with motivation. Where I feel that the initial problems with remote work originated is the motivation behind it. My personal reactions were based on the popular approach of using offshoring to reduce costs. At that time, the "distributed team" wasn't a team, but a collection of "resources" that were obtained from the lowest bidder. So in that sense, we were absolutely right. But the thing to change really appears to be the motivation. Make teams that can work together well, and they will figure out the right mix of distributed vs. co-located.
Is it harder to work well remotely? Yes. But I no longer believe that co-located teams are the price of admission. One area that we need serious improvement is in shared screens. It is still too onerous to swap easily from one computer to the next. Other communication mechanisms have advanced to the point where I honestly would not hesitate to support a team that said they were going to be "all remote". It is important however, to from time to time make sure you are doing something face to face. Whether it be together in an office, at some park somewhere, or if those aren't possible make sure the cameras stay on, you need to be able to recognize who is talking, and be able to visualize what their laugh/smile/grimace looks like.
So what do you think? Can we be Agile and Distributed now, or am I just fooling myself?