Sharpening the Tools

Sharpening the Tools

We start out as software novices with an empty toolbox and lots of good intentions. Over the years we collect all sorts of odd tools and techniques. Some are general purpose, some very specific; some are necessarily short-lived, others can last a lifetime. One of the skills of a software craftsman is keeping this toolbox in good condition, so the tools are always easy to find and in good working order. Removing clutter and updating tools is as important as keeping the long-lived tools in good working order. And owning a box of state-of-the-art tools is useless if you are not keeping yourself up-to-date in using them.

In this talk Dan confesses that he'd let his toolbox fall into disarray and tells you what he's doing about it. Come along and learn some strategies for discovering, selecting and maintaining the tools and techniques that will serve you as a software craftsman.

08145ecb1ce091d9dd3c328ea2a707fb?s=128

Daniel Terhorst-North

March 10, 2010
Tweet

Transcript

  1. 2.

    How you become a software craftsman The Dreyfus Model Novice

    programmer Advanced beginner Competent Proficient Expert ... Novice architect... © Dan North, DRW 2
  2. 3.

    Along the way you gather some tools Technical tools –

    Languages and libraries – IDEs, Operating Systems – SCM and build tools – “Back pocket” utilities Programming tools – Refactoring – TDD – Patterns Modelling tools – UML, DDD – Lo-fi prototyping Methodology tools – XP, Scrum, BDD – Lean, Kanban, ToC Personal tools – To-do lists, GTD, Pomodoro – GROW framework – NLP “chunking” Group tools – Six thinking hats – Stand-ups – Retrospectives © Dan North, DRW 3
  3. 5.

    Then one day I got a shock I hadn’t been

    “doing” software for a while... or any real coding but surely it’s like riding a bike? It’s scary how quickly your skills can atrophy © Dan North, DRW 5
  4. 6.

    Tip #1: Practise the basics Practise kata Code for fun!

    Learn a new language that you don’t need! Learn shortcuts Practise your shell-fu © Dan North, DRW 6
  5. 7.

    Tip #2: Learn from other people Stalk experts Listen to

    novices Read books, blogs and online magazines Read code Follow people on Twitter Programme in pairs © Dan North, DRW 7
  6. 8.

    Tip #3: Understand trends Build a network of people you

    listen to This time last year I knew nothing about - distributed SCM - Clojure, Erlang and Scala - HTML 5, WebSockets, JavaScript, V8 - NOSQL data stores This year I know nearly nothing Do you know what you don’t know? © Dan North, DRW 8
  7. 9.

    Tip #4: Share knowledge Blog about your successes – and

    your failures – You never know what people might find useful Join mailing lists – Don’t just lurk, answer questions Organise learning lunches – or Muffin Mornings Speak at conferences © Dan North, DRW 9
  8. 10.

    Tip #5: Maintain your toolbox Some tools are timeless, some

    are disposable Some tools are a delight to rediscover Use the “clothing” rule to update your tools © Dan North, DRW 10 http://xkcd.com/297/
  9. 11.

    Tip #6: Learn how to learn Understand how learning works

    Understand second-order incompetence Start using Six Thinking Hats Practise chunking © Dan North, DRW 11
  10. 12.

    And then do it all again! Eat your own dogfood

    Actively solicit feedback “Listen like you don’t know the answer” © Dan North, DRW 12
  11. 13.

    Conclusion Always assume you are out of date – Never

    stop gathering and sharpening your tools You owe it to yourself to keep current – as well as to your team and your organisation It’s a continual cycle of learning and relearning © Dan North, DRW 13