Pro Yearly is on sale from $80 to $50! »

The Practical Guide to Building an Apprenticeship - RailsConf

The Practical Guide to Building an Apprenticeship - RailsConf

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 RailsConf 2018 on April 17th, 2018

817f5f1ada5fdeffcd14668107c08f0a?s=128

Megan Tiu

April 17, 2018
Tweet

Transcript

  1. The Practical Guide to Building an Apprenticeship Megan Tiu RailsConf

    April 17, 2018
  2. Hello there I am: Senior Software Engineer at CallRail @megantiu

    on Twitter megantiu on GitHub
  3. 2017

  4. None
  5. apprenticeship

  6. fulfill a real need

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

    hiring" Lia James @Lia_James http://blog.humanpredictions.io/apprenticeships-the-building-blocks/
  8. unify and engage your team

  9. create more diverse & inclusive organizations

  10. what’s an apprenticeship?

  11. what’s an apprenticeship?

  12. how’s it different from an internship?

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

    dirty work Short-term
  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
  15. laying the ground work

  16. pitching planning preparation

  17. what do you need to get it going?

  18. what do you need to get it going? a plan

    cash buy-in
  19. convince your boss

  20. Material Eliminate onboarding costs Eliminate recruiting costs Easier hiring of

    seniors
  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
  22. key factors to decide program length number of apprentices who’s

    going to do what
  23. key factors to decide what should they know? what should

    they learn? how will they learn it?
  24. you need a game plan

  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
  26. implementation

  27. hiring onboarding growing

  28. hiring

  29. goal establish an unbiased, even playing field for candidates

  30. how we did it application code challenge final interview

  31. how we did it end-to-end anonymization throughout the entire process

  32. application

  33. None
  34. None
  35. None
  36. None
  37. what are you looking to get out of this program?

  38. what does your background bring to the table?

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

    they don’t have previous technical experience
  40. what parts of programming excite you the most?

  41. what parts of programming excite you the most?

  42. what makes you unique?

  43. what makes you unique?

  44. tell us about a problem that challenged you while learning,

    but you ultimately conquered.
  45. tell us about a problem that challenged you while learning,

    but you ultimately conquered. ✨
  46. application review

  47. None
  48. reviewers rated each application on: eagerness/excitement curiosity drive

  49. how we did it: hiring make data-driven conclusions (including early

    cuts and acceptances)
  50. code challenge

  51. how we did it: code challenge decide what we want

    to know figure out what format we want write the code challenge
  52. how we did it: code challenge each candidate had their

    own GitHub repo
  53. None
  54. None
  55. class Grader end

  56. 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
  57. how we did it: code challenge code comments are the

    only context your candidates have
  58. how we did it: code challenge a script scrubbed commits’

    author info, then submitted a PR to a separate submissions-only repo
  59. how we did it: code challenge preserved commit history without

    risk of identifying candidates
  60. how we did it: code challenge the pull request format

    allowed reviewers to assess submissions in a familiar environment
  61. code challenge review

  62. None
  63. if you could provide feedback to the candidate on their

    submission, what would you say?
  64. final interview

  65. how we did it: final interview product/company intro technical conversation

    behavioral conversation
  66. how we did it: technical chat what challenged you while

    completing the code challenge?
  67. how we did it: technical chat see how they react

    to feedback using the suggestions from the code challenge review
  68. how we did it: behavioral chat what would you change

    about the school you attended?
  69. ways to improve use an HR platform

  70. ways to improve don’t limit the code challenge to one

    language
  71. ways to improve be more direct with application questions ask

    what you want to know
  72. onboarding

  73. goals set the apprentices up for success teach them essential

    concepts
  74. how we did it give them the same onboarding experience

    as the rest of our developers
  75. how we did it scavenger hunt!

  76. how we did it lessons on foundational concepts like OOP,

    debugging
  77. ways to improve give them earlier exposure to practices like

    sprint planning, point estimation
  78. growing

  79. goals anticipate needs provide an inclusive, friendly environment to grow

    and learn increase apprentice independence
  80. how we did it an initial ramping-up period small changes,

    bug fixes, internal-facing work
  81. how we did it team rotations doing customer- facing work

    exposure to all stack levels
  82. how we did it set early expectations

  83. None
  84. None
  85. how we did it establish regular communication through 1:1s and

    more
  86. how we did it include them in their team rotation

    decisions
  87. how we did it give them unstructured time to learn

    freely
  88. how we did it don’t be afraid to let them

    fail
  89. ways to improve look for early warning signs and be

    proactive about intervening
  90. ways to improve ensure everyone involved is on the same

    page regarding expectations
  91. wrapping up

  92. planning hiring onboarding growing

  93. our results

  94. we hired both of our apprentices!

  95. they’re both productive members of teams

  96. lessons learned

  97. listen to early hunches about candidates

  98. give yourself lots of time for this process

  99. always work with your goals in mind

  100. make a real impact

  101. we provided W2 jobs that pay a living wage and

    include full benefits!!
  102. Big movements are comprised of small shifts.

  103. This is a chance to take action.

  104. Go start an apprenticeship.

  105. Thank you! I am: Senior Software Engineer at CallRail @megantiu

    on Twitter megantiu on GitHub
  106. 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
  107. Thank you! I am: Senior Software Engineer at CallRail @megantiu

    on Twitter megantiu on GitHub