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

WE can CODE better - Sapporo Ruby Kaigi 2012

WE can CODE better - Sapporo Ruby Kaigi 2012

The talk has shown what developers can learn from professional athletes, bodybuilders and circus performers (sic!). I've introduced concept of programming workout.
The idea in its core is really simple.

It consists of regular and methodical practice of following skills: - programming building blocks/high level skills (OO design, TDD, refactoring, strategies for dealing with legacy code etc.) - auxiliary skills/low level skills (touch typing, editor commands, shell scripting, git wizardry, creative thinking etc.)

In a similar way as bodybuilders, athletes and performers have routine workouts to train their muscles, primary and auxiliary skills.

In order to be successful they need to be consistent, persistent and smart about how they train.

The hard part lies in designing a routine that is challenging, effective and interesting enough to make sure you will still follow it after few weeks.

Michał Taszycki

September 15, 2012
Tweet

More Decks by Michał Taszycki

Other Decks in Programming

Transcript

  1. Programming

    View Slide

  2. Programming
    is a complex skill

    View Slide

  3. Guitar

    View Slide

  4. View Slide

  5. Martial arts

    View Slide

  6. Martial arts

    View Slide

  7. Talent

    View Slide

  8. View Slide

  9. Practice

    View Slide

  10. Practice
    ... a lot of it.

    View Slide

  11. Taszycki MichaŁ
    •applicake.com
    •@mehowte
    λγπΩɹϛϋ΢

    View Slide

  12. My journey

    View Slide

  13. My journey

    View Slide

  14. View Slide

  15. View Slide

  16. View Slide

  17. View Slide

  18. View Slide

  19. View Slide

  20. View Slide

  21. View Slide

  22. View Slide

  23. Japanese Art And
    Technology Center

    View Slide

  24. View Slide

  25. View Slide

  26. View Slide

  27. View Slide

  28. 2nd Edition - Spring 2013
    • Call for papers will open soon
    • visit railsberry.com

    View Slide

  29. View Slide

  30. View Slide

  31. View Slide

  32. Programming
    Workout

    View Slide

  33. How to stay on the path?

    View Slide

  34. And choose optimal one?

    View Slide

  35. PROGRAMMING
    WORKOUT

    View Slide

  36. View Slide

  37. PROGRAMMING
    WORKOUT

    View Slide

  38. PROGRAMMING
    WORKOUT.com

    View Slide

  39. PROGRAMMING
    WORKOUT.com

    View Slide

  40. PROGRAMMING
    WORKOUT.com

    View Slide

  41. PROGRAMMING
    WORKOUT.com
    500 people signed up!

    View Slide

  42. Beginner

    View Slide

  43. Beginner
    “I have no idea what I’m doing”

    View Slide

  44. I have no idea what
    I’m doing

    View Slide

  45. Learn consistency first

    View Slide

  46. Become proficient with git.
    Learn more vim.
    Become a better touch typist.
    Improve OOP skills.
    Learn functional programming basics.
    Become a better mathematician.
    Make a wish

    View Slide

  47. Pick simple exercise
    rubykoans.com
    rubyquiz.com
    D C Dr

    View Slide

  48. Beginner’s Schedule
    Mon Tue Wed Thu Fri Sat Sun
    Anything Anything Anything Anything Anything Anything Anything

    View Slide

  49. Beginner’s Schedule
    Mon Tue Wed Thu Fri Sat Sun
    Touch
    Typing
    VimGolf
    Ruby
    Quiz
    Touch
    Typing
    Git
    Practice
    Code
    Kata
    VimGolf

    View Slide

  50. Create a habit
    • Simplify the behavior
    • Start it after existing habit
    • Celebrate success
    • Don’t punish failure

    View Slide

  51. Novice

    View Slide

  52. Novice
    “I know what I can’t do”

    View Slide

  53. Make goals SMART

    View Slide

  54. Few SMART examples
    • Improve WPM by 3 next week.
    • Solve 10 Project Euler problems this week.
    • Do all Array ruby koans till Wednesday.
    • I’ll learn to implement and be able to prove
    complexity of QuickSort in a month.

    View Slide

  55. Find a good teacher

    View Slide

  56. Focus
    one skill

    View Slide

  57. Novice’s Schedule
    Mon Tue Wed Thu Fri Sat Sun
    One
    Thing
    One
    Thing
    One
    Thing
    One
    Thing
    One
    Thing
    One
    Thing
    One
    Thing

    View Slide

  58. Novice’s Schedule
    Mon Tue Wed Thu Fri Sat Sun
    Touch
    Typing -
    focus on
    digits for
    5
    minutes
    Touch
    Typing -
    focus on
    accuracy
    for 5
    minutes
    Touch
    Typing -
    race for
    5
    minutes
    Touch
    Typing -
    focus on
    digits for
    5
    minutes
    Touch
    Typing -
    focus on
    $#%^&*
    for 5
    minutes
    Touch
    Typing -
    focus on
    speed
    for 5
    minutes
    Touch
    Typing -
    race for
    5
    minutes

    View Slide

  59. Keep working hard

    View Slide

  60. Adept

    View Slide

  61. Adept
    “I know what I can do”

    View Slide

  62. Change intensity

    View Slide

  63. • add exercises
    • make them more complex
    • cycle workouts focused on different skills
    • experiment
    Change intensity

    View Slide

  64. Measure Progress
    • improve a number (WPM)
    • solve harder problems
    • record yourself
    • observe

    View Slide

  65. Find weaknesses
    • complex exercises are great (Code Kata)
    • they cover a lot of skills
    • but be vigilant

    View Slide

  66. Fix them
    • find simple exercises
    • focus on them
    • check your progress with complex ones

    View Slide

  67. Adept’s Schedule
    Mon Tue Wed Thu Fri Sat Sun
    A B Rest A B Rest Rest
    Mon Tue Wed Thu Fri Sat Sun
    A B C A B C Rest
    or

    View Slide

  68. Adept’s Schedule
    Mon Tue Wed Thu Fri Sat Sun
    Touch
    typing
    Code
    Kata
    Rest
    Touch
    typing
    Code
    Kata
    Rest Rest
    Tools -
    zsh
    Refactor
    - extract
    method
    (x10)
    Tools -
    vim
    (text
    objects)
    Refactor
    - extract
    class
    (x10)

    View Slide

  69. Share your story

    View Slide

  70. Master

    View Slide

  71. Master
    “I can do”

    View Slide

  72. How do you know
    you are the Master
    ?

    View Slide

  73. Keep up the good work

    View Slide

  74. Master’s Schedule
    Mon Tue Wed Thu Fri Sat Sun
    Anything Anything Anything Anything Anything Anything Anything

    View Slide

  75. Become a beginner

    View Slide

  76. Try teaching others

    View Slide

  77. “A goal is not always meant to be reached,
    it often serves simply as something to aim at.”

    View Slide

  78. “Preparation for tomorrow is hard work today.”

    View Slide

  79. WE CODE

    View Slide

  80. WE CAN CODE BETTER

    View Slide

  81. Programming
    Workout

    View Slide

  82. • programmingworkout.com
    • facebook.com/programmingworkout
    • twitter.com/ProgrammingWOD
    • twitter.com/mehowte
    • facebook.com/mehowte
    • applicake.com/team#michal

    View Slide