Purr Programming 2.0

Years ago when Extreme Programming was a new concept, a (now defunct) website posted an article about taking Extreme Programming to the next level by substituting a household cat for a dev pair. At that time I did all of my pair programming with a human dev pair. Then, a year and a half ago I started freelancing. When you’re a hired gun it can be difficult to find dev pairs for certain projects (or to get customers to pay for a dev pair). After freelancing for a few months I realized that it was time to revisit the concept of purr programming.


allie cat sinister

Pair programming has been shown to reduce bugs in code, improve code quality, introduce team members to new techniques, and reduce interruptions. When working as a freelancer with budget conscious startups, it may not be possible to do much pair programming for a variety of reasons. People may not be available, it may be critical that each developer be working on individual tasks to meet a deadline, or the team may be remote. Purr programming allows you to gain back some of these lost benefits when you can’t program with a human dev pair.

What do I need to get started?

allie cat purr programming

Many people have been informally purr programming for years, but there aren’t any articles discussing best practices. My current experience has been with one female feline dev pair named Allie. The setup that has worked best for us is to pull up a extra chair (sometimes with pillows) to my workstation so that she can see the screens. Allie prefers to not have her own keyboard. Sometimes, when we are working on a really challenging problem, she will perch herself on the arm of my chair. Unlike with a human dev pair,  where it is considered an anti-pattern to have one person observe and one drive all the time, you will exclusively be the driver and the cat will exclusively be the observer.

What are the traits of a good feline dev pair?

allie cat purr programmer

Given my limited experience with evaluating other non-human dev pairs, this list is incomplete. Here are some of Allie’s traits that have worked for me: Intelligence, the ability to sit and concentrate for long periods of time, assertiveness, and a passion for technology. Allie’s passion for technology was the thing that made me decide to try purr programming with her. From the time she was a kitten she was always sleeping in open laptop cases, on top of my closed laptops, and really enjoyed jumping on my keyboard. Just like me, she is a gadget freak.

What about a dog as a dev pair?

max purr programming

While I love dogs and have two of them, I haven’t found any that exhibit traits that would make them good dev pairs. Further research will be necessary to evaluate the feasibility of this.

What have you discovered through purr programming?

allie polyglot purr

First, that cats are smart. When Allie used to jump up on my keyboard I thought that she just wanted attention. Through purr programming I have learned that she is actually trying to stop me from doing something stupid. I have also found that Allie is a better dev pair than some NNPP senior developers I have worked with. Further research will need to be done to assess the feasibility and effect of swapping out net negative producing programmers with cats on Agile software projects. Purr programming has also made me realize how important non-verbal communication is. If you’ve ever done the code retreat exercise where you can’t talk with your dev pair, you have seen how you can communicate via your tests. Purr programming shows you how to communicate with non-verbal actions… be it a head bonk, a gentle pat on your arm, jumping on the keyboard, or a gentle meow. Cats also have the ability to cat nap, yet still know what is going on and wake up when their full attention is needed. I have also found it really handy to be able to stroke Allie’s hair and hear her purr when I am stressed out. For most human dev pairs that is generally not an option.

Limitations and areas for further research

While many offices are progressive and allow you to bring your dog to work, most don’t allow you to bring cats. This limits your purr programming to work being done at home. A multi-cat household could pose some additional challenges that will need further research. You will still need to be careful to limit the size of the interspecies dev team the same as you would a fully human one. Some have discussed having a scrum of scrums with one single species meeting consisting of the feline team members and another for the humans along with a large interspecies scrum meeting for everyone. The cat scrum meetings will need more research to determine best practices. It is my belief that since organizing developers can be like herding cats, organizing a scrum meeting of cats should require a similar skill set. There is also the question about the cat’s bill rate. I don’t charge for Allie’s time, but others may want to charge for feline dev time. More research will be needed to evaluate a fair bill rate based on the cat’s skills and years of experience using various languages. As for compensation, I feel that is important to treat your employees well. In Allie’s case, she gets lots of trout, albacore tuna, fresh meats, organic gourmet cat food, catnip, cat toys, and a nice deck overlooking three bird feeders for entertainment.

About Me: I am a Atlanta based, native Android/IOS developer with AngularJS/Ruby experience and am founder of Polyglot Programming Inc.. Many of my projects focus on IOT and Wearables. You will often find me purr programming and I regularly speak at conferences around the world. I am available for hire! More Posts

Follow Me:
TwitterLinkedInGoogle Plus

I am a Atlanta based, native Android/IOS developer with AngularJS/Ruby experience and am founder of Polyglot Programming Inc.. Many of my projects focus on IOT and Wearables. You will often find me purr programming and I regularly speak at conferences around the world. I am available for hire!

Posted in Agile, Architecture, Javascript, rails, rails, ruby

Leave a Reply

Your email address will not be published. Required fields are marked *