Paired Programming & Visual Studio Live Share
Premier Developer consultant Brian Blackman shares insights from his experiences with Paired Programming and Visual Studio Live Share.
The catalyst for this blog post is providing a Premier Developer point of view regarding screen sharing, named Live Share, in Visual Studio 2017 and Visual Studio Code – https://code.visualstudio.com/blogs/2017/11/15/live-share, https://visualstudio.microsoft.com/services/live-share/.
When I heard about this extension, I remember initially encountering Extreme Programming from reading books such as Kent Beck’s Xtreme Programming Explained 1st Edition and Wade’s Extreme Programming Explored. At that time, I was learning XP in general and TDD specifically; as you can see by the book’s publish dates that was a very long time ago. I initially applied Extreme Programming while I was in Microsoft Consulting Services working on early web projects; read classic ASP web sites and even on project with a Visual Basic developed web control. After my time with MCS and then later with Premier Developer and, after much learning and experience, I created our team’s first TDD workshop for our Premier Developer Customers.
My first experience matched many of experiences I remember mentioned in the books I read. At first, paired programming was extremely intimidating. I had to pair with an extremely seasoned developer thinking that I was about to be proved that I was not as smart as I thought I was – see Imposter Syndrome. Well, I learned many lessons from this developer by pairing with him. And in the end the developer learned quite a bit from me.
The common challenge we had was sharing the keyboard and mouse. At that time personal computers were not setup to enable dual keyboards and mice. And you had to get a switch or just pass the keyboard and mouse back and forth knowing how dirty and germ ridden keyboards can become. The insight and learning provided from sharing the programming tasks was incredible. I finished the project much more experienced and knowledgeable than any other project I have worked on.
During that project I learned something that I did not think would occur. For someone that spent over a decade in the medical field and deep in anatomy and physiology (in my opinion, mastery of A&P is the key to proper diagnosis) I was surprised to witness just how delicate are our nerve pathways and if you put something on that pipe then the bandwidth to the brain gets consumed slowing down the pathway. What I noticed was that the person with the keyboard and the mouse will never find on screen objects as fast as the person without those objects in their hands. I think this relates to how effective it is to have another set of eyes on your code.
Since then, I have seen a few teams at Microsoft do paired programming and I have seen a few customers do paired programming, But, not many that regularly practice. I have seen success with most of these and failure with a few.
Failures never related to the tools or the process but always the people. I don’t find paired programming to be prevalent or popular in most organizations as it is a hard sell. What I found was the most challenging was getting executive buy-in. It is a challenge to tell management that you are going to have two developers working together with one typing and one watching. The research from the likes of IBM and UNC at the time had limited data on impact of paired programming but it was showing as much promise as TDD.
For me personally, I find paired programming to be of great value. My pair turned out better and more thoughtful code than working alone. In addition, code review feedback was instant versus waiting for someone to look at your code or responding to a pull request. I would do it again provided the opportunity and I would say that a team needs to give it a try as everyone’s mileage will vary. But, since I am a remote employee I don’t expect to get that opportunity again.
Thus, enter Live Share, a way to do paired programming. You can do paired programming over Skype or Teams but it is not that same as in person. Only one person can share their screen and can be in control. And without any other tooling, you cannot work on the same file. While I could practice many of the Xtreme Programming practices I could not do paired programming after MCS as I was remote and there was no one by my side with whom to code.
However, with this new extension for Visual Studio and Visual Studio Code it provides the opportunity to get many of the benefits of paired programming even when you were not co-located.
As you can read in the announcement and documentation, Live Share provides for sharing of the actual context of the code such as other files in the project or environmental requirements such has compiler version. When working with Live Share, you share the actual context of the code with instant collaboration. This means true co-editing and co-debugging.
So far, I have been delighted with Live Share, initially with Visual Studio Code and now with Visual Studio. No more sharing physical keyboards or the mouse for the germaphobe in me. And remoteness is no longer a barrier to practicing Paired Programming. As we encounter tricks and tips we will share those in our Premier Developer Blog.