Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Developers, from scratch (Warecraft 2019 - Austin, TX)

Mike McNeil
February 21, 2019

Developers, from scratch (Warecraft 2019 - Austin, TX)

The latest iteration of the talk, for Warecraft 2019 in Austin, TX (https://www.warecraft.io)

> Why hire a developer when you can hire a barista and teach them to code? Since 2012, I’ve hired and worked closely with many professional developers... but I’ve trained almost as many first-time programmers myself. It’s going surprisingly well. We’re building higher quality software at a much faster pace than ever before. In this talk, I’ll show you how we did it.

> You’ll see how long it takes (at least for us) before “from scratch” developers can be effective on real-world projects, and I’ll share some tips on how to empower them to be productive even while they are still very much an apprentice. Finally, we’ll take a look at the numbers. Home-grown training takes considerable effort, and it isn’t for everyone. But hiring even a small team of professional, full-stack software engineers is an expensive and time-consuming proposition— and it doesn’t necessarily lead to better results. Depending on your financials and timeline, certifying some of your own talent could be the right decision for your business, your products, and your users.

P.S. This talk at Warecraft was not recorded, but the video from a variation I presented a few months earlier in Santiago is available on YouTube: https://m.youtube.com/watch?v=M9kH4j74H70

Mike McNeil

February 21, 2019
Tweet

More Decks by Mike McNeil

Other Decks in Business

Transcript

  1. Developers,
    from scratch

    View Slide

  2. Why hire a
    developer
    when you can hire a barista
    and teach them how to code?

    View Slide

  3. Why not?
    ≤ $3,500
    per month
    $7,000 - $11,000
    per month

    View Slide

  4. View Slide

  5. View Slide

  6. Why hire?

    View Slide

  7. because you can't
    do it all by yourself
    not fast enough, anyway

    View Slide

  8. View Slide

  9. 1099 contractor
    Studio
    W2 employee

    View Slide

  10. reasons to hire

    View Slide

  11. View Slide

  12. Conventional wisdom

    View Slide

  13. Business needs:

    View Slide

  14. some coding experience lots of coding experience

    View Slide

  15. entry-level developer
    $$
    lead / architect
    $$$

    View Slide

  16. little to no coding experience
    apprentice
    (barista)

    View Slide

  17. Apprentices capture more and more
    business value as they gain skills
    specific to your business.

    View Slide

  18. Conventional wisdom

    View Slide

  19. Apprentices can enjoy and learn from tasks that
    more experienced developers might avoid.

    View Slide

  20. Apprentices don't have "bad" coding
    habits. (Yet.)

    View Slide

  21. Conventional wisdom

    View Slide

  22. What about velocity?

    View Slide

  23. Assigning the wrong user stories
    to apprentices can slow down the
    whole team.

    View Slide

  24. Fortunately, there's a lot of other important work to do.

    View Slide

  25. Semi-technical setup and
    configuration tasks

    View Slide

  26. Online account setup

    View Slide

  27. Time tracking
    (playing "timekeeper")

    View Slide

  28. First tier customer support
    (watching the "redphone")

    View Slide

  29. Reconnaissance
    (competitor research, UI research, etc.)

    View Slide

  30. Vendor / pricing research
    (and communication, when necessary)

    View Slide

  31. Hallway usability tests
    (and proactive human factors testing)

    View Slide

  32. Organizing the agile board

    View Slide

  33. Markup & stylesheets
    (HTML and CSS, email templates, PDF templates)

    View Slide

  34. Nitpicky UX adjustments

    View Slide

  35. Small things you might never get
    around to doing otherwise

    View Slide

  36. Custom forms, validations, modals

    View Slide

  37. Wireframes

    View Slide

  38. On-the-fly customer success hacks

    View Slide

  39. Open source support & triage
    (GitHub, Gitter, StackOverflow, social media)

    View Slide

  40. Looking up stuff from the database

    View Slide

  41. 3rd party API integrations

    View Slide

  42. Quality assurance (QA)

    View Slide

  43. The Company
    Managing apprentices
    (These guidelines work well for my team -- but every team is a little
    different.)

    View Slide

  44. The Company
    - Celebrate when apprentices catch bugs and gaps in
    requirements, even if they seem insignificant.
    - Decide on a process that apprentices will follow when they
    run out of stuff to do, and encourage active communication
    any time they're unsure what to work on next
    - You might be able to afford to send apprentices to planning
    meetings that would be too expensive for other developers
    Managing apprentices

    View Slide

  45. The Company
    - Set clear expectations about code ownership (which files
    apprentices can change without doing a pull request)
    - Set clear expectations about when it is appropriate to
    interrupt senior developers with work questions (e.g. only
    in the morning before or during the standup meeting)
    - Empower senior developers to delegate tasks to
    apprentices
    Managing apprentices

    View Slide

  46. The Company
    Managing apprentices
    - Never assign a business-critical task unless you're 99%
    sure you'll get to say "Nice work!" afterward.
    - Set an informal time window for "graduation" (e.g. 2 years)
    - Don't skimp on ahead-of-time training hours-- as long as
    those skills are sufficiently valuable to your team to be
    worth your $$$ and time. And only after the apprentice
    has already been initially exposed to the concepts you're
    showing them, in practice.

    View Slide

  47. Training apprentices

    View Slide

  48. Kinds of training
    - Ad hoc (scattered, on-the-job training when you realize you assigned
    a task that is too hard)
    - "I'll set this up while you watch" (setting up your dev environment)
    - Drills (contrived exercises or low priority tasks)
    - Theory (interactive lecture / live coding)

    View Slide

  49. Drills

    View Slide

  50. Drills

    View Slide

  51. Things worth teaching ahead of time
    - Essential tools & expectations (editor, what is the filesystem really?,
    terminal, GitHub app, node, npm install sails, Heroku, customer service, communication etiquette)
    - Thinking like an engineer (incognito mode and Chrome profiles, screenshot
    hotkeys, giphy, Chrome dev tools, the REPL, the terminal, the importance of thoroughness, how to think
    about edge cases, collaboration)
    - The DOM (HTML+CSS, and how the browser works)
    - Logic (&&, ||, v-if, v-else, v-for, etc)
    - HTTP and the internet (how to read API docs, how to use Postman, ,
    loading spinners, cloud errors vs. client-side form errors)

    View Slide

  52. Essential tools & expectations

    View Slide

  53. Thinking like an engineer

    View Slide

  54. View Slide

  55. View Slide

  56. View Slide

  57. The DOM

    View Slide

  58. The DOM

    View Slide

  59. Logic

    View Slide

  60. Logic

    View Slide

  61. Logic

    View Slide

  62. HTTP and the internet

    View Slide

  63. HTTP and the internet

    View Slide

  64. So... does it work?
    - Yes. But start with just one apprentice
    - And try to only train one apprentice at a time (for us,
    that means staggering hires by at least 4 weeks,
    even if your backlog or budget might make it feel
    like you have to hire more quickly)

    View Slide

  65. PERCEIVED VELOCITY
    QUALITY
    x
    WITH APPRENTICES
    x
    WITH SENIOR DEVS

    View Slide

  66. So... does it work?
    - Since going "all in" with this model two years ago,
    hiring first-time programmers as apprentices, it took
    a little while to warm back up.
    - But today, we ship most features just as fast as we
    did with a larger and more experienced traditional
    team 5 years ago.

    View Slide

  67. Questions?
    @mikermcneil

    View Slide