Cover photo
Greg Vaughn
Works at Bonobos
Attended Texas Tech University
Lives in Frisco, TX
149 followers|86,524 views


Greg Vaughn

Shared publicly  - 
I find it interesting that at my re-entry into the Rails ecosystem, there's a growing call for OO and architectural purity. Rails is growing up. I experienced Java before, during, and after J2EE and in some ways history is repeating itself. Most recently I'm seeing this call to "grow up" here: and

I've seen over engineered J2EE systems where each interaction from UI to database has to go through 12 layers for "just in case" purposes. It slows down development immensely. And I've seen the Rails pragmatic approach encouraging tighter coupling that delivers quick results at the long term expense of maintainability. Both are important. But how can we find the middle of the pendulum swing? I don't want to see Rails swing to the J2EE extreme.

What I'm looking for are transitionary features in Rails. What I mean by that is to embrace some of the TWTOOTDI (there's more than one way to do it) approach of Perl but in a more grown up way. The multiple ways to achieve a goal are not just because of personal preference, but each are recommendations given different situations. In this vein, I'm excited about a new feature coming in Rails 4 -- ActiveRecord as a mixin (see This means, sure go ahead and quickly explore your problem space with models as subclasses of ActiveRecord::Base. Then later on, when you need to decouple things, go ahead and convert that to include ActiveRecord::Module instead. Then if/when that becomes painful separate those into a domain class and a persistable class.

I'd like to see more explorations of decoupling between the controller and view layer too. I'd like to see Rails expand support deeper into REST. As it is now, it's really just the routing layer that is somewhat RESTful. We should work on the 'R' part of REST -- representations and a means to decouple those. We should recognize the difference between a UI controller and a resource controller. They serve different needs. Perhaps there is an easy way to start with a pragmatic UI controller and refactor into a more decoupled resource controller later as requirements expand.

I guess I've rambled on enough. I let the domain of my old blog expire and this seemed like the most immediate way of me to write down and share some thoughts. The core idea is that new ideas brought to Rails need to offer transitionary ways to refactor into them and not try to replace default approaches. We need tools to let a good architecture emerge, not a prescribed architecture.
Add a comment...

Greg Vaughn

Shared publicly  - 
Just discovered feature of G+: some wiki-style markup in comments is supported. Not sure which bits, but * around a word bolds it.
Tom McGraw's profile photoGreg Vaughn's profile photo
Read the manual? How boring.
Add a comment...

Greg Vaughn

Shared publicly  - 
Lion uses a hidden 650MB on your hard drive permanently for an emergency boot partition. Brilliant AND sneaky.
Add a comment...
Software Developer (personal account)
  • Bonobos
    Sr. Principal Software Engineer, 2015 - present
  • LivingSocial
    Sr. Software Developer, 2011 - 2015
  • Improving Enterprises
    Principal Consultant, 2011
Map of the places this user has livedMap of the places this user has livedMap of the places this user has lived
Frisco, TX
Carrollton, TX - Cedar Park, TX - Austin, TX - Lubbock, TX - Ralls, TX - San Antonio, TX - Sinton, TX - Corpus Christi, TX - Houston, TX
polyglot software craftsman
  • Texas Tech University
Basic Information