Pivotal Labs

Main menu

Skip to primary content
Skip to secondary content
  • About
  • Case Studies
  • Team
    • Executives
    • Locations
      • San Francisco (HQ)
      • Boston
      • Boulder
      • Denver
      • London
      • Los Angeles
      • New York
  • Community
    • Blogs
    • Tech Talks
    • Events
  • Careers
    • Lifestyle
    • Principles & Practices
    • Benefits
    • FAQ
    • Apply
  • Contact
    • Press Room
    • Press Releases
    • In The News
    • Press Kit
  • All
  • Labs
  • Standup
  • Tracker
Chad Woolley

Automated End-to-end Integration Testing for ActiveResource APIs

Chad Woolley
Thursday, January 8, 2009

By popular demand, we’re working on making the Pivotal Tracker API ActiveResource-compliant.

However, there are some quirks that are required to make ActiveResource happy. For example, when you are doing a ‘create’ or ‘update’ request, ActiveResource wants the response location to point to the ‘show’ URL for the new or updated record. For example, here’s an ActiveResource ‘create’ call:

new_story = Story.create(
  :name => "New Story",
  :requested_by => "Dan",
  :description => "Make API ActiveResource compliant")

On the controller, you must add the :location option to the render – you can’t redirect:

render  :xml => xml,
        :location => service_project_story_url(service_id, project_id, @story),
        :status => status

…otherwise, you get this helpful error from ActiveResource:

