This shows you the differences between two versions of the page.
Both sides previous revision Previous revision | Next revision Both sides next revision | ||
asking_and_answering_questions_during_a_programming_change_task [2014/01/08 12:33] yann |
asking_and_answering_questions_during_a_programming_change_task [2014/01/08 12:40] yann |
||
---|---|---|---|
Line 30: | Line 30: | ||
- What are the parts of this type? | - What are the parts of this type? | ||
- Which types is this type a part of? | - Which types is this type a part of? | ||
- | - | + | - Where does this type fit in the type hierarchy? |
+ | - Does this type have any siblings in the type hierarchy? | ||
+ | - Where is this field declared in the type hierarchy? | ||
+ | - Who implements this interface or these abstract methods? | ||
+ | - Where is this method called or type referenced? | ||
+ | - When during the execution is this method called? | ||
+ | - Where are instances of this class created? | ||
+ | - Where is this variable or data structure being accessed? | ||
+ | - What data can we access from this object? | ||
+ | - What does the declaration or definition of this look like? | ||
+ | - What are the arguments to this function? | ||
+ | - What are the values of these arguments at runtime? | ||
+ | - What data is being modified in this code? | ||
+ | - Understanding a subgraph | ||
+ | - How are instances of these types created and assembled? | ||
+ | - How are these types or objects related (whole-part)? | ||
+ | - How is this feature or concern (object ownership, UI control, etc.) implemented? | ||
+ | - What in this structure distinguishes these cases? | ||
+ | - What is the behavior that these types provide together and how is it distributed over the types? | ||
+ | - What is the “correct” way to use or access this data structure? | ||
+ | - How does this data structure look at runtime? | ||
+ | - How can data be passed to (or accessed at) this point in the code? | ||
+ | - How is control getting (from here to) here? | ||
+ | - Why is not control reaching this point in the code? | ||
+ | - Which execution path is being taken in this case? | ||
+ | - Under what circumstances is this method called or exception thrown? | ||
+ | - What parts of this data structure are accessed in this code? | ||
+ | - Questions over groups of subgraphs | ||
+ | - How does the system behaviour vary over these types or cases? | ||
+ | - What are the differences between these files or types? | ||
+ | - What is the difference between these similar parts of the code (e.g., between sets of methods)? | ||
+ | - What is the mapping between these UI types and these model types? | ||
+ | - Where should this branch be inserted or how should this case be handled? | ||
+ | - Where in the UI should this functionality be added? | ||
+ | - To move this feature into this code, what else needs to be moved? | ||
+ | - How can we know that this object has been created and initialized correctly? | ||
+ | - What will be (or has been) the direct impact of this change? | ||
+ | - What will the total impact of this change be? | ||
+ | - Will this completely solve the problem or provide the enhancement? | ||
At the end, the authors report the frequencies of the questions but among groups of developers, not among sessions: "[i]f a specific question is asked repeatedly in a session, it is counted only once [...]", which undermine the usability of the number: it would have been much more interesting to know how often a question is asked in general! Also, the authors identify tool support for the questions but remain quite general. An in-depth study would be required. They conclude that "[b]ecause tools typically [provide] only limited support for defining the scope over which to operate, [developers] end up asking questions more globally than they intend and, so, the result sets presented will include many relevant items", which is "[an opportunity] for tools to make use of the larger context to help [developers] more effectively scope their questions and to determine what is relevant to their higher level questions". | At the end, the authors report the frequencies of the questions but among groups of developers, not among sessions: "[i]f a specific question is asked repeatedly in a session, it is counted only once [...]", which undermine the usability of the number: it would have been much more interesting to know how often a question is asked in general! Also, the authors identify tool support for the questions but remain quite general. An in-depth study would be required. They conclude that "[b]ecause tools typically [provide] only limited support for defining the scope over which to operate, [developers] end up asking questions more globally than they intend and, so, the result sets presented will include many relevant items", which is "[an opportunity] for tools to make use of the larger context to help [developers] more effectively scope their questions and to determine what is relevant to their higher level questions". |