WHY ARE WE HERE?
Thursday, May 19, 2011
To minimize the distance between what we actually do when we are doing our day-to-day jobs and what we think we should do.
http://www.actsasconference.com/corey-haines-talks-software-craftsmanship/
Thursday, May 19, 2011
WHAT WE THINK WE SHOULD DO Write code that satisfies customers and can be built upon.
Customers expect reuse.
Object Orientation Simple Design, Test Driven Development Use our tools well. Languages, editors, source control, libraries, utilities.
Thursday, May 19, 2011
This is how we do #1.
“How do you get to be a great musician? It helps to know the theory, and to understand the mechanics of your instrument. It helps to have talent. But ultimately, greatness comes from practicing; applying the theory over and over again, using feedback to get better every time. How do you get to be an All-Star sports person? Obviously fitness and talent help. But the great athletes spend hours and hours every day, practicing. But in the software industry we take developers trained in the theory and throw them straight in to the deep-end, working on a project. It’s like taking a group of fit kids and telling them that they have four quarters to beat the Redskins (hey, we manage by objectives, right?). In software we do our practicing on the job, and that’s why we make mistakes on the job. We need to find ways of splitting the practice from the profession. We need practice sessions.”
http://codekata.pragprog.com/
Thursday, May 19, 2011
We need a way to practice that will allow us to make good use of our customers’ time and our personal time.
Small exercises that can be completed in 10-30 minutes work well, because they can be repeated often and reduce distraction.
Thursday, May 19, 2011
Kata (型 or 形 literally: "form") is a Japanese word describing detailed choreographed patterns of movements practised either solo or in pairs.
Watch: Kata Video Intro from Ruby Conf First 15 Minutes http://rubyconf2008.confreaks.com/ruby-kata-and-sparring.html http://en.wikipedia.org/wiki/Kata
Thursday, May 19, 2011
WHY ARE WE HERE? To practice our craft.
Thursday, May 19, 2011
WHAT WILL WE PRACTICE? Simple design - Ruby,classes, modules, objects, methods, messages, lists, blocks TDD - Red, Green, Refactor. RSpec, continuous testing. Tools - Vim, Git
Thursday, May 19, 2011
SIMPLE DESIGN Runs all the tests No duplication Expresses developer intent Has no superfluous parts
http://agileinaflash.blogspot.com/2009/02/simple-design.html Thursday, May 19, 2011
SIMPLE DESIGN Now Even Simpler! “That leaves me with two key elements of simple design: remove duplication and fix bad names. When I remove duplication, I tend to see an appropriate structure emerge, and when I fix bad names, I tend to see responsibilities slide into appropriate parts of the design.”
http://www.jbrains.ca/permalink/the-four-elements-of-simple-design
Thursday, May 19, 2011
TEST DRIVEN DEVELOPMENT Write no production code, except to pass a failing test Write only enough of a test to demonstrate a failure Write only enough production code to pass a test.
Thursday, May 19, 2011
“Make it pass or change the message”
TEST DRIVEN DEVELOPMENT
Thursday, May 19, 2011
TEST DRIVEN DEVELOPMENT
Thursday, May 19, 2011
GOALS GOING FORWARD Memorize the algorithm to make the specs pass. Memorize the entire kata - specs and algorithm. Perform for the team. Options: Try a different algorithm, learn an in a different language, learn a new kata (bowling, word wrap, prime factors, etc). Repeat
Thursday, May 19, 2011