/Library/Ruby/Gems/1.8/gems/activeresource-2.2.2/lib/active_resource/base.rb:1006
        :in `id_from_response': undefined method `[]' for nil:NilClass (NoMethodError)
        from /Library/Ruby/Gems/1.8/gems/activeresource-2.2.2/lib/active_resource/base.rb:993:in `create'

This is the type of error which you will only catch through end-to-end testing with a real ActiveResource client hitting the running app. When I did the initial spike to see what problems we would run into, I wrote a simple manual script to run against the local development environment, hacking my way to a point which didn’t blow up and I could visually inspect the output:

#!/usr/bin/env ruby
require 'rubygems'
require 'activeresource'
require 'pp'
class Story < ActiveResource::Base
  self.site = "http://localhost:3000/services/v1/projects/1"
  headers['TOKEN'] = '6cfc2055d1df5605241759014b06b232'
end

p "========================== Stories#create ====================================="
new_story = Story.create(:name => "New Story", :requested_by => "Dan", :description => "Make API ActiveResource compliant")
pp new_story

# etc for all other supported API actions...

However, now that we are doing the real non-spike implementation, we want to automate this end-to-end integration testing as part of our Continuous Integration. That way, we’ll ensure that we are fully ActiveResource-compliant (against current and future versions), and that we don’t have any inadvertent regressions due to future API bugfixes/enhancements.

Digging through the internets and rubyonrails-talk list archives turns up some discussion, but no good answers:

  • Thoughtbot blog post on ActiveResource and Testing
  • rubyonrails-talk post on “Testing XML over HTTP in a Rails app”
  • rubyonrails-talk post on “Testing ActiveResource models with HttpMock”

All of these mention using ActiveResource::HttpMock. However, as Eric and Xavier point out, there seem to be drawbacks to this approach. Plus, even if we get it to work, I’m worried the usage of HttpMock might mask some other issues related to authentication handling, or who knows what else. That’s what real integration tests are for. Finally, HttpMock is an undocumented internal method that seems to exist in order to support Rails’ test suite, so it’s probably not a great idea to depend on that long term.

So, we don’t have a great answer yet, but it seems clear that the highest-value, least-risk approach is to hit a real running app over HTTP with a real ActiveResource client.

The current plan is to leverage our existing Selenium RC test environment, which already has support for spinning up and managing a Rails server with the test environment. We can then port the manual spike tests above to automated ones which run as part of the selenium suite under Continuous Integration, and add appropriate assertions. This isn’t optimal, though, because they won’t actually use Selenium RC at all, which may confuse people. However, there’s no sense reinventing the wheel (and adding time to the overall CI build) by spinning up a separate test server instance when we already spin one up for our selenium suite.

Let us know if you have any clever solutions.

– Chad

  • 0 Shares
  • Share on Facebook
  • Share on Twitter
Joe Moore

Standup 01/08/2009: libxml leaky; set TZ

Joe Moore
Thursday, January 8, 2009

Interesting

  • libxml 0.96 and 0.97 leak massive amounts of memory. Don’t forget that libxml has other problems, too, as mentioned by us before. That said, it’s our go-to XML parser.

  • Several teams have had success with the IE6 PNG fix “DD_belatedPNG” by Drew Diller. But, do not attempt with <tr> or <td> elements, though <td><span>...</span></td> does work.

  • Want to speed up ruby? Who doesn’t? Check it out: when you do not set the TZ environment variable, ruby shells out several times per second to see if the timezone has changed. To avoid this, run the following:

$ export TZ=:/etc/localtime

Thank you Joe Damato!

  • One project recently switched to Passenger with great success. Hundreds of mongrel processes are now gone, deploys are easier and speedier, and the site is faster. WIN!
  • 0 Shares
  • Share on Facebook
  • Share on Twitter
Pivotal Labs

Phaedrus + code

Pivotal Labs
Sunday, January 4, 2009

This is suddenly more relevant after Adam’s excellent post on Aristotle and software (and while you’re at it don’t miss There Is No Agile). The following is just an application of virtues to writing…and in my opinion, very relevant to the practice of making software.

Following from the assertion that you can apply writing advice to code…

Zen and the Art of Motorcycle Maintenance (book, wikipedia) is an exploration of Quality (wikipedia) (not in the sense of QA or building cars). This is a long passage from Chapter 17 – Phaedrus is teaching a writing course at a local college – one of my favorite parts of the book, it’s a model for examination that I keep coming back to. My comments follow at the bottom.

“I think there is such a thing as Quality, but that as soon as you try to define it, something goes haywire. You can’t do it.”

(continued after the jump)

…

But then, below the definition on the blackboard, he wrote, “But even though Quality cannot be defined, you know what Quality is!” and the storm started all over again.

“Oh, no, we don’t!”

“Oh, yes, you do.”

“Oh, no, we don’t!”

“Oh, yes, you do!” he said and he had some material ready to demonstrate it to them.

He had selected two examples of student composition. The first was a rambling, disconnected thing with interesting ideas that never built into anything. The second was a magnificent piece by a student who was mystified himself about why it had come out so well. Phaedrus read both, then asked for a show of hands on who thought the first was best. Two hands went up. He asked how many liked the second better. Twenty-eight hands went up.

“Whatever it is,” he said, “that caused the overwhelming majority to raise their hands for the second one is what I mean by Quality. So you know what it is.”

There was a long reflective silence after this, and he just let it last.

This was just intellectually outrageous, and he knew it. He wasn’t teaching anymore, he was indoctrinating. He had erected an imaginary entity, defined it as incapable of definition, told the students over their own protests that they knew what it was, and demonstrated this by a technique that was as confusing logically as the term itself. He was able to get away with this because logical refutation required more talent than any of the students had. In subsequent days he continually invited their refutations, but none came. He improvised further.

To reinforce the idea that they already knew what Quality was he developed a routine in which he read four student papers in class and had everyone rank them in estimated order of Quality on a slip of paper. He did the same himself. He collected the slips, tallied them on the blackboard, and averaged the rankings for an overall class opinion. Then he would reveal his own rankings, and this would almost always be close to, if not identical with the class average. Where there were differences it was usually because two papers were close in quality.

At first the classes were excited by this exercise, but as time went on they became bored. What he meant by Quality was obvious. They obviously knew what it was too, and so they lost interest in listening. Their question now was, “All right, we know what Quality is. How do we get it?”

Now, at last, the standard rhetoric texts came into their own. The principles expounded in them were no longer rules to rebel against, not ultimatums in themselves, but just techniques, gimmicks, for producing what really counted and stood independently of the techniques — Quality. What had started out as a heresy from traditional rhetoric turned into a beautiful introduction to it.

He singled out aspects of Quality such as unity, vividness, authority, economy, sensitivity, clarity, emphasis, flow, suspense, brilliance, precision, proportion, depth and so on; kept each of these as poorly defined as Quality itself, but demonstrated them by the same class reading techniques. He showed how the aspect of Quality called unity, the hanging-togetherness of a story, could be improved with a technique called an outline. The authority of an argument could be jacked up with a technique called footnotes, which gives authoritative reference. Outlines and footnotes are standard things taught in all freshman composition classes, but now as devices for improving Quality they had a purpose. And if a student turned in a bunch of dumb references or a sloppy outline that showed he was just fulfilling an assignment by rote, he could be told that while his paper may have fulfilled the letter of the assignment it obviously didn’t fulfill the goal of Quality and was therefore worthless.

Now, in answer to that eternal student question, How do I do this? that had frustrated him to the point of resignation, he could reply, “It doesn’t make a bit of difference how you do it! Just so it’s good!” The reluctant student might ask in class, “But how do we know what’s good?” but almost before the question was out of his mouth he would realize the answer had already been supplied. Some other student would usually tell him, “You just see it.” If he said, “No, I don’t,” he’d be told, “Yes, you do. He proved it.” The student was finally and completely trapped into making quality judgments for himself. And it was just exactly this and nothing else that taught him to write.

Up to now Phaedrus had been compelled by the academic system to say what he wanted, even though he knew that this forced students to conform to artificial forms that destroyed their own creativity. Students who went along with his rules were then condemned for their inability to be creative or produce a piece of work that reflected their own personal standards of what is good.

Now that was over with. By reversing a basic rule that all things which are to be taught must first be defined, he had found a way out of all this. He was pointing to no principle, no rule of good writing, no theory — but he was pointing to something, nevertheless, that was very real, whose reality they couldn’t deny. The vacuum that had been created by the withholding of grades was suddenly filled with the positive goal of Quality, and the whole thing fit together. Students, astonished, came by his office and said, “I used to just hate English. Now I spend more time on it than anything else.” Not just one or two. Many. The whole Quality concept was beautiful. It worked. It was that mysterious, individual, internal goal of each creative person, on the blackboard at last.

Similarly, code doesn’t flow out of physics-like laws – it’s rooted in the messiness of cognition and creativity, just like writing. Everyone knows what good code looks like, but you couldn’t make that sense into an algorithm.

And somewhere in there is a great retrospective format that could be used again and again.

He singled out aspects of Quality such as unity, vividness, authority, economy, sensitivity, clarity, emphasis, flow, suspense, brilliance, precision, proportion, depth and so on

We have those in software (virtues): modularity, not-repeating-yourself, high-cohesion-low-coupling, simplicity, “readability”, what Tim Berners-Lee lists, and many others.

  • 0 Shares
  • Share on Facebook
  • Share on Twitter
Adam Milligan

There is no Agile

Adam Milligan
Saturday, January 3, 2009

On occasion, someone will ask me what I do or, more commonly, ask me what Pivotal does. The title on my business card says “Agile Developer,” which nearly inevitably leads to one of a few reactions, almost all of which boil down to this:

“What exactly does Agile mean?”

You know what? It’s a good question. And, after thinking about Agile for several years now, here’s my answer: Agile originally was, and still is, a marketing term.

Allow me to explain.

We’ve been writing software, in one form or another that most people would recognize as such, for some time now. Scott Bain sets the mark at about 30-35 years[1]. Considering the acceleration of technological advancement in the past century, this is a fairly long time.

In the early days, most programs were small, relatively simple, and written by a handful of developers or fewer[2]. So, the general approach to writing them was to put a number of programming language instructions one after another until the computer did the right thing. Eventually.

I believe it was Watts Humphrey who described this type of programming as “ad hoc development.”[3]

Of course, computers got bigger and badder, and software got more complex, and ad hoc quickly stopped scaling. So, people went looking for a new model to stop the hemorrhaging, and they found waterfall. Now, there’s nothing wrong with waterfall for processes that conform to defined process modeling, such as manufacturing Model-Ts, installing sewer lines, or preparing breakfast cereal. But, most people realize these days that it’s not so hot for processes with requirements that may change.

Years passed, and smart people got stuff done by solving different problems in different ways. And, some patterns started to emerge. And, better yet, some truly clever people started to recognize these patterns and write about them and codify them. However, they realized, astutely, that human beings are a hard-headed bunch who don’t like to change their ways. They needed something to shake programmers out of their collective torpor; they needed something flashy to sell; they needed a manifesto. What better thing to offer to an industry plagued by setbacks and missed deadlines than Agile?

To this day the marketing pitch continues; Agile vs. Waterfall, new vs. old, crazy vs. stodgy.

What can we infer from this brief history?

  • The move to waterfall wasn’t motivated by an understanding of the specific challenges of software[4]; it was an attempt to apply a working process, any working process, to an industry that was suffering from far too many failures due to a lack thereof.
  • Many of the principles that have come to be reflected in “agile” processes or “agile” methodologies simply emerged as consistently successful patterns from years of software projects.
  • Over time, a few people have recognized these patterns, studied them, tried to explain them, and expanded upon them to make them even more effective[5].

The conclusion I draw is this: so-called “Agile” is actually nothing more than a collection of good ideas, based on years of collective experience, for improving how we do our jobs as software writers. Or, to put not too fine a point on it, professionalism.

So, if doing “Agile” things means doing your job well, the term ceases to have meaning. As it should. No one should have to sell us good ideas, we should embrace them and have the discipline to stand by them.


[1] Emergent Design: Addison Wesley, 2008

[2] This wasn’t true of all software, of course; the punch card systems that ran the Apollo space program weren’t hacked out by a couple guys in a garage. But, systems like that have their own, mostly time-related, problems.

[3] I loaned out my copy of Winning With Software and can’t immediately find a reference, should anyone care to confirm or deny this credit.

[4] This relates to my rejection of the term “software engineer.” No one really agrees on what writing software is, but we have to call it something. If we call ourselves engineers then we sound like we know what we’re doing. After all, look at all the good stuff in the world that engineers have built.

[5] Pair programming is the classic example of this: code reviews improve code, more frequent code reviews improve code more. How about we code review all code, all the time, as it’s written?

  • 0 Shares
  • Share on Facebook
  • Share on Twitter
Dan Podsedly

Third Party Tools for Pivotal Tracker

Dan Podsedly
Tuesday, December 30, 2008

We released the first version of the Pivotal Tracker API a couple of months ago, and already there is a growing list of useful 3rd party tools out there:

Pivotal Tracker for Ruby

This is a ruby wrapper for the API, written by our friends at Mobile Commons.

http://mcommons.com/developers/pivotal-tracker-for-ruby

Email Integration

Also from Mobile Commons, this tool allows your to automatically create Tracker stories from inbound emails.

http://mcommons.com/developers/pivotal-tracker-email-integration

GitHub Post Receive Hook

This is web service that you run on your own server, written by Chris Bailey. It automatically updates stories in your project(s) based on GitHub commit comments:

http://codeintensity.blogspot.com/2008/12/github-post-receive-hook-for-pivotal.html

Pickler

Synchronize stories in Pivotal Tracker with Cucumber features. If you haven’t heard of it yet, Cucumber is a really cool app that can execute plain-text documents as automated functional tests.

http://www.github.com/tpope/pickler/tree/master

More Tools

There are more, most of them live in GitHub:

http://www.github.com/search?q=pivotal+tracker

If you have written something you’d like to share, or know of other useful tools, let us know! Also, we’re planning on making the API better, and would love your feedback.

  • 0 Shares
  • Share on Facebook
  • Share on Twitter
Pivotal Labs

Agile and Trust

Pivotal Labs
Tuesday, December 30, 2008

Edward pointed out the great article by Kevin Matheny, featured in BusinessWeek, on Agile, and our experience on BestBuy Remix.

I’d like to highlight this passage:

Trust is tied closely to how you deal with change. Often, extending trust is hard for businesspeople working on technology projects, because we don’t know how to do the work. We often look to the documentation — requirements, design specifications, and the like — to give us the feeling of control over the outcome. Don’t bother. If you can’t trust your team to deliver, you have the wrong team. Find people you can trust, and then let them do the work. Talk every day, and make sure that the development team has direct access to someone who will be using the product every day after release. For Remix, we’ve never had a formal project plan, never had a requirements-gathering session, never created a requirements document. We chose the right partners, told them what we needed, and got to work. We have control over the outcomes, but we’re not worried about trying to control the details of how we get there.

Of course without trust, any project – “agile” or not – is at risk. But practices typically associated with agile let you go further with trust: everyone is in close communication*, and all levels of the project – from test-driven code written by developers, to regular demos to the client of the latest features – are oriented around fast feedback.

In other words, you the customer trust us in part because what we’re doing is visible and tangible to you. If we’re going in a direction you didn’t intend, or what the team planned a few weeks ago just doesn’t seem relevant anymore, we all talk and we correct course.

* for close communication, see Pivotal Tracker

  • 0 Shares
  • Share on Facebook
  • Share on Twitter
Edward Hieatt

Best Buy & Pivotal Labs

Edward Hieatt
Monday, December 29, 2008

Kevin Matheny, Senior E-Biz Architect at Best Buy, has an excellent article
today on BusinessWeek.com about Best Buy’s take on Agile software development and Best Buy’s experiences as a client of Pivotal Labs. As he mentions in the article, Pivotal Labs has been helping Best Buy build “Remix”, an API for the BestBuy.com product catalog. Kevin describes the agile methods that Pivotal Labs uses and how they’ve helped with what he calls “Corporate Agility”, which he describes as “working components instead of complete solutions, expecting and responding to change instead of trying to eliminate it, and trust rather than control.” He also describes how Pivotal Tracker fits into Pivotal’s agile process:

For example, I recently added a story to the tracker for Remix that read simply “flag products as new if their start display date is less than 30 days in the past.” That’s all the up-front documentation needed for Pivotal Labs, a development company that specializes in agile software development, to code that function into Remix. Any additional information can be gathered in the daily 15-minute team meetings or in a longer follow-up if more time is required.

Thanks for the mention, Kevin, and we’re very glad that the project is proving to be successful. Pivot Steve Conover is at the helm.

  • 0 Shares
  • Share on Facebook
  • Share on Twitter
Pivotal Labs

Tim Berners-Lee: Principles of Design

Pivotal Labs
Sunday, December 21, 2008

Here’s a good, quick read. It got its start about 10 years ago:

http://www.w3.org/DesignIssues/Principles.html

Topics:

  • Simplicity
  • Modular Design
  • Tolerance (”Be liberal in what you require but conservative in what you do”)
  • Decentralization
  • Test of Independent Invention (”If someone else had already invented your system, would theirs work with yours?”)
  • Principle of Least Power

When you’re heads-down doing Agile or OOP sometimes you find yourself accidentally assuming that certain useful general principles are special to what you practice – when the truth is they’re probably not even unique to your discipline, and some Greeks wrote them down around 500 BC.

  • 0 Shares
  • Share on Facebook
  • Share on Twitter
Dan Podsedly

Agile Tools: Simplify, Instead of managing complexity

Dan Podsedly
Friday, December 19, 2008

Great article comparing Pivotal Tracker to Mingle, as an example of a tool that simplifies things, rather than trying to manage complexity (and getting in the way):

Agile Tool Vendors: Please don’t try to manage complexity – simplify my life!

Thanks for the positive feedback, Matthias!

  • 0 Shares
  • Share on Facebook
  • Share on Twitter
Chad Woolley

Best Remote Pairing Settings 2008

Chad Woolley
Thursday, December 18, 2008

About a year and a half ago, I made two posts on the “Best Remote Pairing Settings”.

A Remote Pair

The world has moved on, and so has the state of the art in remote pairing. I work remote 75% of the time, so this is an important topic for me. The setup we have now is working pretty good, so I wanted to describe it for the benefit of other remoties. Also, I’m only going to describe one specific setup – the one that is currently working best for me. So, here it is:

Computer and OS

Macintoshes running OS X 10.5 (Leopard) and maxed out on ram (at least 2 gig+), with a second monitor, ideally a 24″.

Pivotal uses 24″ iMacs exclusively. This lets you have your remote pair’s screen up on the second monitor, while still having the primary iMac screen available for local work (configuration, looking stuff up, temporary soloing, etc). You must be very disciplined and up-front – you should be explicit about when you are paying attention to your pair and when you are not, but that’s a whole other topic.

Also, at my home office, I have an iMac which I use for screen sharing, but I usually run the Skype audio/video on my MacBook. This takes the CPU load off of the iMac, which is important, because Skype is a CPU hog (more on that later).

Screen Sharing Software

Apple Screen Sharing which comes with Leopard.

Apple has done a nice job making the screen sharing app perform well, and the most important feature for any remote pairing screen sharing tool is performance. In my opinion, it performs better than any other VNC client on any platform, assuming you have a good connection (possibly excluding some windows native-video-hook solutions like UltraVNC or Remote Desktop, but there’s no way I would ever use Windows for development). All VNC clients which use the standard RFB Protocol can only be tweaked so much, and will only give you mediocre performance. However, there are several annoying bugs and gotchas with Apple Screen Sharing:

  • It is hard to find. Look under /System/Library/CoreServices/Screen Sharing.app. It is easiest to use Spotlight/Quicksilver or drag it to your dock. Supposedly you can start it with iChat but this never worked for me, I had to run the app directly.
  • Most of the useful features are disabled by default with no way to access them via menu or toolbar buttons. This is an amazingly annoying decision by Apple, but it is fairly easy to hack the toolbar buttons back into existence. Here is a Macworld tutorial showing two options.

In general, it seems that the best remote-control tools are those with some sort of native/low-level GUI integration: Leopard Screen Sharing, NoMachine NX, UltraVNC, Windows Remote Desktop, etc. Higher-level platform agnostic tools (like standard VNC/RFB protocol) just don’t perform as well – no matter how much you tweak the available color/depth/etc settings.

Audio/Video Hardware

Plantronics GamePro USB Headset

This is a great headset, and you need a really good headset if you are going to wear it all day, every day. Cloth earpieces, mic cover, very long cord, and I believe it also has some echo cancellation built in (there’s a huge box inline in the cord that does something). Unfortunately, I don’t see the exact model on the Plantronics website anymore. It may be replaced by the “GameCom” model, but I haven’t tried this.

Built-in iMac Microphone/Speaker

The built-in microphone and speaker on iMacs is really good. If you want to talk to a group of people remotely (for example, project standup), this is the way to do it. However, if the ambient noise gets too much, you can switch back to the headset.

You can even combine the two. For example, if you want to hear the surrounding conversations, but your pair is having trouble hearing you over the noise, then can wear the headset, but still keep the input set to the built-in iMac mic.

Sometimes you will need to adjust the input/output levels to reduce echo, and the remote pair should handle this themselves – they know what it sounds like.

Built-in iMac camera

Just like the built-in iMac mic and speaker, the iSight is a great camera. A detached iSight is just as good, if you want to be able to move it around or aim it without moving the computer.

Audio/Video Software

Skype

Skype is the best I’ve found. It does have drawbacks: it crashes rather frequently, it sucks a lot of CPU, it can do bad things to your network if you become a supernode, and it doesn’t support video in conferences.

However, it has great echo cancellation, it is free, and easy to use. The echo cancellation is really the most important thing – all other audio conferencing tools I’ve tried seem to have much more issues with echoes – even when you are using echo-cancelling hardware devices or speakerphones.

Some people seem to like iChat, but I have not had good luck with it. It takes longer than Skype to connect, the echo cancellation is not as good (sometimes it is, sometimes not), and most annoyingly, it doesn’t always close. I often end up having to force quit it – which is even more annoying when it is stuck on a freeze-frame of me making a stupid face or scratching my nose. Skype never does this – video always goes away when you shut your video or kill the call.

iChat has video conferencing, though, which is a benefit. You can sort of work around this by putting up the video preview in iChat, and having multiple remote people connect to view it via screen sharing, if you only want to see video for one of the participants (e.g. a couple of remote people calling in to a company meeting).

Network, Network, Network

This is the last but most important component to usable remote pairing. A fast, low-latency network connection is critical. I don’t have any numbers, but I believe that low latency is at least as important as high bandwidth. I also (without proof) believe that ping is not necessarily a good indicator of latency – I bet it is possible to have a good ping (ICMP) but still have issues with TCP/UDP latency. Who knows what’s going on in the tubes between you and your pair? Any data, tools, or insight on this would be very welcome.

As empirical evidence, for the first year or two at Pivotal I had DSL, which was pretty fast with low ping, but had continual problems with performance. Then, I switched to corporate-grade cable with a significantly higher bandwidth limit. My experience improved dramatically and my problems decreased greatly. This was about the same time I switched to Leopard screen sharing, so I think that had something to do with it, but the better connection definitely made a huge difference. Again, sorry I don’t have more concrete numbers, but I will guarantee that the better your connection, the better your experience will be.

Also, if you are in a corporate network, this may cause you problems. Even if there is a big pipe to your location, there may be saturation on your local LANs or intranet. Again, no hard data, but this is backed up by experiences of having consistently better performance when connecting to another remote at-home pair with a good connection as opposed to connecting to the Pivotal office which has a much larger pipe.

Remote Pairing Presentation at RailsConf 2008

  • At RailsConf 2008, Michael Buffington and Joe O’Brien did a good presentation on Remote Pairing. This is a very good presentation which covered many important aspects of remote pairing, as well as presenting some innovative ideas. Unfortunately, I don’t see a link to the preso, please post one in the comments if you have it.

Summary

This isn’t meant to be the be-all, end-all set of recommendations, it’s just what is working pretty well for me now. By “pretty well”, I mean that I can be an efficient pair, even when I’m driving the remote machine.

However, I’ve learned to cope with a lot, and adapted my work habits. It has forced me to become much better at communication, and describing what, why, and how I am programming. In general, though, I believe that remote pairing is physically, emotionally, and intellectually taxing. Regardless, I personally deal with it because Pivotal is such an awesome place to work and Pivots are such incredible developers. Most importantly, I come out in person for a week every month, attend retrospectives and brownbags, have some beers, and generally stay “entangled” with the rest of the team in person. If I was 100% remote, I don’t think I could handle it long-term.

So, I hope this helps out all the other remoties out there. Please let me know what you think, your experiences, and what works well for you.

  • 0 Shares
  • Share on Facebook
  • Share on Twitter

Topics

  • agile (778)
  • rails (113)
  • testing (87)
  • ruby (83)
  • ruby on rails (70)
  • jobs (62)
  • javascript (54)
  • techtalk (44)
  • rspec (38)
  • activerecord (29)
  • productivity (29)
  • gogaruco (29)
  • ironblogger (29)
  • git (28)
  • nyc (27)
  • rubymine (25)
  • bloggerdome (22)
  • mobile (22)
  • cucumber (20)
  • process (19)
  • pivotal tracker (19)
  • jasmine (19)
  • design (18)
  • ios (18)
  • webos (17)
  • objective-c (17)
  • android (16)
  • palm (16)
  • "soft" ware (16)
  • fun (15)
  • tracker ecosystem (15)
  • ci (15)
  • cedar (15)
  • rails3 (14)
  • performance (14)
  • bdd (14)
  • gem (13)
  • tdd (13)
  • selenium (12)
  • css (12)
  • goruco (12)
  • bundler (12)
  • meetup (11)
  • railsconf (11)
  • nyc-standup (11)
  • capybara (10)
  • mac (10)
  • mojo (10)
  • chef (10)
  • api (10)
Subscribe to agile Feed
  1. ←
  2. 1
  3. ...
  4. 54
  5. 55
  6. 56
  7. 57
  8. 58
  9. 59
  10. 60
  11. ...
  12. 78
  13. →
  • About
  • Case Studies
  • Team
  • Community
  • Careers
  • Contact
  • Labs
  • Events

Contact Us

contact@pivotallabs.com
+1 415-77-PIVOT
TwitterLinkedInFacebook

Pivotal Tracker

Tracker is the award-winning agile project management tool that enables real-time collaboration around a shared, prioritized backlog.
Visit pivotaltracker.com >