+ - 0:00:00
Notes for current slide

Who am I?

  • Web developer @ucsf_library (PHP, Javascript)
  • Technical lead for the Ilios Project open source curriculum management system for health science education.
  • Proud owner of around the world and back again UCCSC badge!
Notes for next slide

From Stuck to Soaring

Taking Aim at Continuous Delivery

Jon Johnson

jrjohnson
jrjohnson-ucsf
jrjohnson_

Jon's avatar

Slides at: https://jrjohnson.dev/talks/2018-08-stuck-to-soaring-uccsc.html

Who am I?

  • Web developer @ucsf_library (PHP, Javascript)
  • Technical lead for the Ilios Project open source curriculum management system for health science education.
  • Proud owner of around the world and back again UCCSC badge!

Back Story

Back Story

Way Back in 2014

Back Story

Way Back in 2014

photo of YIU2 books

  • Ilios was built on code igniter and YUI 2
  • Simple Bugs were taking a long time to fix and supporting new browsers required a lot of testing
  • A few months into my tenure I was talking about an issue that only popped up in IE11 and Sascha asked me to start thinking about replacing the UI entirely to get our from under the weight of YUI.

Fast Forward to 2018!

Fast Forward to 2018!

ilios's monthly status report with green boxes for budget, community, development, and outreach ilios's latest release named after a cheese ilios's 100th API release

Today all of that has changed

  • 37 releases in the first 30 weeks of 2018
  • Commit to production in 15 minutes
  • @zorgbort release the frontend (chatbot)
  • In use at dozens of health science universities on five continents
  • Paid hosting for Stanford Medicine
  • Added LTI Dashboard tool
  • Integration with e*value
  • We didn't start with this. It took a lot of time and iteration to get here and we're still working on it.
  • Confidence to release on Friday Night
  • Plan to add a new LTI tool in the next few months
  • Replaced our entire permissions system in place and ahead of schedule (so far with only two bugs)
  • Ready to jump on AWS fargate container to automate deployments
  • Got rid of group tool and integrated it in

How?

How?

Test all the things!

Automate all the things!

Agile all the things!

Steal all the things!

  • We're getting so many things for free!

Who?

  • 3 developers, 1 support. .5 project manager
  • Send people to Sascha's talk It's the People People at 8:30am tomorrow

Seriously a rewrite?

Declaring Technical Bankruptcy

Smashed Piggy Bank

  • At some point paying down debt no longer makes sense
  • But it only makes sense to declare bankruptcy if you can build it again without incurring the exact same debt again.

Confidence

  • Owners should be confident in each release
  • Developers should be confident in each change
  • Users should be confident that bugs are important and will get fixed
  • We're building Ilios to last

Tests Bring Confidence

Speed Brings Confidence

Speed Brings Confidence

A thing is needed... a thing is done.

--Sascha Cohen

  • Slightly oxymoronic? Going too fast is scary, Being in complete control of speed takes Confidence
  • Shipping fast makes things better. No need to prioritize over a long period. Don't commit to anything just deliver it. On vacation? Less work gets done. Stop arguing over labels, just build what is needed.
  • Speed is contagious the faster you are the less time you waste on administrative race conditions

Specifics

  • I knew we could do do software as infrastructure because of Eric Bolen's talk at UCCSC
  • I knew we didn't need to take it too seriously to do agile well because Judy Dobry's UCCSC talk.
  • I knew we didn't need to be all in one place to do development well because Seth Roby's talk
  • I knew we needed to take accessibility seriously because of Lucy Greko's talk.
  • I knew we could sell hosting to other schools because of Tom Andrioloa's talk.
  • I heard about Lambda from (well from AWS's Conference Actually), but I heard about that at UCCSC!
  • I knew we could because of UCCSC.

Specifics

You can do this stuff!

  • I knew we could do do software as infrastructure because of Eric Bolen's talk at UCCSC
  • I knew we didn't need to take it too seriously to do agile well because Judy Dobry's UCCSC talk.
  • I knew we didn't need to be all in one place to do development well because Seth Roby's talk
  • I knew we needed to take accessibility seriously because of Lucy Greko's talk.
  • I knew we could sell hosting to other schools because of Tom Andrioloa's talk.
  • I heard about Lambda from (well from AWS's Conference Actually), but I heard about that at UCCSC!
  • I knew we could because of UCCSC.
  • If you take nothing else home from this talk remember this: If there is one lesson I learn over and over again from this conference it is that it's possible to do so much with so little. We, as a group, build incredible things all the time.

Let's Talk about tests

  • I've never met anyone who didn't want to ship well tested quality software. So why don't we all? It's a lot of work. Start small. Make writing tests easy. Spend a lot if time on your test harness. You're the user. Focus on your experience.
  • I'm incredibly lazy and super forgetful so I need the computer to handle checks.
  • I'm sloppy and I can't spell
  • Tests also include code style rules
  • You can do Test Driven Development or Test Reminder Development or Write Tests When Done Development, just write the tests

Tests are a Speed Multiplier

  • Writing tests can be painful
  • Writing tests can be slow
  • Running tests takes time
  • Still worth it
  • 2275 Merged PRs on Frontend in 3 years (something like 14 changes / week)
  • Test unlock staying up to date

Open Source Model

  • Ilios was already Open
  • Having access to the source gives our partners confidence
  • Working in the open ensures our work is visible
  • Makes a lot of stuff free (thank you sponsors)
    • GitHub
    • Travis CI
    • Sauce Labs
    • Heroku
    • Netlify
    • BrowserStack

Github

screen capture of status checks

  • Fork an pull
  • PRs
  • Code Review
  • Greenkeeper
  • Code Climate
  • Waffle IO
  • Comfortable standard process for new contributors

Code Review

code review where a change is requested

  • Fix spelling!
  • Find bugs early
  • Catch weird assumptions
  • Learn from each other
  • Build community
  • Review some things together as a group

Code Review

review that just says something nice

  • Say something nice!

Code Review

lackadaisical code review with a comment that tests will be sufficient

  • Require a review, but dont' require a good one

Functional Review

functional review comment says click tests look fine

  • Every change needs a testable build
  • We automate this with Netlify

Continuous Integration / Delivery

Continuous Integration / Delivery

  • CI / CD have buzzword aspirations for sure
  • Loosely Integration is the process of constantly testing changes
  • Always be merging - we should always keep our master branch deployable; that means at any given moment we're sure we can ship master to production.
  • continuous delivery generally means that every change is immediately sent to production
  • We don't do continuous delivery at all. What we do instead is ensure that we could deliver at any time very rapidly. We're all setup for automated delivery, but we hold off on shipping releases until we accumulate enough meaningful changes. Usually this happens at the end of the week, but it could happen any time.

TravisCI

TravisCI

screenshot of Travis Build Stages with Tests and Deployment

  • For us Travis is the cornerstone of our pipeline.
  • We run all of our tests here.
  • It ensures that every change is tested before it is merged by integrating with Github
  • Travis is context sensitive so it knows to test a change, deploy some changes to staging, and deploy tags to production.

TravisCI

screenshot of Travis Build Split Into Chunks

  • Our build can be split into chunks to run faster

Automation Brings Speed

  • Jason is always 'Dialing it in'
  • This is a task which may never be completely done, but like CI setup it's always worth getting right
  • Good, reliable, automation truly pays off over the long term

Automation Brings Speed

and sometimes money!

  • Jason is always 'Dialing it in'
  • This is a task which may never be completely done, but like CI setup it's always worth getting right
  • Good, reliable, automation truly pays off over the long term

Separate Release Cycles

  • Frontend can be released way more often at no institutional cost

Building on a solid foundation brings confidence

ember testing docs screenshot symfony testing docs screenshot

  • We built on top of Ember.js and Symfony
  • Prominent testing documentation
  • Up to date and community maintained documentation
  • We knew we wouldn't have to document our tools
  • The more integrated the framework the easier it is to hire productive people
  • STAY UP TO DATE (semver, release plans, BC promises)

Let's Talk About Agile

  • No one thinks they're doing agile exactly right. You are!

The Agile Manifesto

We are uncovering better ways of developing software by doing it and helping others do it.

Through this work we have come to value:

Individuals and interactions over processes and tools

Working software over comprehensive documentation

Customer collaboration over contract negotiation

Responding to change over following a plan

  • There is nothing in here about sprint planning, celebrations, kanban boards, or scrum masters; while these things can and do have a place in many organizations they aren't required and might not even be right for you.

Discussion / Questions?

jrjohnson
jrjohnson-ucsf
jrjohnson_

Jon's avatar

Slides at: https://jrjohnson.dev/talks/2018-08-stuck-to-soaring-uccsc.html

Thanks

  • UCCSC
  • Library
  • Ilios Team

Back Story

Paused

Help

Keyboard shortcuts

, , Pg Up, k Go to previous slide
, , Pg Dn, Space, j Go to next slide
Home Go to first slide
End Go to last slide
Number + Return Go to specific slide
b / m / f Toggle blackout / mirrored / fullscreen mode
c Clone slideshow
p Toggle presenter mode
t Restart the presentation timer
?, h Toggle this help
Esc Back to slideshow