This is post number 2 of blog number N (where N > 2).

I was thinking today that this time last year I would have spent a good part of the weekend grading quizzes or papers or exams. This I also spent most of the day working, but this time the work was debugging a Firefox browser extension that's part of a project I'm on at work.

I find debugging hard work, but interesting. It's like doing an experiment. You start with an observation that something is wrong with your software. You form a hypothesis (or maybe gather more data first) then implement some change to the software and try to guess what its outcome would be if you hypothesis was right. Most of the time you don't get what you expect and there's a lot of patience involved; you look for more data, your adjust your hypothesis, you change the code, you see what happens. Hopefully, after a while you develop a mental model of how things are working and you home in on the problem. Sometimes you just get lucky and some change to the code makes the problem disappear. This is nice, but not very satisfying because you still have no idea what was causing the problem.

I think that training in debugging can be very useful. My favorite resource for learning how to debug systematically is the Udacity online coure "Software Debugging" that you can take for free here:

CS259: Software Debugging

Andreas Zeller's personality is great and his material in the course is the best I've seen on the subject of debugging.


comments powered by Disqus