Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Coding the UI: Lessons Learned from Orbitz and ebookers

Coding the UI: Lessons Learned from Orbitz and ebookers

AjaxWorld - October, 2008

Mark Meeker

October 08, 2008
Tweet

More Decks by Mark Meeker

Other Decks in Technology

Transcript

  1. 1,971 Revisions to 1 .css file since Oct. 2006 2.9

    edits per day (if working weekends)
  2. 2007 - updates.orbitz.com 2008 - ebookers.com 2005 - CheapTickets.com 2006

    - mobile.orbitz.com 2001 - Orbitz.com 2002 - OrbitzForBusiness.com
  3. Single JSP files measuring in thousands of lines Massive amounts

    of repeated markup 561 files with <html> tag Minimal re-use 66 tables on one page Experience
  4. “Good judgement is the result of experience … Experience is

    the result of bad judgement.” —Fred Brooks
  5. Wishlist Internationalization Universality Maintain High Quality Code Promote Code Re-Use

    Consistent Experience http://flickr.com/photos/litandmore/2664900676/
  6. Translation Small words can expand 200-300% Rule of thumb: 40%

    Watch for wrapping issues (or lack thereof) Consider during design comp stage
  7. Follow Web Standards P.O.S.H. plain old semantic HTML Constant balancing

    act Reduces display defects Reset Styles Validate CSS Reminder that it is an evolving code base
  8. Progressive Enhancement Content is KING! Start with semantic markup Get

    working functionality with HTML only Enhance display with CSS Enhance behavior with JavaScript
  9. Separation of Layers No in-line styles or in-line JavaScript If

    it only works with JavaScript, create it with JavaScript
  10. Graded Browser Support A-Grade White-list (well-known, measurable market share) Tested

    by QA Team C-Grade Blacklist (incapable browsers, call drivers) X-Grade Everyone else
  11. High Quality Validation Build time tests (automated) static code analysis

    CSS validation JSP compile Constant developer vigilance Sometimes constraints are good
  12. Constraints Custom tags for some HTML elements anchors, images, form

    elements Only allow subset of attributes no: onclick, id required: various content Able to enforce all inputs have labels Free CSS and JS support Free shared functionality
  13. Debug Tools Logging Runtime in-application debugging Expose data to testers

    Debug various types of modules Content Error message placement
  14. File Structure Developer first Build for deploy later move files

    around combine them reformat them strip comments
  15. Composite View Separates “layout” of page from content Allows to

    plug in different modules into page Used in Apache Tiles Leverage in-house framework Try and gain as much re-use of JSP code
  16. DRY Avoid targeting IDs for CSS or JS Custom attribute

    for JavaScript Data Separation of Layers Helper code for small “controls” with the CSS to go with them Take advantage of lazy developers
  17. Consistent Experience Make learning how to use the site easier

    for users. Reduce the number of patterns. Stick with the ones that work best. Meet users expectations on... messaging error placements interfaces
  18. Consistent Experience Review the site for common patterns Introduce a

    Pattern Library Build common “controls”
  19. 80/20 Rule Make it easy to do the the common

    task for 80% of your users Make it possible to do everything for the other 20% that need to