Research
Major research areas:
Coordination
in Software Engineering
Open
Source Ecosystems
Hackathons, Codefests, Sprints, Data
Dives . . .
Coordination
in Software Engineering
Coordinating the work of individuals,
teams, organizations, and even ecosystems is one of the
fundamental challenges of software engineering. During the
50 year history of the field, coordination has been
approached in a great variety of ways, from meetings to
process programming to models and methods of development
to modular architectures.
The effectiveness of any approach seems
to depend critically on a host of contextual
factors. This suggests an area desperately in need
of a theory to provide a conceptual framework that will
let us understand more deeply the problem of coordination
and the impact of various solutions.
With students and colleagues, I have
developed a theory of coordination and performed a number
of empirical studies informed by this theory. The
theory, in sum, characterizes coordination
as a distributed constraint satisfaction problem
over engineering decisions that are distributed over
people.
Successful coordination happens when organizations
execute an appropriate "social algorithm" that is "congruent"
with the particular coordination problems by making
decisions, communicating, and leaving visible work traces,
without violating constraints.
This
paper provides an overview of my work in this area.
Open
Source Ecosystems
With the advent of transparent
hosting environments like GitHub, GitLab, and Bitbucket,
open source projects are now generally embedded in highly
interconnected ecosystems connected through dependencies,
collaboration, and complementary relationships. Managing
breaking changes is a particular coordination challenge,
and different ecosystems accomplish this in very different
ways, as we observed in a multiple
case study.
This project is more fully described on
our breaking changes
website, which also shows an interactive
visualization of data from a survey of participants in 18
ecosystems about their values and practices around
coordination.
Hackathons, Codefests, Sprints, Data
Dives . .
Hackathons are everywhere. All of the
major tech companies hold them, many scientific
communities depend on them, and universities sponsor and
organize them. They are thought to be a great tool for
sparking innovation, for building communities, and for
learning the realities of programming.
Yet it is not at all clear if hackathons have the desired
result, or how to choose a point in the design space of
hackathons that is most likely to achieve the particular
results (innovation, community, learning) that the
sponsors and participants want. We are observing a number
of open source and scientific hackathons, as well as an
internal hackathon in a large tech company (Microsoft's
18,000-participant One Week hackathon). We are also
looking at related "community
code engagements" that are not really hackathons,
but serve some of the same purposes, e.g., Google's Summer
of Code (GSoC). Our papers include an examination of
different ways of organizing
hackathon teams, and brainstorming
as a promising technique to make hackathons more
friendly and satisfying to self-identified minority
participants.
We have also helped to organize two workshops on
hackathons, one at CSCW
2017, and another at CHI
2018.
|