$30 off During Our Annual Pro Sale. View Details »

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.

Daniel Terhorst-North
PRO

March 10, 2010
Tweet

More Decks by Daniel Terhorst-North

Other Decks in Programming

Transcript

  1. Sharpening the tools
    Dan North, DRW
    http://en.wikipedia.org/wiki/File:ALM_05_Dolch_edit2.jpg

    View Slide

  2. How you become a software craftsman
    The Dreyfus Model
    Novice programmer
    Advanced beginner
    Competent
    Proficient
    Expert
    ...
    Novice architect...
    © Dan North, DRW 2

    View Slide

  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

    View Slide

  4. Meanwhile...
    Effectiveness
    Choices
    x x’
    John Roberts – the Modern Firm
    4
    © Dan North, DRW
    oops

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  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/

    View Slide

  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

    View Slide

  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

    View Slide

  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

    View Slide

  14. Thank you
    [email protected]
    @tastapod
    http://dannorth.net
    © Dan North, DRW 14

    View Slide