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
Joe Moore

Pivotal Tracker Pro Tip: Parallel Tracks with Labels

Joe Moore
Sunday, July 4, 2010

A frequent feature request for Pivotal Tracker is support for parallel tracks of development for multiple pairs of developers (you are pair programming, right?) It’s true that Tracker does not fully support parallel tracks within the same Project, but you can get most of the way there by doing what we do on many Pivotal Labs projects: use labels to identify multiple tracks of development. With labels, you can easily visualize and manage parallel development tracks while keeping your team’s work in one Pivotal Tracker Project.

A Tale of Two Pairs

It is a common scenario to have two pairs working on two unrelated feature sets. For example, your application will allow users to shop for and purchase products, and also have many administrative/back-end features. The team has identified that there are too many dependencies to have both pairs working on the shopping portion: one pair can’t work on credit card refunds if the other is in the middle of implementing credit card purchases. Thus, the team decided that one pair will focus on the shopping features while other pair works on important admin tools.

Parallel Tracks

“If it’s the most important story, put it at the top of the backlog” has long been one of our go-to suggestions. This is more difficult with parallel-track teams, as you have multiple number-one priorities. Labels to the rescue! Notice that we’ve labeled all of the shopping-related stories with a shopping label, and the administrative stories with an admin label:

Labels

Now click on the shopping label. Notice that we grow a new Search Results column for stories labeled shopping which has several interesting properties:

Search Results

  1. The number of stories labeled shopping.
  2. The number of points estimated for all shopping stories.
  3. Their normal prioritized order.
  4. Just like normal Tracker columns, the stories update if team members edit them.

Pin It!

After clicking the shopping label, pin it by clicking the little push-pin icon in the upper-right corner of the search results column. Now you can perform another search, or click another label, without losing your shopping column!

Pin Icon

Go ahead and click the admin label after pinning the shopping label.

Multiple Search Results Pinned

Now you have easy to visualize tracks of stories, priorities, and estimations, side-by-side.

Limitations

The label trick is a very handy tool for managing parallel tracks of development on your project, but it isn’t perfect. Ideally, if the shopping features are the most important for your project, everyone possible should be working on them. Implications of parallel development tracks in Pivotal Tracker include:

  1. Harder iteration planning: Tracker fills your iterations with the highest priority stories, but with parallel tracks you have multiple high priorities. In our example, Tracker fills the top of your backlog with shopping stories first and admin stories afterwards. The burden is on the team to either interweave the two tracks in each iteration, or group all of the similar stories together and “just know” that your admin stories are not actually weeks away but are indeed being worked on now.

  2. Predictability: Depending on how you use Release markers, some charts, such as the Release burn-down chart, become less useful. For example, some teams might create Release markers for shopping and admin as a way of grouping these stories together, but the burn-downs will be less accurate if teams are working on both sets of stories.

  3. Slightly harder to manage: One thing you’re sure to notice is that you cannot drag-and-drop within the search results panels, which means that you cannot re-prioritized the stories within the shopping and admin columns, though you can drag items from search results into the backlog. Also, if you add or remove labels, or re-prioritize, you will have to perform the search again refresh the column.

  4. Anti-pattern?: Some schools of thought, such as followers of kanban, might consider parallel tracks of development an Anti-pattern. Definitely weight the impact of fracturing your development efforts.

UPDATE: fixed wonky images.

  • 0 Shares
  • Share on Facebook
  • Share on Twitter
Will Read

Pair Benefit #458: Choice

Will Read
Thursday, July 1, 2010

Though I am certain someone could do it, it is hard to dispute the connection between having choices and control over your daily work and overall job satisfaction. The people with more power to govern themselves will typically report that they are more satisfied with their jobs. This is why pairing can play a huge part both with picking who you work with and what you work on.

The difference between a 1 pair project and a 2 pair project is 3 choices vs. no choices in who you work with. You can like everyone on your team and be pleased with their work, but you can only sit side-by-side with one guy for so long. When you go up to two pairs, you suddenly have a choice that wasn’t there before, and it is there in a big way. Tired of Joe? No problem, you and Rachel haven’t paired in a while, so make that happen.

The reason people don’t need “pet projects” is because we get to pick who works on what at the top of the backlog. Yes, I have to do some grunty work, but I also get to side-step some things that I’d rather not do. More importantly, you pick what it is you work on. So now you’re doing something you chose, vs. something that was assigned to you. You as an individual have a personal investment in seeing that task through.

The work place can be filled with all kinds of challenges, and can seem oppressive if you can’t exact any control over it. By pairing and having an option to rotate, you get to pick your work and pick your coworker every single day. And choice is a great way to stay happy at work.

  • 0 Shares
  • Share on Facebook
  • Share on Twitter
David Goudreau

Standup 7/1/10 – Caching Apache images that have ?123456789

David Goudreau
Thursday, July 1, 2010

