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

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

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

Mike is the founder and CEO of the Sails framework (aka Sails.js). He asks: "Why hire a developer when you can hire a barista and teach them to code?"

June 7, 2018
San Francisco, CA
Dogpatch Studios


Mike McNeil

June 07, 2018

More Decks by Mike McNeil

Other Decks in Technology


  1. Why hire a developer when you can hire a barista

    and teach them how to code?
  2. Why hire?

  3. because you can't do it all by yourself not fast

    enough, anyway
  4. The Company

  5. The Company Mike McNeil @mikermcneil founder & CEO of sails

    co. digital studio (a.k.a. design/dev/product shop) open-source MVC framework for Node.js creator of
  6. senior developer lead / architect junior developer $$ $$$ $

  7. trainee apprentice barista 4-6 weeks 2-3 months blank slate

  8. A culture of teaching

  9. Yeah, I'm finished! Yikes! Not like that!

  10. Teaching makes work less boring. Wow, I'm learning a ton!

    (They really like me...)
  11. Who are these "recruiters"? (One of them said I was

    a rockstar...) Ignore them, we'd miss you here!
  12. What about velocity? Teaching takes time.

  13. capture business value along the way (You don't have to

    hire at day one, either.)
  14. super soldier barista

  15. Business needs:

  16. New requirements pop up all the time

  17. New requirements pop up all the time

  18. Junior developer:

  19. Senior developer:

  20. Lead / architect:

  21. You're paying developers to grow anyway

  22. You're paying developers to grow anyway

  23. Why not embrace growth from day one?

  24. None
  25. None
  26. The Company Questions? @mikermcneil twitter.com/mikermcneil sailsjs.com/about

  27. The Company Appendix A: Some notes about the "how"

  28. None
  29. The Company Layout & markup Interactivity Rudimentary terminal skills Text

    editor / IDE setup Running a local server Onboarding Wireframing Browser dev tools Floats & how to clear them Flexbox Normal flow, positioning & z-index Namespacing & mixins Using {{dynamic}} data Conditional classes & HTML ., +, &&, ||, and ?: Handling DOM events Media queries & animations Committing, pulling, pushing, & merge conflicts encodeURIComponent() Creating new pages Communication & agile Using other preexisting UI components Creating email templates Custom modal dialogs Pull requests
  30. The Company DevOps & QA HTTP & APIs Forms &

    persistence AJAX forms Loading states Client-side validation Server-side errors Routes & actions Querying the database Basic QA skills Server-side rendering Deploying to staging Using the REPL / db client to access the staging db DNS & registrar Reading 3rd party API docs Using Postman Making HTTP requests in server- side code SSL cert & redirects Setting environment variables Language/framework-specific configuration basics Reading 3rd party API docs Encoding request data & headers, parsing response data & headers Creating reusable helpers Negotiating errors, throwing custom errors, & using status codes
  31. The Company File uploads Security Messaging features Expiring, one-time-use tokens

    Scalability When to paginate Controlling the size of query result sets Stability Timeouts, retries & exponential backoff Most common language-specific gotchas Managing API rate limits Optimization Running things in parallel Secure file uploads Negotiating errors & throwing custom errors Reducing the # of queries and other async operations Using native queries & batch operations S3 bucket configuration Safe stream processing Listening for WebSocket messages in the browser Subscribing & broadcasting on the server PCI compliance re charging a card or enrolling a customer in subscription billing Automated SMS & emails Hashed passwords Untrusted requests Enforcing size quotas