Save 37% off PRO during our Black Friday Sale! »

Asynchronous Collaboration

0f5f0ea6a2dc7ed3cb5830377a4fe7e2?s=47 Ryan McGeary
November 07, 2012

Asynchronous Collaboration

Communicating Through Our Source Code

We hear a lot about how strong communication and collaboration are key to a successful project. We spend a lot of time focusing on stand-up meetings and pair programming, but there are potentially other very effective means of keeping the team on the same page that not only avoid daily interruptions but also provide long-term benefit.

The goal of this talk is to help your team improve its own collaboration and productivity with just a bit of discipline and relatively low overhead.

0f5f0ea6a2dc7ed3cb5830377a4fe7e2?s=128

Ryan McGeary

November 07, 2012
Tweet

Transcript

  1. Asynchronous Collaboration Ryan McGeary http://ryan.mcgeary.org @rmm5t http://www.flickr.com/photos/wwarby/4782904694/

  2. +/.!

  3. ,)). 2*!,2

  4. %0!!,!

  5. .$!,

  6. ,%.$(+*-

  7. 24/7 Computing +,'! !,!

  8. McGeary Consulting Group FitCCA +"+/* ! $!-!

  9.  +" (%!*.-* !)-   +" +".1,!,+&!.-

  10. #!*   $.* $2

  11. #!*    2* +))-

  12. #!*   ++  -2* +))-

  13. #!*   +/,!+ ! +))-

  14. 1 Why is Asynchronous Collaboration Best?

  15. syn•chron•ous |ˈsiNGkr!n!s| adjective existing or occurring at the same time.

  16.        of or requiring

    a form of computer control timing protocol in which a specific operation begins upon receipt of an indication (signal) that the preceding operation has been completed. a•syn•chron•ous |āˈsiNGkr!n!s| adjective 
  17. (of two or more objects or events) not existing or

    happening at the same time. a•syn•chron•ous |āˈsiNGkr!n!s| adjective
  18. Flow focused in the zone on a roll present in

    the moment wired in in the groove on fire in tune centered
  19. Productivity development output effectiveness creativity innovation performance

  20. Happiness! growth well-being achievement enjoyment success life satisfaction

  21. Happiness! Flow Productivity

  22. How Do We Achieve Flow?

  23. How Do We Achieve Flow? eliminate interruptions? shut out the

    world?
  24. How Do We Achieve Flow? minimize interruptions maximize focus

  25. How Do We Achieve Productivity without Flow?

  26. None
  27. What About Pair Programming?

  28. 2 Minimize Synchronous Collaboration

  29. Minimize Phone Calls

  30. Minimize Direct Chat

  31. Turn Off Notifications 1

  32. Avoid Daily Stand-ups http://www.flickr.com/photos/angel_medinilla/2283716967/

  33. Wait, WHAT!?!?

  34. Scrums are one of the most dangerous phases in rugby...

    -Wikipedia http://www.flickr.com/photos/williampaulking/5636394420/
  35. http://www.flickr.com/photos/angel_medinilla/2283716967/

  36. http://www.flickr.com/photos/angel_medinilla/2283716967/

  37. http://www.flickr.com/photos/angel_medinilla/2283716967/

  38. http://www.flickr.com/photos/angel_medinilla/2283716967/

  39. If you miss a stand-up meeting, you miss out.

  40. 20% of us are Larks 20% of us are Owls

    http://en.wikipedia.org/wiki/Lark http://en.wikipedia.org/wiki/Owl
  41. Happiness! Flow Productivity

  42. Synchronous Collaboration yields interruption.

  43. Happiness! Flow Productivity

  44. This is why hackers give you such a baleful stare

    as they turn from their screen to answer your question [interruption]. Inside their heads a giant house of cards is tottering. -Paul Graham http://www.flickr.com/photos/rocor/5610373534/
  45. None
  46. 3 Maximize Asynchronous Collaboration

  47. Email use when appropraite keep it short stay on topic

    well-named subjects no thread- jacking
  48. Group Chat

  49. Campfire IRC

  50. None
  51. IN: Finishing test refactors from yesterday... STATUS: Back later. Taking

    my wife to lunch. OUT: Finished refactors; Started to fix...
  52. http://www.flickr.com/photos/angel_medinilla/2283716967/

  53. rmm5t pushed 2 new commits to master

  54. ryan deployed 5915b03 to staging

  55. ...the build has passed

  56. ...ticket sold to John Doe totaling $319

  57. Group Chat build status deployments team status subscription upgrades customer

    support sales git commits daily reports cancellations questions
  58. Feature/Issue Tracking

  59. Issues & Pull Requests

  60. pivotaltracker.com

  61. apptrajectory.com

  62. planscope.io

  63. Issues & Pull Requests github.com

  64. Bug Reports & Feature Requests

  65. Bad Bug Reports lacking context bulleted list of unrelated issues

    “it didn’t work” outside the issue tracker blame
  66. Good Bug Reports steps to reproduce what actually happened what

    you expected screenshots screencasts
  67. Bad Feature Requests no detail bulleted list of unrelated topics

    “because I said so” outside the issue tracker too generic
  68. Good Feature Requests detailed discrete gather buy-in screenshots in story

    form
  69. 4 Collaboration Through Source Code

  70. Readable Code small methods less code well-named KISS YAGNI match

    you domain
  71. def gets(separator="\n", length=nil) if separator.nil? read_all elsif separator.is_a?(Integer) read_length(separator) elsif

    separator.length > 1 result = '' len = 0 match_idx = 0 match_num = separator.length - 1 to_match = separator[match_idx].chr if length matcher = lambda {|idx, num| idx < num && len < length } else matcher = lambda {|idx, num| idx < num} end while matcher.call(match_idx, match_num) && char = getc result << char len += 1 if char == to_match while match_idx < match_num do match_idx += 1
  72. def gets(separator="\n", length=nil) if separator.nil? read_all elsif separator.is_a?(Integer) read_length(separator) elsif

    separator.length > 1 end end read_to_string(separator, length) else read_to_character(separator, length)
  73. Testing functional unit acceptance system end-to-end integration black-box load stress

  74. Remove Technical Debt code is a liability

  75. Commit Messages BONUS TALK

  76. Do Your Commit Messages Suck? Ryan McGeary http://ryan.mcgeary.org @rmm5t A

    Public Service Announcement BONUS TALK
  77. The Bad

  78. dfe4c3e Staging Bad

  79. dfe4c3e Staging af0a3bb More staging fixes Bad

  80. dfe4c3e Staging af0a3bb More staging fixes e5a524a More staging cap

    setup Bad
  81. dfe4c3e Staging af0a3bb More staging fixes e5a524a More staging cap

    setup 19900ba More Bad
  82. dfe4c3e Staging af0a3bb More staging fixes e5a524a More staging cap

    setup 19900ba More 0841841 More fixed Bad
  83. dfe4c3e Staging af0a3bb More staging fixes e5a524a More staging cap

    setup 19900ba More 0841841 More fixed dffb0db Again Bad
  84. dfe4c3e Staging af0a3bb More staging fixes e5a524a More staging cap

    setup 19900ba More 0841841 More fixed dffb0db Again 8a0f74c Updated scripts Bad
  85. dfe4c3e Staging af0a3bb More staging fixes e5a524a More staging cap

    setup 19900ba More 0841841 More fixed dffb0db Again 8a0f74c Updated scripts 587a09c deploy script cleanup Bad
  86. dfe4c3e Staging af0a3bb More staging fixes e5a524a More staging cap

    setup 19900ba More 0841841 More fixed dffb0db Again 8a0f74c Updated scripts 587a09c deploy script cleanup 9f474bc More staging Bad
  87. dfe4c3e Staging af0a3bb More staging fixes e5a524a More staging cap

    setup 19900ba More 0841841 More fixed dffb0db Again 8a0f74c Updated scripts 587a09c deploy script cleanup 9f474bc More staging c3f7275 Again more staging Bad
  88. dfe4c3e Staging af0a3bb More staging fixes e5a524a More staging cap

    setup 19900ba More 0841841 More fixed dffb0db Again 8a0f74c Updated scripts 587a09c deploy script cleanup 9f474bc More staging c3f7275 Again more staging 3ee25cd Read from env file Bad
  89. dfe4c3e Staging af0a3bb More staging fixes e5a524a More staging cap

    setup 19900ba More 0841841 More fixed dffb0db Again 8a0f74c Updated scripts 587a09c deploy script cleanup 9f474bc More staging c3f7275 Again more staging 3ee25cd Read from env file 0328c7c again Bad
  90. dfe4c3e Staging af0a3bb More staging fixes e5a524a More staging cap

    setup 19900ba More 0841841 More fixed dffb0db Again 8a0f74c Updated scripts 587a09c deploy script cleanup 9f474bc More staging c3f7275 Again more staging 3ee25cd Read from env file 0328c7c again d5e07c7 whoops Bad
  91. dfe4c3e Staging af0a3bb More staging fixes e5a524a More staging cap

    setup 19900ba More 0841841 More fixed dffb0db Again 8a0f74c Updated scripts 587a09c deploy script cleanup 9f474bc More staging c3f7275 Again more staging 3ee25cd Read from env file 0328c7c again d5e07c7 whoops 0536fc7 Again Bad
  92. dfe4c3e Staging af0a3bb More staging fixes e5a524a More staging cap

    setup 19900ba More 0841841 More fixed dffb0db Again 8a0f74c Updated scripts 587a09c deploy script cleanup 9f474bc More staging c3f7275 Again more staging 3ee25cd Read from env file 0328c7c again d5e07c7 whoops 0536fc7 Again 8af6da0 More Bad
  93. dfe4c3e Staging af0a3bb More staging fixes e5a524a More staging cap

    setup 19900ba More 0841841 More fixed dffb0db Again 8a0f74c Updated scripts 587a09c deploy script cleanup 9f474bc More staging c3f7275 Again more staging 3ee25cd Read from env file 0328c7c again d5e07c7 whoops 0536fc7 Again 8af6da0 More 9052cb8 Again Bad
  94. dfe4c3e Staging af0a3bb More staging fixes e5a524a More staging cap

    setup 19900ba More 0841841 More fixed dffb0db Again 8a0f74c Updated scripts 587a09c deploy script cleanup 9f474bc More staging c3f7275 Again more staging 3ee25cd Read from env file 0328c7c again d5e07c7 whoops 0536fc7 Again 8af6da0 More 9052cb8 Again 7587f8b Working? Bad
  95. dfe4c3e Staging af0a3bb More staging fixes e5a524a More staging cap

    setup 19900ba More 0841841 More fixed dffb0db Again 8a0f74c Updated scripts 587a09c deploy script cleanup 9f474bc More staging c3f7275 Again more staging 3ee25cd Read from env file 0328c7c again d5e07c7 whoops 0536fc7 Again 8af6da0 More 9052cb8 Again 7587f8b Working? 9770886 g Bad
  96. dfe4c3e Staging af0a3bb More staging fixes e5a524a More staging cap

    setup 19900ba More 0841841 More fixed dffb0db Again 8a0f74c Updated scripts 587a09c deploy script cleanup 9f474bc More staging c3f7275 Again more staging 3ee25cd Read from env file 0328c7c again d5e07c7 whoops 0536fc7 Again 8af6da0 More 9052cb8 Again 7587f8b Working? 9770886 g Bad
  97. More Bad 3a61755 what a hassle

  98. More Bad 3a61755 what a hassle eec60db what a stupid

    hassle
  99. More Bad 3a61755 what a hassle eec60db what a stupid

    hassle bf77372 seriously a fucking hassle
  100. More Bad 3a61755 what a hassle eec60db what a stupid

    hassle bf77372 seriously a fucking hassle 8b48352 this is a fucking hassle
  101. More Bad 3a61755 what a hassle eec60db what a stupid

    hassle bf77372 seriously a fucking hassle 8b48352 this is a fucking hassle eb7cdd7 wtf dude
  102. Again Bad 18c3f84 Huge commit

  103. Whoops 17cb2a1 Fix a bug that Tommy missed fixing after

    he wrote this code last November.
  104. Huge Whoops More Again Serious Hassle Bad c1c38fc Update deploy

    recipe with some stuff. I dunno. it's late
  105. The Good

  106. Good 0835022 Updated basic auth prompt to reflect app name

  107. Good 0835022 Updated basic auth prompt to reflect app name

    950b8de Fixed password reset for users who use the same email on multiple accounts [Fixes #11102389]
  108. More Good 3224fff Added an extra 10s while sleeping after

    a Twitter rate-limit error * Twitter isn't always ready immediately after sleeping the advertised amount of time.
  109. More Good 3224fff Added an extra 10s while sleeping after

    a Twitter rate-limit error * Twitter isn't always ready immediately after sleeping the advertised amount of time. 334a2c4 Fixed bug related to contact syncing [#9190663] Contacts that should have been tagged both friend and follower were having those tags toggled on each #profile_sync run. If the contact had "follower", and profile_sync was run, then the code would set the system_tags to ["following"], blowing away the "follower" tag. It would do the same thing vice versa for the "following" system tag.
  110. Template Moved all static pages into a generic PagesController [Finishes

    #6375] * Cleaned up the routes * Simplified static page creation
  111. Template Moved all static pages into a generic PagesController [Finishes

    #6375] * Cleaned up the routes * Simplified static page creation DETAILS SUMMARY
  112. Template Moved all static pages into a generic PagesController [Finishes

    #6375] * Cleaned up the routes * Simplified static page creation VERB FRAGMENT TICKET # WHY
  113. Verbs 184 Added 85 Fixed 76 Upped 31 Removed 24

    Switched 21 Improved 20 Updated 16 Renamed
  114. None
  115. /)),2

  116. Happiness! Flow Productivity

  117. Minimize Synchronous Communication 1

  118. Tools for Asynchronous Communication

  119. Source Code is Communication

  120. Ryan McGeary ryan.mcgeary.org @rmm5t ryan@mcgeary.org McGeary Consulting Group Tack så

    mycket