- So Sruti, take it away.
- Sorry about that.
Is that okay?
Good morning and thanks for coming.
I'm sure Sruti Srinhvasa Ragavan
from Oregon State University.
I'm a PhD student.
And I'll spend the next 15 minutes talking
about our study on information Foraging Theory
for the presence of creating software program.
And all the, all my co authors, except for Anita Sarma
or (mumbles),
there's Charles there and others are sitting around here.
(chuckles)
So, let's get started.
Imagine somebody who's using a computer for a creative task.
So, often when we are doing something creative,
we tend to explore a lot of different options.
Try this, try that,
until we finally figured out on something.
And literature show us that programmers
also do a lot of such things.
Here's an example.
Imagine there's a programmer,
who's kind of trying to build a game,
which looks something like this.
So there is something with a black background.
You can't really see that data, I'm sorry.
And he did all these kinds of different things
with different colors, different appearances, and so on.
And programmers sometimes also try a lot
of different options
in order to actually make the game work.
Now what happens is
when you're on touch and explorating mode,
we tend to create a lot of different variants
of the same thing.
In this case, it's a lot of different variants
of the same game program.
So why do we care about variants at all.
Imagine the same program doing the same game.
Let's assume he currently has got this version of the game,
which looks like the top right, with the red box around it.
And let's say he now wants to try out an option
where he wants to put this code up above,
like the one in the middle.
So, it's kind of where you might just think,
okay, let's go to that lower variant
or take that thing and stick it back here
and things should work fine.
But it done so that can be a hard problem.
Why?
Because there could just be a lot of similar varients.
One is, there could just be a lot.
And that these are very similar to each other.
So if you just looked at the things here,
like four of these five different things
are already similar to each other.
So finding one of them could be hard.
Interestingly, this problem has not been daily looked at
in depth in programming literature.
So we looked at this problem and kind of asked ourselves,
these stories had questions.
How do programmers identify a variant for use?
And, how do programmers integrate code
across different variants?
And we kind of use information Foraging Theory
to guide our research.
In interest of time during this talk,
I'll just focus on the first research question.
Now, in order to answer these research questions,
we're going to use a study with eight novice programmers.
We chose novice program, because there's literature
that says that they are more likely to go
on an explorating mode and they're also
opportunistic in that they need to copy and paste
and to use a lot of code.
We made them think aloud while they performed reuse task.
And we followed a lot with retrospective interviews,
mostly for triangulation purposes.
Here's the actual task.
The game looked like this.
There is the score and the multiplier,
that's in the middle of the hexagon.
And we told them to move the score and the multiplier
to about the hexagon, like it was before.
We did not show them how it looked
like it was before, but just for the sake of this talk,
here is kind of how it looked like.
The score and the multiplier were above the hexagon.
They were always so subtle, there was no flashing
like it is here on the left.
And the multiplier was kind of
within these little parenthesis.
Here's how environment look like, (mumble).
Just for the sake of,
it's a standard ready that it's like an explorer,
there's an editor and you can kind of see a preview.
For the sake of this task, they provided the participants
with all the different, all the variants of the game.
Which is what you see on the left.
We took the better parts of the program
and we kind of converted
each of the divisions into a variant.
We labeled the variants with a timestamp of the change
and we gave it to them
in chronological order as you can see here.
We chose the definition of a variant
as an entire copy for a program at that time.
So these two little bubbles are basically the whole copy
of a program and each one of them is a program in its own.
And for analysis we used information Foraging Theory.
Just to refresh your memory back, we asked people
to change a program to look like what's on the left
to move the score to how it's on the right.
Information Foraging Theory is this theory
about how people look for information.
It's inspired from life sciences
and it has these constricts.
There's this constrict called predator and the prey.
Where a predator forages for it's prey in the wild,
in this case, the predator is the programmer
and the prey is the pieces of source code
that he's looking for.
The prey might be located in these several locations,
which are called patches and the predator kind of view
is what are called cues in (mumble), which are
like hints that guide the predator to the prey.
In the past, information Foraging Theory has been used
to predict and explain how programmers search
for piece of code within a program.
In this study, we look at how programmers forage
in the presence of several different variants
of the program.
So, in the one above, in the earlier work it's
just being a single program.
Here we just have different copies of it.
For a qualitative coding, we used the types of cues
that programmers use.
Use the cue types that literature has supported earlier,
a lot of these people are already in the audience.
And we added some more to code different (mumble)
that we found specifically.
He called it a task was to make changes to the score
position of this game to look like that.
So essentially, they had to take a piece of code
from what we call the source.
And then put it in what we call, the destination.
Now, we told programmers to make changes
to a particular variant, which is called current.
So, the destination variant was kind of known to them.
Now, within this variant, there are all these different
locations of patches.
Like I said, a patch is a location with a (mumble).
So, the programmer kind of has to find out
which exact patch he has to make a change in.
So they kind of forage for the destination,
patches and prior (mumble) has done a lot of this work.
So, once the destination patches were formed,
the programmer then has to find
what the source variant was in order to (mumble).
Like, how the old one looked like.
In order to do that, we did not tell them
where exactly it was or how it looked like.
We kind of forced them to plow
through these old variants this way.
In (mumble) literature,
when there are several different patches
and a programmer or a predator has to find
a patch to put the forage in,
it's called between patch foraging.
We use the same analogy here to define
how, to define the foraging
of finding a particular variant.
We just colored between variant foraging.
The main difference between patch foraging
has been reported in traditional literature,
and this one here is that.
In these cases, these patches have all been mostly unique.
Whereas here,
all these variants could be very, very similar.
That's kind of the key difference between
foraging in (mumble), foraging in the presence of variants.
In order to actually find a variant,
participants used a lot of different kinds of cues.
They used timestamp, which is basically
the label that we provided.
Remember I also told you
that they are chronologically ordered.
So people kind of use that to go this way or that.
And then they used how the game looked like.
They used the change log.
What we did is we took the common major data,
which was the change description,
the time at which the change was done
and the other information and put it in a file
within each of these variants.
So people looked at that change log.
People looked at the source code
and particular people compared
the source code across different variants.
And they also looked at the differences
in what files were available and the file names
that had changed.
So they used all these different kinds of cues.
And one thing that stood out among all these cues,
is that they all were literally screaming,
what is it that makes this variant different?
And I think this is very specific variations, again.
It also makes sense, because all these variants
are very similar to each other.
So what really matters is how is this one different
from all these that are around here.
Now, after the participants
had kind found the right variant,
again, it had a lot of different patches inside.
So they now have to go
and find the right patches within that.
People did not go on to find it all over again.
Just for the terminology here,
(mumble) when a prejudice foraging within a patch,
we call it within-patch foraging.
We kind of use the same analogy here again.
To call to use the term within-variant foraging
when a person was foraging within a variant.
Like I said, people did not go on to forage
all over again within the source variant.
They found the source and their destination variants
and they actually followed the patches
were very similar to each other.
If you see, there are a lot of patches on board of them
that are very similar to each of them,
even though they were different.
Part has been kind of capitalized on this similarity
between them.
Here's an example of whole participant event.
This participant actually had foraged
the destination patches on the earlier variant.
And he found that there were these calls
to a medical rendered text.
When he went to the source variant, he was like,
rendered text is actually still something
that I can still look for.
So I have done things like source code words
are basically the content inside a patch.
Is what is called information features.
If you kind of translate this into IFB terminology,
what participants essentially were doing here,
was they used the information features that they had found
in the patches that they had already foraged
to kind of go back and find the patches in another variant.
So, found patches, they saw information features
and they used the same information features
to actually locate the patch and not the variant.
In this case, they also kind of implicitly
expected that the patches and the information features
inside of them were going to be similar
across all these cases.
In some cases, such exploitation of similarities worked
in some cases it did not, in which case,
they went to use other kind of information features
or they abandoned the entire variant,
or they just started all over again.
So they found the destination patches, the source patches,
and now they just wanted to integrate.
Except from the source and then put it in the destination
to complete the task.
At this point, they also did one more thing.
They kind of evaluated if the radiant that they had found
had the patches within them were suitable for use.
In particular they looked if the source
in this destination patches they had foraged were similar.
This was because they were trying to evaluate
the cost if integration.
In particular, they all looked for something
as simple as can I just copy and paste.
Here's an example of whole participant had done.
He found the destination patches
and then he found the source variant.
He foraged and then found one.
Then he looked for the patches within that.
And then he said something like, okay,
I can just throw it in because he wanted
to look exactly the same thing.
But that didn't work because they were so very different.
So he went on to find another source variant.
He just pitched whatever he found.
The other five participants actually
went on to look for other things,
even after they had found the right place.
Simply because it was just hard to indicate.
Finally, people integrated whatever the source
and the destination patches to complete their task.
Outside of this task completion,
one thing that people did ask to forage
through all these different variants
was they used the information features
in all these patches within all these variants.
And kind of built the story of how the game itself
had been evolved because all these variants.
And then they just started building,
and as they looked at more and more variants and patches,
they kind of defined history as they went along.
And they used these stories to guide their foraging.
Here's an example of how one participant did that.
He first, he went through a few different variants
and said something like, early in the development
there's no score label and at some point
there is original score label and then after that,
the second score label is introduced.
And then he spent some more time going over
a few more variants and then said,
after dealing with this for a whle, tey might been like
no score label, then original score label,
then no score label, and then the second score label.
So you can see that they kind of define the stories
of how things have (mumble) so more and more
and gained more information.
And as they use, this participant use this kind of story
to actually guide his foraging, like that is so.
That's basically why, when I hit this version
that had no score label, I just decided to start searching
in a certain direction, in a more recent direction
in this case.
And I think this is very unique in the case of variants.
Especially where things kind of evolve over time.
So, this is unique too.
Now, what does this tell us?
We saw how people forage through all this, right.
Essentially what we did here was to add
a variation dimension to the whole information
that we have here.
And what happens when we add such a dimension
as their comparisons need to become extremely important.
And we saw that people look for what similarities
and differences between all these different variants
for various cases.
What this also tells us as tool designers
is that we have to consider these kinds of cues,
especially when we are trying to design for variants.
And finally, we also have this question
of where is it that the story belong
in something like the information Foraging Theory?
We spoke about a few different constricts,
but we don't really know
what we should substantiate the story as.
Should we even substantiate it as one of these constricts.
Kind of like an open question that we have.
And finally, we have another open question,
which again, we don't know an answer to is,
what is really a useful variant?
Right now, it's kind of arbitrary,
it's when we save it and if you have to do it,
it's actually also a distraction for somebody
who's doing something exploratory and creative.
If you would automatically save it,
then we have the questions of,
what are those right save points?
At what granularity should we save?
What is too fine grain or too constrain?
Or do we even have multiple appropriate granularities,
we just don't know it.
And if we have to save it,
then how do we define these changes
that rendering to each of these variants.
With that, we conclude.
As one of the first studies on foraging among variants,
we spoke about between-radiant and within-radiant foraging.
We spoke about how stories guided people
in their foraging.
And finally, we have this open question
of what is it that makes a useful variant.
Thank you, and I'll answer questions.
(applause)
(mumbling)
- [Woman In Audience] Hi Sruti, nice talk.
(foreign language) from city University of London.
One of the questions I had was about the cues
that people use for looking through the variants.
Can you tell a little bit more about,
what about better cues for foraging between variants.
Because I don't think you sort of looked at that.
It's almost going back to Tracy's talk of other
better strategies for being successful.
- Just so I get your question right,
so you're asking are there specific kinds of cues
that are particularly more helpful for foraging a variant?
So what we just found here is all the cues that we found
that people use, actually were ones
that made the differences between the (mumble).
We don't really know which one of them
was really better or worse than others.
We have some numbers, but I think it still needs
a little more study.
All we now know is that they should just be the differences.
- [Woman In Audience] Okay, thank you.
(applause)