Thursday, March 12, 2009

Innovative methodology: Rubber Duck method of debugging

> There is an entire development methodology (whose name escapes me at the
> moment) that makes use of that very phenomenon.

We called it the Rubber Duck method of debugging. It goes like this:
  1. Beg, borrow, steal, buy, fabricate or otherwise obtain a rubber duck (bathtub variety)
  2. Place rubber duck on desk and inform it you are just going to go over some code with it, if that's all right.
  3. Explain to the duck what you code is supposed to do, and then go into detail and explain things line by line
  4. At some point you will tell the duck what you are doing next and then realise that that is not in fact what you are actually doing. The duck will sit there serenely, happy in the knowledge that it has helped you on your way.

Works every time. Actually, if you don't have a rubber duck you could at
a pinch ask a fellow programmer or engineer to sit in.

Wednesday, March 4, 2009

Systems thinking, Passion, and Clear communication

There are three traits that will serve anyone wanting any role at any company: systems thinking, passion, and clear communication.

Systems thinking is a way of looking at the world that allows you to see how many small pieces come together to make a more complex whole. System thinkers see the hidden interconnections that bind together the parts and know how to make the best use of ambiguity and uncertainty as a result.

Passion isn't just about liking what you do. It's also about focus, determination, and obsessing over quality. Yes, you want a job, but do you want a mission? Having this sort of enthusiasm is essential because it will get you through difficult challenges more than almost any other trait.

Clear communication brings everything together. If systems thinking is about the higher-level patterns, and passion is about the details, then clear communication is the means by which the first two traits come into alignment. You need to be a clear communicator as an individual contributor, an executive, and everything in between.

(Gary Flake)