The Practical Guide to Building an Apprenticeship

The Practical Guide to Building an Apprenticeship

Presented at RubyConfPH on March 16, 2018

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.


Megan Tiu

March 16, 2018


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

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

    hiring" Lia James @Lia_James blocks/
  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 iii. post-apprenticeship hiring iv. work setup vii. items to consider
  8. 28.
  9. 33.
  10. 34.
  11. 36.

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

    they don’t have previous technical experience
  12. 38.
  13. 40.
  14. 44.

    how we did it: code challenge decide what we want

    to know figure out what format we want write the code challenge
  15. 46.
  16. 47.
  17. 49.

    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
  18. 50.

    how we did it: code challenge code comments are the

    only context your candidates have
  19. 51.

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

    author info, then submitted a PR to a separate submissions- only repo
  20. 53.

    how we did it: code challenge the pull request format

    allowed reviewers to assess submissions in a familiar environment
  21. 55.
  22. 56.
  23. 59.
  24. 60.

    how we did it: technical chat see how they react

    to feedback using the suggestions from the code challenge review
  25. 61.
  26. 67.
  27. 70.
  28. 71.
  29. 72.
  30. 73.
  31. 76.
  32. 80.
  33. 97.

    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