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

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

817f5f1ada5fdeffcd14668107c08f0a?s=128

Megan Tiu

May 11, 2018
Tweet

Transcript

  1. The Practical Guide to Building an Apprenticeship Megan Tiu Madison+

    Ruby: Chicago May 11, 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. what does your background bring to the table?

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

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

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

    but you ultimately conquered. ✨
  38. application review

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

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

    cuts and acceptances)
  42. code challenge

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

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

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

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

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

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

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

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

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

    submission, what would you say?
  56. final interview

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

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

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

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

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

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

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

    what you want to know
  64. onboarding

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

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

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

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

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

    sprint planning, point estimation
  70. growing

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

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

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

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

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

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

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

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

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

    page regarding expectations
  81. wrapping up

  82. planning hiring onboarding growing

  83. our results

  84. we hired both of our apprentices!

  85. they’re both productive members of teams

  86. lessons learned

  87. listen to early hunches about candidates

  88. give yourself lots of time for this process

  89. always work with your goals in mind

  90. make a real impact

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

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

  93. This is a chance to take action.

  94. Go start an apprenticeship.

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

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

    on Twitter megantiu on GitHub