Who Am I?
I'm Kerry Buckley, and I work as a software developer for BT in Ipswich. Although I'd done a bit of hacking as a kid, I did my degree in electronic engineering, and originally started with BT as a hardware designer. I fell into software more-or-less by accident via embedded systems, and in the past 15 years have worked with C, Perl, PL/SQL, Java and Ruby. Lately this has mostly been on web-based applications and RESTful web services.
I belatedly discovered Agile Software Development (specifically XP) in 2004, and have since become an advocate of agility and test-driven development within BT (let's just say we still have a long road to travel).
What Does Software Craftsmanship Mean To Me?
Craftsmanship means never believing that you know all there is to know. A software craftsman seeks out opportunities to learn from fellow professionals, for example by reading books and blogs and attending conferences. He takes responsibility for his own professional development, rather than treating training as something that must be provided by his employer.
A craftsman will take an interest in subjects outside her current speciality, in both technical and business domains. She will think of herself as "a software developer who currently works on foo", rather than "a foo developer".
The other side of the learning coin is sharing ones own knowledge and experience, through blogging, participation in online discussions, presenting at conferences etc.
A craftsman takes pride in his work. He is not content to stop when a piece of code works, but takes time to refactor it to be clean, well-structured and understandable. When changing existing code, he tries to leave it cleaner than he found it. He maintains perspective, however, avoiding taking perfectionism too far and over-polishing at the expense of adding value.
This is perhaps a little over-specific, but I don't believe it's possible to be a software craftsman without following a test-driven approach. This is, in my view, the biggest enabler for quality, refactoring and maintainability.