Tuesday, 11 December 2018

Code Navigating Tool, The Human-centric one

http://web.eecs.utk.edu/~azh/pubs/Henley2018Dissertation.pdf
HUMAN-CENTRIC TOOLS FOR NAVIGATING CODE

1.
I can't agree more that reading code is really hard, and spent a lot of my time in reading other peoples code. And the document above, exactly pin pointed what I need. I need better tool. The tools I used, mostly file based IDEs, were horrible. This is a good starting point.

2.
This document suggests, to effectively browse through the code, you actually using following three different methods.
1) Working set
2) Compare different version
3) Code structures

3.
The author said he provide some limited working version of tools in the document, but I don't think there's practical tool we can use at the moment. But the concept he brought is very useful, once I know what was the real problem in navigating codes. I vaguely feel it, and the feeling have been harden while reading the document. (Recommend to read out this document, if you are an software engineer, and spending most of you time in reading codes.)

4.
Working set is set of code need to be related. If you experienced visiting same code again and again while navigating code through, it is belongs to the same working set. Software codes normally scattered around multiple files or directories, but to understand how they work, you should put the related code segments together. Even that is not easy with traditional tools we are using at the moment. That is why visiting again and again, until memorise the whole code in our mind.

5.
Comparing with previous version of the code is very useful, and sometimes inevitable, but only some tools support this in a usable feature list. In my case, it wasn't really a problem, but would like to have this feature if that doesn't heart other crucial features. Once comparison is easy, then we might follow the change of the codes, so that getting better understanding what was gone through in the past. Maybe easier to understand why it ends up with complex code logics, if we know what was the initial version of the code.

6.
Code structures, I think this is already supported by most of IDE tools. It is about jump to the definition of the symbol, or showing call trees, or class hierarchy.

7.
So in my case, the working set is the real problem. The problem is that it is not easy browse through the codes, as it is only using tabs and scroll bars, and not helping my spatial memory.
1) navigating requires multiple clicks
2) my browse history is corrupted by IDE limitation
3) and doesn't support better spatial concept

8.
Spatial memory, human memory not computer memory, is very useful. I normally don't remember the exact information, but still remember the whereabouts of the information. Yes, that was in the.. about this location, and about this height, and about this length. While reading books, you also experience these, in the way like, the girl married around this location of the book. But it is very hard when you read on a e-book reader.

9.
When author mentioned this spatial memory I know this guy tracking the right way. This wasn't the first chance I fully agreed with the author. And felt happy by knowing that I am not alone in this troubled world.

10.
http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.84.4461&rep=rep1&type=pdf
Code Thumbnails: Using Spatial Memory to Navigate Source Code

11.
Following is the part of Patchworks from the document, and it seems he has better idea for navigating codes.
I would be happy, if I find a better way browsing codes, after finishing this document.Let's take this as a short term goal.

.. (This two dots means, I am still reading through these documents)

No comments:

Post a Comment