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

Preparing for Rapid Growth - Tips for Enabling ...

Avatar for itriage 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.

Avatar for itriage

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