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.

85977ebfe59c2ee669f2196930f1a701?s=128

Michał Taszycki

September 15, 2012
Tweet

Transcript

  1. Programming

  2. Programming is a complex skill

  3. Guitar

  4. None
  5. Martial arts

  6. Martial arts

  7. Talent

  8. None
  9. Practice

  10. Practice ... a lot of it.

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

  12. My journey

  13. My journey

  14. None
  15. None
  16. None
  17. None
  18. None
  19. None
  20. None
  21. None
  22. None
  23. Japanese Art And Technology Center

  24. None
  25. None
  26. None
  27. None
  28. 2nd Edition - Spring 2013 • Call for papers will

    open soon • visit railsberry.com
  29. None
  30. None
  31. None
  32. Programming Workout

  33. How to stay on the path?

  34. And choose optimal one?

  35. PROGRAMMING WORKOUT

  36. None
  37. PROGRAMMING WORKOUT

  38. PROGRAMMING WORKOUT.com

  39. PROGRAMMING WORKOUT.com

  40. PROGRAMMING WORKOUT.com

  41. PROGRAMMING WORKOUT.com 500 people signed up!

  42. Beginner

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

  44. I have no idea what I’m doing

  45. Learn consistency first

  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
  47. Pick simple exercise rubykoans.com rubyquiz.com D C Dr

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

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

    Typing VimGolf Ruby Quiz Touch Typing Git Practice Code Kata VimGolf
  50. Create a habit • Simplify the behavior • Start it

    after existing habit • Celebrate success • Don’t punish failure
  51. Novice

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

  53. Make goals SMART

  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.
  55. Find a good teacher

  56. Focus one skill

  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
  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
  59. Keep working hard

  60. Adept

  61. Adept “I know what I can do”

  62. Change intensity

  63. • add exercises • make them more complex • cycle

    workouts focused on different skills • experiment Change intensity
  64. Measure Progress • improve a number (WPM) • solve harder

    problems • record yourself • observe
  65. Find weaknesses • complex exercises are great (Code Kata) •

    they cover a lot of skills • but be vigilant
  66. Fix them • find simple exercises • focus on them

    • check your progress with complex ones
  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
  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)
  69. Share your story

  70. Master

  71. Master “I can do”

  72. How do you know you are the Master ?

  73. Keep up the good work

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

    Anything Anything Anything Anything Anything Anything
  75. Become a beginner

  76. Try teaching others

  77. “A goal is not always meant to be reached, it

    often serves simply as something to aim at.”
  78. “Preparation for tomorrow is hard work today.”

  79. WE CODE

  80. WE CAN CODE BETTER

  81. Programming Workout

  82. • programmingworkout.com • facebook.com/programmingworkout • twitter.com/ProgrammingWOD • twitter.com/mehowte • facebook.com/mehowte

    • applicake.com/team#michal