$30 off During Our Annual Pro Sale. View Details »

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

Megan Tiu

April 17, 2018
Tweet

More Decks by Megan Tiu

Other Decks in Technology

Transcript

  1. The Practical Guide to
    Building an Apprenticeship
    Megan Tiu
    RailsConf
    April 17, 2018

    View Slide

  2. Hello there
    I am:
    Senior Software
    Engineer at CallRail
    @megantiu on Twitter
    megantiu on GitHub

    View Slide

  3. 2017

    View Slide

  4. View Slide

  5. apprenticeship

    View Slide

  6. fulfill a real need

    View Slide

  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/

    View Slide

  8. unify and engage
    your team

    View Slide

  9. create more
    diverse & inclusive
    organizations

    View Slide

  10. what’s an
    apprenticeship?

    View Slide

  11. what’s an
    apprenticeship?

    View Slide

  12. how’s it different
    from an internship?

    View Slide

  13. Internship
    Focus on one specific
    project
    Implies they’ll do the
    dirty work
    Short-term

    View Slide

  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

    View Slide

  15. laying the ground
    work

    View Slide

  16. pitching
    planning
    preparation

    View Slide

  17. what do you need
    to get it going?

    View Slide

  18. what do you need to get it
    going?
    a plan
    cash
    buy-in

    View Slide

  19. convince your
    boss

    View Slide

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

    View Slide

  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

    View Slide

  22. key factors to decide
    program length
    number of apprentices
    who’s going to do what

    View Slide

  23. key factors to decide
    what should they know?
    what should they learn?
    how will they learn it?

    View Slide

  24. you need a game
    plan

    View Slide

  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

    View Slide

  26. implementation

    View Slide

  27. hiring
    onboarding
    growing

    View Slide

  28. hiring

    View Slide

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

    View Slide

  30. how we did it
    application
    code challenge
    final interview

    View Slide

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

    View Slide

  32. application

    View Slide

  33. View Slide

  34. View Slide

  35. View Slide

  36. View Slide

  37. what are you
    looking to get out
    of this program?

    View Slide

  38. what does your
    background bring
    to the table?

    View Slide

  39. candidates consistently try to
    "make up" for the fact that
    they don’t have previous
    technical experience

    View Slide

  40. what parts of
    programming excite
    you the most?

    View Slide

  41. what parts of
    programming excite
    you the most?

    View Slide

  42. what makes you
    unique?

    View Slide

  43. what makes you
    unique?

    View Slide

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

    View Slide

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

    View Slide

  46. application review

    View Slide

  47. View Slide

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

    View Slide

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

    View Slide

  50. code challenge

    View Slide

  51. how we did it: code challenge
    decide what we want to know
    figure out what format we want
    write the code challenge

    View Slide

  52. how we did it: code challenge
    each candidate had their own
    GitHub repo

    View Slide

  53. View Slide

  54. View Slide

  55. class Grader
    end

    View Slide

  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

    View Slide

  57. how we did it: code challenge
    code comments are the only
    context your candidates have

    View Slide

  58. how we did it: code challenge
    a script scrubbed commits’ author
    info, then submitted a PR to a
    separate submissions-only repo

    View Slide

  59. how we did it: code challenge
    preserved commit history without
    risk of identifying candidates

    View Slide

  60. how we did it: code challenge
    the pull request format allowed
    reviewers to assess submissions
    in a familiar environment

    View Slide

  61. code challenge
    review

    View Slide

  62. View Slide

  63. if you could provide
    feedback to the candidate
    on their submission, what
    would you say?

    View Slide

  64. final interview

    View Slide

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

    View Slide

  66. how we did it: technical chat
    what challenged you while
    completing the code challenge?

    View Slide

  67. how we did it: technical chat
    see how they react to feedback
    using the suggestions from the
    code challenge review

    View Slide

  68. how we did it: behavioral chat
    what would you change about
    the school you attended?

    View Slide

  69. ways to improve
    use an HR platform

    View Slide

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

    View Slide

  71. ways to improve
    be more direct with application
    questions
    ask what you want to know

    View Slide

  72. onboarding

    View Slide

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

    View Slide

  74. how we did it
    give them the same onboarding
    experience as the rest of our
    developers

    View Slide

  75. how we did it
    scavenger hunt!

    View Slide

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

    View Slide

  77. ways to improve
    give them earlier exposure to
    practices like sprint planning,
    point estimation

    View Slide

  78. growing

    View Slide

  79. goals
    anticipate needs
    provide an inclusive, friendly environment to
    grow and learn
    increase apprentice independence

    View Slide

  80. how we did it
    an initial ramping-up period
    small changes, bug fixes,
    internal-facing work

    View Slide

  81. how we did it
    team rotations doing customer-
    facing work
    exposure to all stack levels

    View Slide

  82. how we did it
    set early expectations

    View Slide

  83. View Slide

  84. View Slide

  85. how we did it
    establish regular communication
    through 1:1s and more

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  89. ways to improve
    look for early warning signs and
    be proactive about intervening

    View Slide

  90. ways to improve
    ensure everyone involved is on
    the same page regarding
    expectations

    View Slide

  91. wrapping up

    View Slide

  92. planning
    hiring
    onboarding
    growing

    View Slide

  93. our results

    View Slide

  94. we hired both of
    our apprentices!

    View Slide

  95. they’re both
    productive
    members of teams

    View Slide

  96. lessons learned

    View Slide

  97. listen to early
    hunches about
    candidates

    View Slide

  98. give yourself lots of
    time for this
    process

    View Slide

  99. always work with
    your goals in mind

    View Slide

  100. make a real impact

    View Slide

  101. we provided W2 jobs
    that pay a living wage
    and include full
    benefits!!

    View Slide

  102. Big movements
    are comprised
    of small shifts.

    View Slide

  103. This is a
    chance to take
    action.

    View Slide

  104. Go start an
    apprenticeship.

    View Slide

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

    View Slide

  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

    View Slide

  107. Thank you!
    I am:
    Senior Software
    Engineer at CallRail
    @megantiu on Twitter
    megantiu on GitHub

    View Slide