Help

  • Does anyone know how to set a caching header for urls that end with a cachebusting string (e.g. ?123456789)? Apparently you’re not allowed to get the query string when mucking with rewrite rules. A couple of people think that you are able to get your hands on it…somehow.
  • How do you do a screen capture from the Mac command line? We want to do a screen capture of a running emulator. Maybe something like this?

Interesting Things

  • Rails 2.3.8 – for nested attributes, ‘_destroy’ is the new ‘_delete’. Looks like the Rails team is on top of it. Use

    @foo.update_attributes(:foo_attributes => {'0' => {:id => '1',  '_destroy' => '1'}})
    

    instead of

    @foo.update_attributes(:foo_attributes => {'0' => {:id => '1',  '_delete' => '1'}})
    
  • 0 Shares
  • Share on Facebook
  • Share on Twitter
David Goudreau

Standup 6/30/10 – Selenium blah blah blah RSpec focused test blah blah blah Rubymine blah blah

David Goudreau
Wednesday, June 30, 2010

Help

  • Determining a users default time zone – someone must have solved this already, right? Well, Javascript only gives you the time offset, which isn’t that useful, but Fleegix has some good support we’ve used on other projects.
  • The after_commit gem – we wanted to create an audit entry every time a particular model failed to create successfully. We tried using the after_rollback hook in both our tests and our development environment but it just didn’t work. The before_rollback callback also didn’t work, but the non-rollback callbacks in the gem seemed to behave. Anyone have any thoughts outside of overriding ActiveRecord ourselves?

Interesting Things

  • Vows – real async Javascript testing for Node.js. Jasmine does support some async testing, but it sounds like it’s a bit clunky to do.
  • Using RVM on the server – is anybody doing this? Apparently not yet, but we had some strongly differing opinions on the matter as to how useful it would be and if it’s the right tool for the job. To be continued…
  • Rails 2.3.8 + mongrel_rails + Rack 1.1.0 – cookies do not work. At all. Apparently with Rack, cookies get fed into mongrel_rails as an array, while Mongrel expects them to be a String. Looks like someone already ran into this. The fix is to throw this in a Rails initializer file:

    class Mongrel::CGIWrapper
      def header_with_rails_fix(options = 'text/html')
        @head['cookie'] = options.delete('cookie').flatten.map { |v| v.sub(/^n/,'') } if options.class != String and options['cookie']
        header_without_rails_fix(options)
      end
      alias_method_chain(:header, :rails_fix)
    end if Rails.version == '2.3.8' and Gem.available?('mongrel', Gem::Requirement.new('~>1.1.5')) and self.class.const_defined?(:Mongrel)
    

    (As an aside, running mongrel_rails by using script/server works fine, we only found this issue when running our Webrat Selenium tests, which calls mongrel_rails in some different way that causes this bug to be exposed.)

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

Chicago Tracker Users Group (CHI.TUG) meetup on Jul 22

Dan Podsedly
Tuesday, June 29, 2010

We’re forming a Tracker User Group in the windy city, and the first meetup is scheduled for Jul 22, at the Hashrocket Chicago office.

I’ll be there to talk about the concepts and history behind Tracker, our experience with it, and will give a demo to those that are interested. It’s a great place to give feedback and ask lots of questions.

Space is limited, so RSVP soon.

  • 0 Shares
  • Share on Facebook
  • Share on Twitter
David Goudreau

Standup 6/29/10 – EngineYard Redis change

David Goudreau
Tuesday, June 29, 2010

Help!

  • Ey cloud deploy – has anyone done a deploy to EY cloud and seen the Mongrel instances not get bounced?
  • Does anyone have any tips on testing distributed applications? We’re looking for the least ugly/painful way to do it well.

Interesting Things

  • Rvm and sudo – for goodness sake don’t do it.
  • Sass not recompiling on deploys – a few of our projects have seen Sass files not recompile/update for some reason that we’ve yet to track down. So instead of spelunking through Sass code we just force the issue by having a rake task that forces the recompile – see this post for details.
  • Rails xhr redirect – one of our projects is using the xhr_redirect plugin to support ajax redirects – careful if you want to use it in your tests – it self-destructs if your Rails environment == ‘test’
  • Android meetup tonight at 6:30 PM – check out the details.
  • New Redis recipe from EY – following up from yesterday, the new EY recipe to set up Redis appears to work fine with a little tweaking.
  • 0 Shares
  • Share on Facebook
  • Share on Twitter
David Goudreau

Standup 6/28/10 – EngineYard Redis change

David Goudreau
Monday, June 28, 2010

