Pairing Post Mortem - @willpragnell - Overseas TDD

I had my first pairing session with @willpragnell today. He’s a smart guy and my first European pair partner. It was a pleasure to talk to him about his iOS and Ruby experience and I picked up on a lot of little things from our pairing session together. Setup TMUX and VIM - (I got to use my newly revised pairing script to set up everything in seconds) TicTacToe - RSpec The Session We set a couple of goals out for the beginning. We both wanted to learn more of RSpec’s new syntax and we wanted to really adhear to the TDD principle of doing the most simple thing next. ...

June 14, 2013 · 2 min · Mark Simoneau

Watch and Learn

I’ve now been pairing with several people a week for the last few weeks. Even over that short period of time, I’ve seen a pattern emerge: If you watch someone else (of any skill level) and pay attention, you will learn. When I’m watching others, I tend to be thinking of what I’d do in their situation, but sometimes just observing very simple things a user does – a VIM action, a command line script, an obscure API call, a rare tool – these are the details that change you in the small over time. This same principle is why counselors tell you to actively listen to your spouse – hear what they’re saying instead of just thinking of what you’re about to say. Sometimes you pick up on things they might not be able to vocalize themselves. Sometimes you pick up on emotions you would be too busy to notice otherwise. Actively listening in any relationship involves shutting up and noticing the details–it just happens to be true when you’re pair programming as well. ...

June 7, 2013 · 1 min · Mark Simoneau

Pairing Post Mortem - @mattr_ - Pending Specs and Assertions First

Today I paired with @mattr_ and got quite a bit of good input regarding how to attack a problem and write tests. Matt is a super smart guy who has really absorbed some of the fundamentals of TDD and it shows through his ability to break down a problem. Setup TMUX & VIM on my box Conway’s Game of Life as an exercise Process When implementing the game of life, we started off looking at the problem on Wikipedia and found the 4 rules. I immediately started writing the first test when Matt noted that he liked to write all the specs he knows of as pending specs right at the beginning. Then he can really plow forward and know what’s next. He also noted that he likes to be able to write the assertion first, based on the test, and then build the test up from there. I felt the lightbulb go off when he pointed these two things out. When I’ve struggled to find the test or figure out how to test something, usually it’s because I can’t figure out how to get to the assertion, and that really comes down to not testing the right thing. ...

June 6, 2013 · 2 min · Mark Simoneau

Pairing Post Mortem - The Mistake

{% blockquote Chris Knight and Lazlo Holyfeld http://www.imdb.com/title/tt0089886/trivia?item=qt0435761 Real Genius %} “How’d I do? I passed! But I failed! Yeah!” “Well, then I’m happy and sad for you.” Last night I made a mistake. In an effort to continue pairing with people I really enjoyed pairing with, I scheduled 2 pairing sessions for the same evening. I left 30 minutes between them, I prepared as I should… but I was stressed and it made both sessions worse. ...

June 6, 2013 · 2 min · Mark Simoneau

Quick Script for TMUX pair sessions

Update 2013-06-14: Improved the script, removing the github-auth dependency, some of the OS X dependencies, and added firewall punch-through (user specific) and ssh-command with external IP auto-copy to clipboard I wanted a quick and easy way to set up a new TMUX session with a brand new pair, so I came up with this: #!/bin/sh gh-auth add $1 sudo cp ~/.ssh/authorized_keys /Users/pair/.ssh/authorized_keys sudo chown pair:staff /Users/pair/.ssh/authorized_keys gh-auth remove $1 tmux -S /tmp/pairing new -ds pairing && chgrp staff /tmp/pairing && tmux -S /tmp/pairing attach -t pairing sudo rm -f /Users/pair/.ssh/authorized_keys That will download ssh keys, create a tmux session, and attach to it. When you’re done it will cleanup so the other person has no access to your box. ...

June 6, 2013 · 2 min · Mark Simoneau

Pairing Post Mortem - @_zph - VIM and a Gem

Last night I had a great #pairwithme session with @_zph. He’s been doing Ruby on nights and weekends for the last few years and he’s been using VIM much longer than I have. I learned a lot of little tricks about VIM that I just hadn’t quite worked out before. We also refactored some of his Buff Gem. Setup: Zander had a VPS already provisioned with my ssh keys installed. Super Easy setup. TMUX + VIM for our editors RSpec for testing the Gem We started off trying to think of what to pair on within Zander’s gem. He was concerned about the tests, so we actually spent a fair amount of time just looking at the WebMocked tests and discussing the pros and cons. Eventually we decided that WebMock might be a good way to start off your TDD of an API wrapper since you have complete control of the response, but VCR gives you the best long term support since you can both get fast tests and confirm that you’re still working with the API correctly and that you didn’t just magically stub out the wrong thing–just delete your cassette and you’ve got “free” real API tests, followed by nice fast tests. ...

June 5, 2013 · 3 min · Mark Simoneau

Pairing Post Mortem - @Shicholas - Real World Lessons and Bowling

Last night I had my first pairing session with @shicholas. Nick recently graduated from law school and is looking to pass the bar, but somehow programming calls to him. It’s a good thing too, since he’s clearly gifted and a fast learner. Setup: ScreenHero Sublime Text 2 shuhari by @jarhart While we were kicking things off with the “get to know you” talk, I found that Nick had a Rails + Angular.js app he was working on. I’ve not done any work with Angular and asked him to show me what was going on. He pointed out the general structure as well as the custom directives that Angular.js allows you to create. I’ve watched the Ember.js Peepcode Intro, and found it difficult to get excited about it. Being introduced to Angular.js in this particular manner gave me real world applications and it seemed much more intriguing. No verdict yet on either, just initial impressions on both frameworks. ...

June 4, 2013 · 3 min · Mark Simoneau

Pairing Post Mortem - @kmeister2000 - Refactoring and MiniTest

Had a great 4th pairing with @kmeister2000. Always a pleasure to work with him. Interesting Parts of our session setup: Worked on a real world app Karl was developing Used MiniTest instead of RSpec Refactored existing code MiniTest Takeaways: MiniTest expectations about method calls are not as clear as in Rspec and the documentation/examples aren’t as readily available. MiniTest is a lot like RSpec in nearly every other way. I’m not a fan of Mocha. I think it promotes antipatterns for how to really test. I actually like the explicit mock.verify in MiniTest::Spec General Takeaways: ...

May 29, 2013 · 1 min · Mark Simoneau

Pairing Post Mortem : @hinbody - TicTacToe and TMUX

I just finished my first #pairwithme session with @hinbody. It was my first remote session to use TMUX+VIM instead of ScreenHero – I have to say, it was quite easy to use and given the fact that it’s free, fast, and cross-platform, I’ll be using it with any vim users I pair with who are willing. I’d love to get CoVim working since it allows you to use your own vim setup. I drool a little bit at all that. But I digress. ...

May 29, 2013 · 3 min · Mark Simoneau

Pairing Post Mortem : @thecommongeek - Ruby Koans

I paired with @thecommongeek last night again. This time we were more prepared and I think the session went much better. In our first session I misjudged where Dennis was as a coder and struggled a bit with how to pair with him effectively. This time we had him drive through ScreenHero and decided to start from the “basics” by doing the RubyKoans. The RubyKoans are meant for Ruby 1.8.7, but 1.9.3 is commonplace now, so we struggled a bit at the beginning. For anyone going through the RubyKoans on 1.9.3 getting a value19 in nearly all your errors, I’d suggest making the following changes on neo.rb (starting on line 34): ...

May 28, 2013 · 2 min · Mark Simoneau