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.

817f5f1ada5fdeffcd14668107c08f0a?s=128

Megan Tiu

March 16, 2018
Tweet

Transcript

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

    March 16, 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? 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. what does your background bring to the table?

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

    they don’t have previous technical experience
  37. tell us about a problem that challenged you while learning,

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

    but you ultimately conquered. ✨
  39. application review

  40. None
  41. reviewers rated each application on: eagerness/excitement curiosity drive

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

    cuts and acceptances)
  43. code challenge

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

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

    own GitHub repo
  46. None
  47. None
  48. class Grader end

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

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

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

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

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

  55. None
  56. if you could provide feedback to the candidate on their

    submission, what would you say?
  57. final interview

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

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

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

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

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

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

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

    what you want to know
  65. onboarding

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

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

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

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

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

    sprint planning, point estimation
  71. growing

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

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

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

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

  76. None
  77. how we did it establish regular communication through 1:1s and

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

    decisions
  79. how we did it don’t be afraid to let them

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

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

    page regarding expectations
  82. wrapping up

  83. planning hiring onboarding growing

  84. our results

  85. we hired both of our apprentices!

  86. they’re both productive members of teams

  87. lessons learned

  88. listen to early hunches about candidates

  89. give yourself lots of time for this process

  90. always work with your goals in mind

  91. make a real impact

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

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

  94. This is a chance to take action.

  95. Go start an apprenticeship.

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

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

    on Twitter megantiu on GitHub