Monday, October 26, 2009

So you want to be an Software Craftsman?

Dear aspiring Software Craftsman,

Here is my advice.

  • Take whatever courses you think are interesting.
  • Study closely the work of the Old Masters.
  • Stop writing software that was only designed in your own mind.
  • Stick with one technique until you perfect it.
  • Buy a book on software structure. It's the only book you need.
  • Until you can write a program without bugs you don't know how to program.
  • Stay away from Javascript. You'll never master it. Very few ever have.
  • Forget about commercial frameworks. Use Open Source. It's where the action is.
  • Visit an old age home. Talk to the people who remember 8 inch floppy disks and punch cards.
  • Learn to play chess.
  • Take a business course.
  • Do not use an MP3 player.
  • Learn a foreign language. Scala should do it.
  • Learn to cook. Please. Before you get scurvy or rickets. There are more food groups than pizza, coffee and chocolate bars.
  • Learn to play a musical instrument.
  • Learn to swim.
  • Do not litter.
  • Avoid politically correct people.
  • Avoid anyone who says "We have always done it this way".
  • Take away the keyboard of anyone who says "We need a bug database".
  • Remove the Version Control account of anyone who claims to write bug free code without tests. Better still, take away the account, and their PC, and desk, and chair just to be sure.
  • Listen to classical music and jazz. If you are unable to appreciate it at least as much as contemporary music, you lack the sensitivity to develop into an craftsman of any real depth.
  • Keep your word.
  • Do not work with anyone who you do not trust.
  • Never explain yourself. Better yet, never do anything that will, later, require you to explain yourself or to say you're sorry.
  • Always use spell check.
  • Stop aspiring and start doing.

I can't guarantee anything, but this is how you might, just might, become a software craftsman...

(Thanks to HR Giger's agent, Les Barany, for inspiration and some of the ideas that seem to apply to both crafts)


No comments: