The Practical Guide to Building an Apprenticeship - Madison+ Ruby

The Practical Guide to Building an Apprenticeship - Madison+ Ruby

Currently, our industry has a surplus of bright junior developers, but a lack of open junior positions. Building a developer apprenticeship in your organization is a great way to provide a haven for these talented devs, while simultaneously making your team more productive and easing the pain of hiring.

In this talk, you'll learn from the mistakes I've made and wins I've had in creating an apprenticeship. From pitching the idea to growing your apprentices, you'll gain a step-by-step guide to successfully building your own apprenticeship program.


Presented at Madison+ Ruby: Chicago on May 11th, 2018


Megan Tiu

May 11, 2018


  1. 3.
  2. 4.
  3. 7.

    "there’s a widening gap between educational institutions and the companies

    hiring" Lia James @Lia_James
  4. 14.

    Internship Focus on one specific project Implies they’ll do the

    dirty work Short-term Apprenticeship Focus on sustainable growth Implies they’ll be honing their craft Long-term
  5. 21.

    Material Eliminate onboarding costs Eliminate recruiting costs Easier hiring of

    seniors Immaterial Increase diversity of background and skill Improve team connectivity Increase developer productivity
  6. 23.

    key factors to decide what should they know? what should

    they learn? how will they learn it?
  7. 25.

    i. goals ii. who to target i. potential places to

    advertise iii.timeline i. month 1 ii. month 2 iii.months 3 and 4 iv. projects i. specific possible projects ii. general qualities iii.examples v. process i. division of work ii. moving between teams iii.supplemental reading iv. mentorship vi.logistics i. interview process ii. involving the team hiring iv. work setup vii.items to consider
  8. 28.
  9. 33.
  10. 35.

    candidates consistently try to "make up" for the fact that

    they don’t have previous technical experience
  11. 37.
  12. 39.
  13. 43.

    how we did it: code challenge decide what we want

    to know figure out what format we want write the code challenge
  14. 45.
  15. 46.
  16. 48.

    describe '#score' do # the student forgot to answer a

    question context 'when passed nil for an answer' do let(:answers) { ['A', 'B', nil, 'D'] } it 'counts the nil as incorrect' do expect(grader.score(answers)).to eq(75.0) end end end
  17. 49.

    how we did it: code challenge code comments are the

    only context your candidates have
  18. 50.

    how we did it: code challenge a script scrubbed commits’

    author info, then submitted a PR to a separate submissions-only repo
  19. 52.

    how we did it: code challenge the pull request format

    allowed reviewers to assess submissions in a familiar environment
  20. 54.
  21. 55.
  22. 58.
  23. 59.

    how we did it: technical chat see how they react

    to feedback using the suggestions from the code challenge review
  24. 60.
  25. 66.
  26. 69.
  27. 70.
  28. 71.
  29. 72.
  30. 75.
  31. 79.
  32. 96.

    thank you! Loren Crawford @LCrawfish Pamela Vickers @pwnela Kylie Stradley

    @kyfast Robby Ranshous @rranshous Steve Jackson @stevejxsn Elliott Wood @ewoodh20 Rachael Wright @chaelcodes Pete Holiday @toomuchpete