Skip to content


Subversion checkout URL

You can clone with
Download ZIP
branch: master
Fetching contributors…

Cannot retrieve contributors at this time

302 lines (228 sloc) 11.111 kb

Presenter: Ruby Rogues Live


Ruby's favorite podcast comes to RailsConf! Join the Ruby Rogues (David Brady, James Edward Gray II, [[Avdi Grimm]], Josh Susser, and Charles Max Wood) for this live episode on What Rails Developers Should Care About.

If you've listened to the show, you probably know that the Rogues favor:

  • Good Object Oriented design
  • Patterns
  • Test Driven Development
  • The Law of Demeter and Tell, Don't Ask
  • Open source
  • Beautiful code
  • Pair programming
  • Code metrics
  • Scaling performant code
  • and more

Since this is a live episode, we want to interact with the audience. Each Rogue will give a brief introduction on what's important to him as a Rubyist on Rails, then we will turn the session over to your questions. We will take them over the Internet and/or live, before and during the show.

All that AND we promise to wear amazing hats!


  • "CoffeeScript writes better JavaScript than you do" - David Brady (FIXME right name?)
  • "Here's your new best practice: not everything is a best practice" - David Finch's wife (FIXME correct?)
  • "Loss aversion is the pillar of conservatism" - @dhh
  • "Experience developers have a lower tolerance for technical debt" - @tenderlove
  • "I hate other people spending my risk budget" - Josh Susser
  • "Try a new language every year" - David Thomas


From @benjaminoakes

  • @stevenzeiler won a ticket to next year
  • A full year of RR
  • @jeg2
    • What should Rails developers care about
    • Best moment: "All code is experimental" - Dan Kubb
    • How Sputnik was invented
      • Reverse engineer the path... led to GPS
    • Imitating proper behavior: "The Journal of Best Practices" (David Finch) - dealing with Asperger's
    • "Here's your new best practice: not everything is a best practice"
  • [[Avdi Grimm]]
    • Why him? Not an expert or prolific at OSS
    • Giving names to things; mindful coding
    • WikiWiki - read it
    • Don't "shut up and code
    • Give names to your decisions; introspect
  • David Brady (FIXME not sure of the name)
    • Anti-patterns
    • Don't program another language in Ruby
    • Learn Ruby like its a whole new language
    • Get to know JavaScript (and keep in mind it can be crap)
    • Be a part of your local community
    • Don't be a douchebag
  • Josh Susser
    • Prudence is important
    • Most of the cost of code is maintenance
    • DHH said "fear Rails 4"
    • "Loss aversion is the pillar of conservatism" - @dhh
    • "Experience developers have a lower tolerance for technical debt" - @tenderlove
    • Limited budget for risk
    • "Other people spending my risk budget"
    • Gustave Flaubert quote
  • Max Wood
    • LivingSocial eating up the krill (sp?) like a whele
    • Lots of people looking for Rails devs
    • Not enough to go around
    • Languagees like a religion (Mormons in picture)
    • Let's convert people :) Get people to try Ruby/Rails
    • "Be there for the assist"
    • Grassroots
    • Don't abandon Rails. We need to mint more Rails devs.
    • Get people to try it.
    • "Try a new language every year" - David Thomas
    • Making a closed mailing list ($10/yr?): Not quite ready yet.


(not gonna write everything, sorry :) )

  • Rich Hickey keynote

    • Object oriented vs functional
    • Different approach
  • "All sufficiently large, complex, and successful systems become object-oriented systems." - @avdi



What should a Rails Dev care about? FIREFLY

Dan Kubb: "All code is experimental." @jeg2's favorite rogue moment.

How does something get invented?

Example: tracking Sputnik, using the doppler effect with its beeps, to reverse-engineer its path through orbit; that was reverseable, and then was used to track nuclear submarines through the ocean, then Regean opened it up.

Controlling Asperger's: imitating proper behavior. "The Journal of Best Practices," by David Finch - he learned how to imitate empathy. But, sometimes, things just go wrong. "Here's your new best practice: not everything is a best practice."



He spent a recent week at Hashrocket, and was asking himself, "why me?" Because "you don't just have an idea, you speak up, you give a name to it, you explain why."

Mindful coding

(its opposite, "shut up and code")

...which is acceptable, sometimes, in the dev team room, but terrible for online discussion. Look at how good is. "Thank goodness they didn't shut up & code."

"Pattern: a decision an expert makes over & over." -Kent Beck

So: when you decide something, name it.

  • Write code
  • Think about it
  • Explain it to someone else
  • Not just what, but why

David Brady


Being fresh off the PHP boat (not an actual anti-pattern)

Don't program FORTRAN in Ruby. Ruby is not a BOLS language: block-oriented, lexically scoped. Learn Ruby, as if it were a whole new language.

Know that JavaScript is CRAP. Know JavaScript. Know CoffeeScript.

Let Rails do the OO for you. Don't join in the community: learn, and then teach.



