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. 2nd Edition - Spring 2013 • Call for papers will

    open soon • visit railsberry.com
  2. 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
  3. Beginner’s Schedule Mon Tue Wed Thu Fri Sat Sun Anything

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

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

    after existing habit • Celebrate success • Don’t punish failure
  6. 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.
  7. Novice’s Schedule Mon Tue Wed Thu Fri Sat Sun One

    Thing One Thing One Thing One Thing One Thing One Thing One Thing
  8. 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
  9. • add exercises • make them more complex • cycle

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

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

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

    • check your progress with complex ones
  13. 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
  14. 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)
  15. Master’s Schedule Mon Tue Wed Thu Fri Sat Sun Anything

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

    often serves simply as something to aim at.”