Code review is a difficult subject. Not unlike unit tests, code review is overwhelmingly considered a good thing by those who write textbooks, or preach dogma, or create company policies; yet it has not been overwhelmingly accepted as a requirement in all organisations creating software.
I suspect that as with unit tests the stumbling block is the resources it takes – someone needs to spend X hours per week reviewing code. How can the effort required be minimised? If tablets were used to review code freehand (less typing, more drawing, easier expression) – would that encourage more reviews, or more feedback from reviewers?
Mike has been looking into code review tools for quite some time. He often mentions the Cisco Systems study. Making my life easier – he made a list of interesting readings, a great overview of prior work.
But none of that work concentrated on finding how much overhead the mechanics of code review are. To increase the frequency of occurrence of code review the cost has to be brought down – both in terms of time and in terms of energy required. I will spend some time this week looking for research more directly related to this issue.
Also – personal experience reminds me of my code only being seriously reviewed when I just started. The more senior programmers in my experience don’t have their changes reviewed at all, or only selective changes are reviewed. As a reviewer I found that it’s difficult to write down what I’m thinking. When marking assignments I had to print them out because drawing, underlining, circling, and writing a couple of words next to some line/symbol is much easier than trying to explain it in P.S. notes.
[I believe the best way to review code is to have both the author and reviewer sit next to each other and draw on a whiteboard/printout during the review, but that’s a different challenge I would not want to take on as a research problem.]
If it is found that tablet-based software can help with code reviews – that will be a thumbs-up for tablets, but more importantly – it will be a reason to develop software for traditional workstations, software that will encourage more people to do better reviews.
From a technical point of view – this would probably be implemented as part of ReviewBoard, using ReviewBoard for a backend and the Canvas HTML element to extend the ReviewBoard frontend.
A couple of freehand drawing on Canvas links: TinyDoodle, CanvasPaint