Prudent: acting with, or showing care and thought for the future. Most of the cost of owning code is the maintenance cost.

Fear of Progress? DHH said loss aversion is the pillar of conservatism. tenderlove said experienced devs have a lower tolerance for technical debt. Instead: we have a limited budget for risk in our projects. I hate having other people spend my risk budget for me. Asset Pipeline spent my risk tolerance, bundler saved me some risk budget.

"Be regular and orderly in your life like a bourgeois, so that you may be violently original in your work." - Gustave Flaubert

Charles Max Wood

Hey, we need more Rails devs, right? Let's go make some converts! We need missionaries and evangelists. We should convince devs to try ruby & rails, and convince companies to try it. We don't want to slow down for them to come up to speed, but we should "put the ball in front of them, & help them score." We need to start w/ the devs, & then convince them to convince their companies.

ShowMeDo - a learning community for python pluralsight - java guys O'Reilly school of tech - no strong ruby material

Reach out, teach people, and make them our skunks-works, our moles. Then, we'll have more devs, more companies who'll train devs, etc. As you do this, speak up at

@jamesgary's notes (just key takeaways)

  • > All code is experimental - Dan Kubb
  • GPS invented after series of possibly unrelated events (sputnik, nuclear subs, etc)
  • Asperger's guy make "Journal of Best Practices" to emulate empathy
    • Goes overboard, obsessively writes all mistakes and new rules
    • Wife says: "Here's your new best practice: Not everything is a best practice"
  • Try to see past what she is, and on to what she can be: Freedom - Malcolm Renalds
  • Mindful coding
    • "Shut up and code" can be acceptable in the team room
    • "Shut up and code" is poison online
    • Thank goodness they (Kent Beck, Martin Fowler, etc) didn't shut up and code
    • > A pattern is something an expert does over and over - Kent Beck
    • Give names to the decisions you make
      • Write code
      • Think about writing code
      • Explain it to someone else
      • Not just what, not just how, but why you made the choices you made.
  • Prudence
    • Future: Where our code where spend the rest of its life
    • We have a limited budget for risk in our projects
    • I hate having other people spend my risk budget for me
    • Be regular and orderly in your life like a bourgeois, so that you may be violently original in your work - Gustave Flaubert
      • Rails should be simple, predictable, reliable
      • Now when you need to do something extreme, you're doing it on something solid
  • It's the community's responsibility to help newbies pick up Rails (not the responsibility of Ruby/Rails)
    • Need to convince other developers to try Rails
    • We need to keep up our momentum
    • Companies need to be able to find Rails developers


  • What about Rich Hickey's comments, about simplicity? Wouldn't that mean lots of naked information?

JEG2: Yep. Simple + simple + simple doesn't guarantee simple.

JS: Rich was talking FP, and that's a fundamentally different thing. I'm done waiting for it to become popular.

  • What's a bad use of instance_exec?

  • I think we need to do more evangelizing & teaching

CMW: Yeah, teaching ladies to code, etc...lots of good programs out there. We should open our companies up, too, so people can see what we do.

JS: Rails bridge is teaching new rails devs, esp. women. Go volunteer for Rails Bridge!

DB: get away from programming water-holes, talk to non-devs. Start-up weekends, etc. People w/ biz ideas who can't program.

JEG2: Yep. Sometimes just set up a wiki for a group like that.

  • WHen is the Rails community gonna be half-women?

JS: yeah, that's important - we're trying.

CMW: respect is kind of the baseline. Rails bridge really gets it. But be friendly - women like other people like them.

JEG2: Angela's Rogues episode is everyone's favorite.

Evan Phoenix: How many of us got started programming in highschool or earlier? (lots) We should try to get kids involved.

  • What are some good examples of cross-pollination between langs?

JEG2: lots of examples between ruby, javascript, coffeescript, bash...ruby does a pretty good job of using different langs for their strengths.

JS: Ruby has taken lots from java & python, and it's also lisp + smalltalk, with perl.

  • Sarah from Rails bridge: I'm bringing women into the rails community because the men are awesome. We get 1/2 devs from other langs, & 1/2 totally new to programming. We want to get them to know the people in the community, to encourage them to come to confs.

JEG2: when will you be coming on the podcast?

  • There was a question about FP not succeeding since the 50's, but why should we care about OO paradigm - shouldn't we care about Ruby or Rails paradigm?

CMW: yeah, we need to use the FP & OOP parts in balance.

AG: all sufficiently systems evolve into OO systems. Evidence: look at the architecture of a large system, it's all boxes & arrows, with well-defined protocols between them. That encapsulation keeps us sane. The question is, shouldn't we have that cellular structure at lower levels, too?

DB: Good FP & good OO keep things encapsulated - immutability, & info hiding. You can use that stuff in Ruby, it's pretty seamless, switching between them.

JS: Ruby seems better at the FP/OO blend than JavaScript does.

AG: GOOSGBT talks about this blend - method internals are functional, and the interface is more about mutable state.

External Links

Jump to Line
Something went wrong with that request. Please try again.