Get off the tightrope

Cd9b247e4507fed75312e9a42070125d?s=47 Tom Stuart
November 16, 2017

Get off the tightrope

Do you feel stressed when you’re trying to hold a big problem in your head? Do you get frustrated when someone interrupts you and you have to start all over again? Those emotions are inevitable if you’re in the common habit of treating each programming task as a long, precarious, all-or-nothing tightrope walk. But it doesn’t have to be that way! In this talk I’ll explain why the tightrope walk is so harmful and show you some practical techniques for avoiding it.

Given at RubyConf 2017 (http://rubyconf.org/). A video and transcript is available at https://codon.com/get-off-the-tightrope.

Cd9b247e4507fed75312e9a42070125d?s=128

Tom Stuart

November 16, 2017
Tweet

Transcript

  1. https://codon.com/get-off-the-tightrope GET OFF THE TIGHTROPE

  2. A very common problem.

  3. CTO, FutureLearn

  4. It affects everyone.

  5. BAD NEWS: it’s serious. GOOD NEWS: it’s fixable.

  6. THE PROBLEM THE SYMPTOMS THE CAUSES SOME REMEDIES WHY IS

    THIS IMPORTANT?
  7. THE PROBLEM

  8. Trying to do a big thing all at once.

  9. A large task, all in your head.

  10. One long, precarious, all-or-nothing tightrope walk.

  11. THE SYMPTOMS

  12. It’s stressful and hard to get right.

  13. You disappear down rabbit holes.

  14. You get too invested in your early mistakes.

  15. You learn to hate interruptions & distractions.

  16. (Tech culture reinforces this view.)

  17. http://heeris.id.au/2013/this-is-why-you-shouldnt-interrupt-a-programmer/

  18. https://twitter.com/phil_wade/status/896010517617180672

  19. None
  20. It takes a long time to pick up your thread

    again.
  21. irritability about questions and meetings worrying you’ll forget what to

    do next typing “git status” and seeing twenty files modified a big long branch with lots of commits saying “WIP”, “fix stuff”, “changed my mind”, “redo this later”
  22. THE CAUSES

  23. Eager to make progress.

  24. Unsure how big it’s going to be.

  25. Unsure how far you have to go.

  26. Belief that programmers are special.

  27. This is flattering, but misguided.

  28. Opportunities for empathy & collaboration.

  29. SOME REMEDIES

  30. Planning ahead.

  31. Story mapping

  32. CUSTOMER BUYS PRODUCT View product page Add product to basket

    Enter payment details View basket page Confirm order Ship product Enter shipping details Cancel order
  33. CUSTOMER BUYS PRODUCT Remove product from basket Update old payment

    details Save product for later Request refund Browse related products Search all products Update product quantity in basket Add product to wishlist
  34. CUSTOMER BUYS PRODUCT time

  35. CUSTOMER BUYS PRODUCT time ? ?? ?

  36. CUSTOMER BUYS PRODUCT Charge credit card Refund credit card Send

    refund confirmation email Send order confirmation email Filter search results Enter voucher code Sort search results Apply 3-for-2 offer
  37. CUSTOMER BUYS PRODUCT

  38. CUSTOMER BUYS PRODUCT

  39. CUSTOMER BUYS PRODUCT

  40. Story mapping breaks down your big problem into small, achievable

    subproblems.
  41. History hygiene.

  42. Make small, focused commits.

  43. Write commit messages that explain your thinking.

  44. Keep your branch in good shape.

  45. Don’t diverge too far from master.

  46. origin/master my-branch

  47. origin/master my-branch

  48. my-branch origin/master

  49. Cherry-pick preparatory work onto master.

  50. origin/master my-branch

  51. origin/master my-branch

  52. my-branch origin/master

  53. Use interactive rebase, early and often.

  54. Introduce Foo Clarify text in UI Rename Foo to Bar

    Improve performance
  55. Introduce Foo Clarify text in UI Rename Foo to Bar

    Improve performance
  56. Introduce Foo Clarify text in UI Rename Foo to Bar

    Improve performance
  57. Introduce Foo Clarify text in UI Improve performance Rename Foo

    to Bar Introduce Bar
  58. Practice switching away.

  59. Test- driven development.

  60. Learn to switch between the mental modes of red-green-refactor.

  61. Remember that red-green-refactor is a powerful mind hack.

  62. Work outside-in with acceptance tests.

  63. Write tests that really do check what you care about.

  64. Notes and conversations.

  65. Take notes and write down questions as you find them.

  66. Practice explaining your train of thought.

  67. Talk to other people about what you’re doing and why.

  68. Planning ahead. History hygiene. Test-driven development. Notes & conversations.

  69. Make your own solutions.

  70. Notice the risk, then break it down.

  71. Some resources. http://jpattonassociates.com/user-story-mapping/ User Story Mapping https://about.futurelearn.com/blog/telling-stories-with-your-git-history Telling stories with

    your Git history http://www.growing-object-oriented-software.com/ Growing Object-Oriented Software Guided by Tests https://pragprog.com/book/rspec3/effective-testing-with-rspec-3 Effective Testing with RSpec 3
  72. Ashley Ellis Pierce, Git Driven Refactoring

  73. Valerie Woolard Srinivasan, How I Learned to Stop Worrying and

    Love Unit Testing Noel Rappin, High Cost Tests and High Value Tests
  74. WHY IS THIS IMPORTANT?

  75. Great developers are great at this.

  76. Great developers are persistent, have strategies, and apply them methodically.

  77. This gets easier with practice.

  78. https://codon.com/get-off-the-tightrope THANKS. @tomstuart