litany against fear

coding with spice ¤ by nick quaranto

Professional Ruby Conference Keynote Notes

published 18 Nov 2008

Part of my series of notes from the Professional Ruby Conference. See them all here.

This is the keynote of the conference from Obie Fernandez. He’s going over the Hashrocket Way, or how he runs his company. Explaining the origins of the hashrocket logo…80s rock. Pretty metal. Going to explain how they work…based on Agile: Extreme programming, scrum, their own experience. Four principles in the manifesto for agile software development:

Individuals & interactions over processes and tools

  1. Pair-programming. They use 2 people in front of one computer, 2 keyboards, 2 mice. Both people that way can code and can be contributors. More productive despite only one workflow. Why? Less interruptions (Twitter, questions, bosses, etc) A lot easier to continue when two people are working on the same thing if one person needs to take a break. Pair programming is a SKILL to be learned! Benefits come out over time, not immediately. Need to work at it. Continous code reviews => produces high quality code => less defects and problems. LEVELING UP of knowledge because of working closely with skilled people.
  2. No interviews. What? No, wait. Phone interviews first. But beyond that, no. Can’t figure out how they work until you actually WORK with them. Obviously a bit of a problem…but they should be able to make it if they want the job.
  3. Don’t get too big. He doesn’t want the company to get bigger than it is. Rails is productive and the team size can stay small because of it.
  4. Small teams. 2-4 people. Roles can rotate…generally a designer + a senior person who’s overseeing + client = sweet spot of 5-7 people for a team. Very self-organizing.
  5. Everybody together. No one works remotely at Hashrocket. Ever. They have a Guest Star program to bring in people for fresh ideas. They bring in people on short-term engagements. Just bring them in for a week, brings in new blood, excitement, new thinking.

Working software over comprehensive documentation

  1. TATFT. Test all the fucking time. Showing a snippet from Brian Liles’ talk.
  2. RSpec. Think in terms of specifications. Protection against regression, documentation generated for them in the output.
  3. Minimum viable product. What’s the least you can do to get a working site up. Rails Rumble 2007…powerful constraints, powerful deadlines. Hashrocket builds sites for clients in 3 days flat. How do you do this? If distributed, bring people together in one place.
  4. Small Releases. Very short release cycles. 2-3 weeks sometimes, but multiple deploys a day for some clients.
    #Customer colloboration over contract negotiation
  5. Onsite customer. Talk to them face to face and get them to answer the questions. Find a way to make your environment desirable. (You can see the beach from their office!)
  6. Visual Design FIRST. They require design documents first. Not exactly an XP practice. They focus on programming not design. Awesome hybrid process graphic…combines steps from classic waterfall with modern, iterative agile methods.
  7. User stories are used to define requirements. Narratives about features, with acceptance criteria and relative effort required. Provides a backlog of how long tasks take and leads to better estimation. They use ‘storycarding’ to figure out how long features/tasks will take.
  8. Master Services Agreement. Way more about this on Obie’s blog. Defines the relationship and business partnership. Legalese. Keeps IP property separate. Keep these documents simple…(Doesn’t look that way to me).

Responding to change over following a plan

  1. Pivotal Tracker. Cornerstone of his business, and it’s free to try! Shows current features and a backlog of current ones. (I wonder how this compares to Lighthouse!)
  2. Standup meetings. Literally stand up to keep it short. Phone call every day with clients too. Traditional scrum style standup…what are you doing, what did you do.

One more thing…HAVE FUN! Should be fun since Ruby is awesome.



code (2) gaming (3) git (9) internet (5) prorubyconf (25) railsconf (17) ruby (8) windows (3)