960 likes | 1.04k Views
Two Studies of Opportunistic Programming: Interleaving Web Foraging, Learning, and Writing Code. Joel Brandt with Philip Guo (S), Joel Leweinstein (S), Mira Dontcheva (A), Scott Klemmer (S), . http:// hci.stanford.edu /opportunistic.
E N D
Two Studies ofOpportunistic Programming: Interleaving Web Foraging, Learning, and Writing Code Joel Brandt with Philip Guo (S), Joel Leweinstein (S), Mira Dontcheva (A), Scott Klemmer (S), http://hci.stanford.edu/opportunistic
The Web has fundamentally changed the cost structure of information access. Enables an opportunistic approach to programming
People program opportunistically to prototype, ideate, and discover Emphasize speed and ease of development over code robustness and maintainability
Designers… http://flickr.com/photos/royalsapien/2387707860/
Scientists… http://flickr.com/photos/niosh/2492023651/
Makers… http://www.flickr.com/photos/samthor/3198975900/
…but only 3 million who are professional programmers [Scaffidi 2005] By 2012:13 million who program as part of their job…
Related Work Web Search for Programmers[Stylos 06, Hoffmann 07] Code Cloning in Software Engineering[Kim 04, Ducasse 99] Learning Barriers of Programming[Ko 04] Learning on the Web[Torrey 09]
Study 1: Prototyping a Web-based chat room Study 2: Log Analysis of Programmers’ Web Queries
Method Study 1: Web Chat Room 20 participants (9 Graduate, 11 Undergrad) “basic knowledge” of PHP, JS, and HTML 2.5 hours each use any resources 3 researchers observed, one asked questions to prompt think aloud
Method Chat Room Specifications • Set username • Post messages • Update without page reload • Messages have timestamp • Limited chat history
Results Most Subjects Met All Specs post message AJAX update timestamp username history Specification Met Specification Attempted subjects
Results Frequent Web Use subjects time (minutes)
Results Frequent Web Use subjects time (minutes)
Results Frequent Web Use subjects time (minutes)
Results Frequent Web Use subjects time (minutes)
Results The Web plays multiple roles length (seconds) session (sorted by length)
Results The Web plays multiple roles length (seconds) session (sorted by length)
Results The Web plays multiple roles length (seconds) session (sorted by length)
Results Three Intentions Behind Web Use Learning just-in-time acquisition of new skills Clarification connecting high-level knowledge to implementation details Reminder offloading memory to external resources
Results Just-in-Time Learning-by-Doing Copy and modify code before reading prose
“There’s some stuff in this code that I don’t really know what it’s doing, but I’ll just try it and see what happens.”
Results Just-in-Time Learning-by-Doing Copy and modify code before reading prose Not concerned with deep learning
“I think it’s less expensive for me to just take the first code I find and see how helpful it is at … a very high level … as opposed to just reading all these descriptions and text”
Results Just-in-Time Learning-by-Doing Copy and modify code before reading prose Not concerned with deep learning Learn new terminology from result snippets
Results Clarification of Existing Knowledge Web search enables translations and “language analogies” Know exactly what code does when they see it Copied code often not immediately tested