Interesting Things

  • Redis at EngineYard – EY recently fixed a bug in their system chef scripts that was unintentionally installing Redis, so if you’re relying on it being there you may find it missing on your next deploy. EY has apparently just added a recipe for running Redis on a utility slice in ey-cloud-recipes. We haven’t tried it out yet but at first glance it looks ok. This new recipe doesn’t support running Redis on a solo instance, but it doesn’t look too hard to change it to do that.

  • Library reorganization – we here at Pivotal have a library of books we let people ‘check out’. We’ve just reorganized it a bit. Let our local librarians know if it’s working for ya.

  • Mobile meetup – there’s a mobile meetup tonight from 6-8 PM tonight at Horatius in Potrero Hill. They’re expecting people from top mobile companies including entrepreneurs, application developers, designers, marketing/business, etc – please RSVP at the Facebook to attend.

  • 0 Shares
  • Share on Facebook
  • Share on Twitter
Matthew Kocher

Standup 6/23/2010: Mock what isn't there

Matthew Kocher
Wednesday, June 23, 2010

Help

  • Is there a reason why java on 64 bit linux doesn’t seem to go above 4GB of ram even if it’s given more? Some docs say that 2GB is the max, which is clearly not the case. Other projects report they have JVMs as large as 12 gigs. The search for a reason for the OOM errors goes on.

  • How do you mock the backtick or array operator with RR? This is done in rspec by mocking the symbol on the class that it’s being called in, but it’s not obvious in RR. Suggestions included finding a different way to test the behavior, wrapping the system call in a function that’s easily mockable, or investigating another way to shell out.

Interesting

  • Free Ruler, the measurement tool of choice for pivots who need more than the pixels measurements of Command-Shift-4, doesn’t just know the pixel density of the display it’s running on. 20″ Aluminum iMacs are significantly different from what it assumes.

  • The Jasmine javascript BDD testing framework project was jealous of the newcomer Cedar’s @cedarbdd twitter. They’ve struck back by creating @jasminebdd. You can follow both for updates, announcements and tips.

  • Some devs working on a mobile JS app recently discovered Prototype’s wrap function after implementing the same thing many times before. They did preface this with “is anyone else still using Prototype” so as to not offend the jQuery zealots.

  • 0 Shares
  • Share on Facebook
  • Share on Twitter
Matthew Kocher

Standup 6/22/2010:

Matthew Kocher
Tuesday, June 22, 2010

Interesting

  • Don’t put your expectations on a proxy, as the proxy might not get called in your code as the proxy may have turned into a real object by the time you use it. The right thing to do is to put your expectations on your proxy target, and you can do this on either either the target or proxy_target of the proxy object. Proxy_target is strongly preferred by some pivots.

Help

  • One project in the office is deploying varnish to EY Cloud, and was wondering if anyone else had gone down this path before. There is a EY Cloud chef recipe for varnish, but it is not supported thus changes with EY cloud may break it in the future.

Danger

  • A pivot warns that the recent facebooker gem (1.0.70 and 1.0.71) come with a gemspec that reports version 1.0.67. This causes bundler and RubyMine to both be very confused. If you find yourself in this situation complain loudly and then remove all previous version from your system.
  • 0 Shares
  • Share on Facebook
  • Share on Twitter
Matthew Kocher

Standup 6/21/2010: A Monday morning assortment

Matthew Kocher
Monday, June 21, 2010

Help

A pivot asks if anyone has used any of the multitude of grid frameworks in a production site. Assorted developers have used and liked Blueprint, Compass and 960 grid. Blueprint was the most used, but no one had any complaints. It seems that often times people think they need a grid when really they just want a three column layout.

Interesting

Another pivot reports that they are very happy after setting “paste and match style” to the default behavior for Cmd-V. The peanut gallery pointed out that you might want to paste without matching styles occasionally, and it was decided this would be an acceptable use of the mouse when it was necessary. Read more at Thaweesak

And an anecdote

The paste and match style discussion reminded another developer of a time when they were trying to compare two things pasted from terminal. They learned the hard way that there are character encoding or other issues that caused cause the diff to not include all the differences that they were looking for.

  • 0 Shares
  • Share on Facebook
  • Share on Twitter

Topics

  • agile (781)
  • rails (113)
  • testing (88)
  • ruby (83)
  • ruby on rails (70)
  • jobs (62)
  • javascript (55)
  • techtalk (44)
  • rspec (38)
  • ironblogger (32)
  • productivity (30)
  • activerecord (29)
  • gogaruco (29)
  • git (28)
  • nyc (27)
  • rubymine (26)
  • bloggerdome (23)
  • mobile (22)
  • process (21)
  • pivotal tracker (21)
  • cucumber (20)
  • design (19)
  • jasmine (19)
  • ios (18)
  • webos (17)
  • objective-c (17)
  • android (16)
  • tracker ecosystem (16)
  • palm (16)
  • "soft" ware (16)
  • fun (15)
  • ci (15)
  • cedar (15)
  • rails3 (14)
  • performance (14)
  • bdd (14)
  • gem (13)
  • css (13)
  • tdd (13)
  • selenium (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. 37
  5. 38
  6. 39
  7. 40
  8. 41
  9. 42
  10. 43
  11. ...
  12. 79
  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 >