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

Optimize for Developer Happiness

Optimize for Developer Happiness

Why how you work is as important as what you work on

Ben Balter

April 26, 2016
Tweet

More Decks by Ben Balter

Other Decks in Technology

Transcript

  1. !
    Optimize for developer happiness
    Why how you work is as important as what you work on
    @benbalter

    View Slide

  2. CONWAY'S LAW
    "organizations which design systems...
    are constrained to produce designs
    which are copies of the communication
    structures of these organizations"

    View Slide

  3. !
    Developer-centric development

    View Slide

  4. !
    STARTUP
    the
    fairytale

    View Slide

  5. Low value
    High value
    Startup Established firm
    Ideas
    Process

    View Slide

  6. Low value
    High value
    Startup Established firm
    Geeks
    Suits

    View Slide

  7. !
    What does your organization
    optimize for?

    View Slide

  8. !
    Happy shareholders
    Successful software
    Efficient developers
    Strategic management

    View Slide

  9. !
    Happy shareholders
    Good software
    Happy developers
    Happy Customers

    View Slide

  10. !
    You can make software without
    MANAGEMENT

    View Slide

  11. !
    You can make software without
    COMPLIANCE AND OVERSIGHT

    View Slide

  12. !
    You can't make software without
    DEVELOPERS

    View Slide

  13. !
    DEVELOPER HAPPINESS
    Optimize for
    and the rest will follow

    View Slide

  14. !
    Developer happiness
    (Inside|Outside) the firewall

    View Slide

  15. !
    Inside the firewall

    View Slide

  16. !
    Traditional software development

    View Slide

  17. !
    When outcomes can't be
    measured, institute process

    View Slide

  18. !
    Daily, synchronous meetings to
    manually shuttle information
    around the organization

    View Slide

  19. !
    Decisions made in person, 

    in hour-long blocks with 

    all stakeholders present

    View Slide

  20. !
    Blocking, human-based processes

    View Slide

  21. !
    Email as the least-common denominator

    View Slide

  22. !
    Organizational knowledge lives
    (and dies) with employees

    View Slide

  23. !
    bus_factor++

    View Slide

  24. !
    Open-source development

    View Slide

  25. !
    Transparency solves for process

    View Slide

  26. !
    The constraints of open source

    View Slide

  27. !
    Electronic

    View Slide

  28. !
    Available

    View Slide

  29. !
    Asynchronous

    View Slide

  30. !
    Lock-free

    View Slide

  31. !
    Prefer systems that naturally 

    CAPTURE AND EXPOSE PROCESS

    View Slide

  32. !
    Open source inside the firewall

    View Slide

  33. !
    Open source is a 

    PHILOSOPHY AND A WORKFLOW 

    not as an alternative technology

    View Slide

  34. !
    How to 

    WORK LIKE AN OPEN SOURCE PROJECT

    View Slide

  35. !
    1. Share to the widest extent possible

    View Slide

  36. !
    Openness breaks down silos,
    reduces duplication, and
    minimizes on-boarding time

    View Slide

  37. !
    2. Minimize developer friction

    View Slide

  38. !
    Friction (n) 

    the time it takes to go from 

    "I want to contribute" to 

    "I have contributed"

    View Slide

  39. !
    Common scripts to rule them all
    http://githubengineering.com/scripts-to-rule-them-all/

    View Slide

  40. !
    PREFER CULTURAL CONSTRAINTS
    to technical and administrative constraints

    View Slide

  41. !
    Non-blocking is better than blocking

    View Slide

  42. !
    Never force a human to do what a robot can

    View Slide

  43. !
    ChatOps, DevOps, Hubot, and CI

    View Slide

  44. !
    If you liked it you should have
    PUT AN API ON IT

    View Slide

  45. !
    Outside the firewall

    View Slide

  46. !
    APIs make developers happy

    View Slide

  47. !
    Openness makes developers happy

    View Slide

  48. !
    Two caveats

    View Slide

  49. !
    1. Open up almost everything

    View Slide

  50. !
    2. Openness is about more than just
    throwing 0's and 1's over the firewall

    View Slide

  51. !
    Treat your data with
    the same respect
    that developers treat code

    View Slide

  52. !
    Open source, inner source, APIs, & open data all

    foster communities around shared challenges

    View Slide

  53. !
    Be the hub, not the single point of
    failure (or innovation)

    View Slide

  54. !
    Adopt an expanded definition of
    stakeholders

    View Slide

  55. !
    Ensure all stakeholders have the
    opportunity to contribute 

    on equal footing

    View Slide

  56. !
    Decentralize governance

    View Slide

  57. !
    Minimize information imbalance

    View Slide

  58. !
    1. Work in the open

    View Slide

  59. !
    2. Propose and discuss
    improvements in the open

    View Slide

  60. !
    3. One shared, public issue tracker

    View Slide

  61. !
    4. Minimize synchronous meetings
    (and memorialize them when necessary)

    View Slide

  62. !
    5. Extensive, automated tests

    View Slide

  63. !
    How do you optimize for
    developer happiness?

    View Slide

  64. !
    Inside the firewall
    systems that capture and expose process

    View Slide

  65. !
    Outside the firewall
    treat external stakeholders as internal stakeholders

    View Slide

  66. !
    No really, how do you optimize for
    developer happiness?

    View Slide

  67. !
    TECHNOLOGY
    is the easy part

    View Slide

  68. !
    Bureaucracy is an organism

    View Slide

  69. !
    Inoculate with small doses of
    culture and innovation

    View Slide

  70. !
    Involve all stakeholders early on

    View Slide

  71. !
    Start small and

    go through the motions

    View Slide

  72. !
    Create a "feedback" repository
    both internally and externally

    View Slide

  73. !
    Open data
    Open governance
    Open tooling

    View Slide

  74. !
    DEVELOPER HAPPINESS
    Optimize for
    and the rest will follow

    View Slide

  75. !
    Optimize for developer happiness
    Why how you work is as important as what you work on
    @benbalter

    View Slide