Thoughts from Software Craftsmanship

Corey Haines

Pair programming started in 1946!

Definitive source of information – googlefight. Says it’s good.

TSA – top secret information. Kept erroring out.

Travel visa for Australia – rejected for a Visa

New term Softwared! Follow Glyn Vanderberg – glad I’ve got the skills feel sorry for the folks who don’t. @glv

This is US!

All written our fair share of things we didn’t test. We’re the ones who are creating all the crap that doesn’t work.

SWC manifesto. Make the world a better place for the people who aren’t developers.

Career ideas – become better at what we do. Business software and web apps aren’t hard but you have to pay attention to the detail.

Alan Kay OOPSLA 1997 talk. Air force tape. Everyone came up with their own formats. Beginning of tape has pointers to code that has the read and write routines. Didn’t have to write code to read any more. All of these ideas slowly started coming in over time. Combined together.

Bruce Tate – most people have never done non OO. Interesting idea most people don’t know what it was like not doing OO.

MongoDB – Document DB – new hotness. .Net only talk about Mongo. Lotus Notes, schema less. Awful job of email. Nothing new about Mongo – had document databases for a long time.

Cuke – inspired by COBOL!

Looking back at the tools can sometimes give us useful insights. Quote: older a program gets the more valuable the readability never hear that this is the value of cuke. – all the documentation for rspec. How to use Rspec. Relish takes cucumber features and generates documentation – all doco in the cuke scenarios. If they’re green that’s how rspec work.

Not just code, systems we use. Techniques come from who taught us. Wing Chun teacher focused on interactions between people, fluid interaction. Influenced development style, focues more on interaction – behaviour-oriented. Don’t know where you came from not going to be able to build effectively.

Uncle Bob.

  • Professionalism
  • Design techniques
  • Abstractions

David Chelimsky

RSpec Maintener

  • Care for code
  • Testing techniques
  • Naming

Attention. All of these things very imprtant to him

Continual learning. As we go through our careers always going to have new stuff to learn. Also improtant to get better at what you already do.

Cratsmanship-oriented career model. Don’t spend a lot of time learning from those around us, new people. Just stick with what we know. Feeding the same techniques.

When studied with teacher did what was asked – do what needed to learn, not blind. Respect the person enough to trust that what being taught works. Once studied and become effective, stable point in your career.Most people have other people around them that you can work with, user groups etc.

Knowing what you do know and practicing stuff you don’t : Deliberate Practice

Focus on performing. What would you do if you went to see a band who only play instruments when they’re on stage, but we do it every single day. E.g. write and delete/rewrite? The things you know you should do. Practice – minimise the difference between “get it done” and “do it right”. On stage, you want to just play.

Practice Techniques

Outside of getting it done.

  • Code Kata
  • Dojo
  • Retreats

Randori style. All attack one person and they defend themselves, two people, crowd and then swap one at a time. Get to watch and get to do a little bit. Wonderful. User groups. Pick a small problem.

Kata. Originally Dave T small problems, but broadened out martial arts – a solution. Over and over again, don’t alter them, the goal is to make the motions perfect. When the time comes you won’t be slow. Kata in software, small solution, e.g. string calculator, roman numerals. Solve it. Then do it again, again, again until you don’t have to think about it. Techniques you use will speed you up in day to day work, e.g. flatten array.

Performace Kata – learn it and perform it. At the end feedback. I noticed you did this, better if did that Lots of katas online.

Code retreat. A day where we work on specific problem, e.g. game of life. 45 mins, delete, swap. Can’t finish in 45. Pressure goes away, so look at the process & write perfect code – problem takes too long. Throw away idea of even finishing.


Being better. Not just the new Gem/DB/banana about being excellent. Fundamentals of s/w development the heart of s/w craftsmanship

We have the greatest job in the world

Get paid to do things you enjoy.

(Except maybe fighter pilots)

Comes down to happiness. Be happy every single day. If we enjoy what we do then everyone will want a piece of it.

Not going to convince anybody without being happy. People want some of that.