Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

first, you get the great idea for the new, new thing tale of a new product Tuesday, April 24, 12

Slide 3

Slide 3 text

then you form your initial team Tuesday, April 24, 12

Slide 4

Slide 4 text

then you build the initial product (possibly rushing just a bit to get it to market...) Tuesday, April 24, 12

Slide 5

Slide 5 text

and you get your first customers (then more investment, more growth - yea!) Tuesday, April 24, 12

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

• 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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

• 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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

questions Patrick Leonard VP, Technology iTriage @patrickjleonard Tuesday, April 24, 12