- We design and build extraordinary applications for companies looking to make the next great idea a reality.
- learn more
Selling colleagues on progressive enhancement
Achieving progressive enhancement at the view layer takes a lot of coordinated effort between server- and client-side developers. A lone UI developer can't make it happen without assistance and buy-in from the rest of the team. I'm not talking about selling the client or the business team. I'm talking about selling one's fellow developers.
I used to work for a giant company (Orbitz) with a large team of front-end developers and total organizational buy-in about accessibility and web standards. It took Orbitz years to get there, but once it did, progressive enhancement was the gospel.
Now I'm at Pathfinder, a smaller, agile shop with a large Ruby on Rails practice. Given all of Rails's built-in Ajax helpers, most Rails teams aren't used to separating the client-side behavior layer from the underlying, JavaScript-free web application. Progressive enhancement-style Ajax doesn't really take more work than normal Rails-style Ajax, but it does force a different style of application design - one that can't be imposed by the view-layer developers without assistance from the model/controller developers.
That's where pair programming comes in. I'm currently working on a Rails + jQuery project with some ambitious goals for cool UI widgetry and slick eye candy. Our approach for Iteration 1 went like this:
- Rails developer builds the basics of a new feature.
- JavaScript developer enhances it with client-side JavaScript.
- JavaScript developer pairs with Rails developer to explain which pieces of Rails code need to change if the application is to work in a JavaScript-challenged user-agent.
- Rinse and repeat. Everyone's getting their job done. Everyone's basically happy.
I think my Rails colleagues learned a bit about the progressive enhancement approach to Ajax. I definitely learned a bit about Ruby on Rails. But really, we were continuing to work from two separate conceptual domains.
Today we planned Iteration 2 and quickly resolved that our process next time around will go something like this:
- Rails developer and JavaScript developer together whiteboard the technical design of a new feature.
- Rails developer and JavaScript developer pair on both Ruby and JavaScript programming.
- Rails developer learns lots about JavaScript and web standards. JavaScript developer learns a lot about Ruby and Rails.
- Rinse and repeat. Everyone's getting cross-trained. The resulting code benefits from improved technical design. Everyone's much, much happier.
Topics: Ajax, Javascript, Progressive Enhancement, rails, ruby, Web Standards
Comments: 1 so far
Leave a comment
About Pathfinder
Recent
- Firefox Plugin Malware ‘Trojan.PWS.ChromeInject.A’
- Pathfinder releases version 1 of the its Flash Platform microsite (codename Mica)
- Pimp my Rails: Five Plugins & Gems to Make Rails Better
- iPhone: Using Pre-processor Directives for Device Testing
- Subtle OpenGL Projection Matrix Difference Between iPhone Simulator and Device
- App Security: Throw Out the Org Chart!
- Pimp my jQuery: Five plugins to replace the features Prototype and Scriptaculous users expect
- Thanksgiving 2008: What We’re Thankful For (In Rails)
- iPhone SDK: Testing with TextMate & GTM
- GWTQuery - JQuery-like Syntax in GWT
Archives
- December 2008
- November 2008
- October 2008
- September 2008
- August 2008
- July 2008
- June 2008
- May 2008
- April 2008
- March 2008
- February 2008
- January 2008
- December 2007
- November 2007
- October 2007
- September 2007
- August 2007
- July 2007
- June 2007
- May 2007
- April 2007
- March 2007
- February 2007
- January 2007
- December 2006
- November 2006
- October 2006
- September 2006
- August 2006
- July 2006
- June 2006
- May 2006
- April 2006
- March 2006


Way to go! That’s exactly how I feel it should be done. Not that a RoR programmer needs to know every single browser quirk, neither does a frontend developer have to know how to solve a complicated Active Record issue, but they both should have more than a general understanding of what the other person is doing and should be able to jump in on medium tasks. This leads to better code, more considerations on software design, accessibility and web standards, and also helps a lot if team members leave the team. Im sure your new workflow will be a huge success.
Comment by Andreas Stephan, Tuesday, June 24, 2008 @ 4:34 am