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

Preparing for Rapid Growth - Tips for Enabling Your Rails App and Team to Grow Quickly

itriage
April 26, 2012

Preparing for Rapid Growth - Tips for Enabling Your Rails App and Team to Grow Quickly

Every young company expects to grow quickly, but is your engineering team really ready for it? In 3 years, iTriage went from a kitchen table to one of the leading mobile consumer healthcare apps with over 5 million downloads. Staying ahead of this growth didn't just mean hiring more Rails engineers.

itriage

April 26, 2012
Tweet

Other Decks in Technology

Transcript

  1. Preparing for Rapid Growth - Tips for Enabling Your Rails

    App and Team to Grow Quickly Patrick Leonard VP, Technology iTriage @patrickjleonard Tuesday, April 24, 12
  2. first, you get the great idea for the new, new

    thing tale of a new product Tuesday, April 24, 12
  3. then you build the initial product (possibly rushing just a

    bit to get it to market...) Tuesday, April 24, 12
  4. but growth comes with challenges • users, customers and investors

    want more features • so you hire more software engineers • code debt and the resulting slow down Tuesday, April 24, 12
  5. but growth comes with challenges • users, customers and investors

    want more features • so you hire more software engineers • code debt and the resulting slow down Productivity Code Debt Tuesday, April 24, 12
  6. growing up gracefully • iTriage went from kitchen table to

    one of the leading consumer healthcare apps in 3 years • meeting this growth has meant more than just hiring more software engineers Tuesday, April 24, 12
  7. how we architected for growth 1. technical architecture: re-architecting the

    product -- enabling high quality iOS, Android and Web Apps -- preparing for growth in Rails team and codebase 2. development and release management processes 3. recruiting and hiring strategies Tuesday, April 24, 12
  8. • API for iOS, Android and Web App to consume

    • remove web views in favor of native in iOS / Android • unobtrusive Javascript for Web App 1. technical architecture enabling high quality iOS, Android and Web Apps Goal: remove tight-coupling between app and server Result: shorter release cycles, better UX, higher quality Tuesday, April 24, 12
  9. function jQueryCall(url, params, callback) { $.ajax({ url: url, data: params,

    dataType: "jsonp", contentType: "application/json", success: callback }); } 1. technical architecture enabling high quality iOS, Android and Web Apps JQuery request: { "medications": [ { "id": 516, "name": "Abacavir" }, { "id": 3569, "name": "Abilify®" }, JSON response: Tuesday, April 24, 12
  10. • separate functional modules using separate Rails apps • RESTful,

    versioned API (bias to JSON endpoints) 1. technical architecture preparing for growth in Rails team and codebase Goal: loose coupling within the Rails app Result: reduce “butterfly effect” bugs, shorter learning curve for new developers, easier releases & upgrades Providers Clinical Scheduling News Tuesday, April 24, 12
  11. 1. technical architecture preparing for growth in Rails team and

    codebase iTriage Product Architecture - High Level iOS Android Web Rails Auth * (OAuth2) Profile * Location (Google Maps) Search * (Solr) Clinical Providers Scheduling News * Shared Services Functional Modules Analytics / BI / Big Data API API API API API API API API API Proxy Integ ration * separate Rails app Tuesday, April 24, 12
  12. 1. technical architecture SysOps / DevOps automation iTriage Product Architecture

    - High Level iOS Android Web Rails Auth * (OAuth2) Profile * Location (Google Maps) Search * (Solr) Clinical Providers Scheduling News * Shared Services Functional Modules Analytics / BI / Big Data API API API API API API API API API Proxy Integ ration iOS Build Automate (Chef) Monitor CI / Test Suite Monitor Android Build Amazon Web Services Campfire Pivotal Tracker Google Apps github Tuesday, April 24, 12
  13. 2. process Goal: velocity, quality, learning new skills • frequent,

    fixed-date releases • pull requests Result: higher velocity, actually hit release dates Tuesday, April 24, 12
  14. 2. process • 3 week planning/release cycles (weekly releases for

    Rails) • App releases lag Rails release by 2 weeks Week 1 Rails Feature Development Rails QA/ Release Apps Feature Development Apps QA / Release Week 2 Week 3 Week 4 Week 5 P C P C Tuesday, April 24, 12
  15. 2. process Goal: org growth with minimal layers • more

    technical leadership, less “management” • teams aligned by API separation Result: flat organization, run by technology people Apps Rails QA Infra/ Analytics Tuesday, April 24, 12
  16. 3. recruiting & hiring • passion for the technology and

    for our mission • interviewing: less talking, more coding Goal: screen for both attitude & aptitude Tuesday, April 24, 12
  17. why do we work on iTriage? • we believe people

    should have immediate access to health information when and where they need it. • we believe people should have control of their own, and their family’s, health data. • we believe the healthcare system is broken and we are working to fix it by empowering consumers. Tuesday, April 24, 12
  18. iTriage is growing and hiring • engineering team is growing

    in Rails and other areas • renovated a historic building in downtown Denver • visit our booth or about.itriagehealth.com/jobs/ Tuesday, April 24, 12