Call for papers: Web2SE 2011

I’m in the Program Committee of the 2nd International Workshop on Web 2.0 for Software Engineering. (Web2SE 2011), co-located with ICSE. Please consider submitting your work—here is the abstract of the call for papers:

Social software is built around an “architecture of participation” where user data is aggregated as a side-effect of using Web 2.0 applications. Web 2.0 implies that processes and tools are socially open, and that content can be used in several different contexts. Web 2.0 tools and technologies support interactive information sharing, data interoperability and user centered design. For instance, wikis, blogs, tags and feeds help us organize, manage and categorize content in an informal and collaborative way. Some of these technologies have made their way into collaborative software development processes and development platforms. These processes and environments are just scratching the surface of what can be done by incorporating Web 2.0 approaches and technologies into collaborative software development. Web 2.0 opens up new opportunities for developers to form teams and collaborate, but it also comes with challenges for developers and researchers. Web2SE aims to improve our understanding of how Web 2.0, manifested in technologies such as mashups or dashboards, can change the culture of collaborative software development.

Posted in Academia, Software development | Leave a comment

Ethics, activism, and research

For some years now, as the end of my PhD drew near and my postdoctoral work began to unfold, I have felt anxious about committing my life to research. It’s an anxiety that lurks in the back of my mind: it lets me be while I go through my daily routine, but when I sit back and pause to reflect, it crawls out of its hole and demands my full attention: it asks whether what I do is worth it; whether “software engineering research” is really my best answer to that intimidating, sometimes paralyzing question: knowing what you know about the state the world is in, what will you do with your life?

Some recent posts by Jon Pipitone, as well as some personal developments in my life, finally forced me to try and tease out what is it that bugs me about a life of research, and what can I do about it. I think the source of the problem is that research, for the most part, is understood as a value-neutral activity. Or rather, that research is assumed to be valuable naturally, for its own sake. Generalizing: research, if it goes as it should, leads to “progress,” and we take it for granted that progress is a good thing—therefore, research is also inherently a good thing. But these assumptions are questionable.

First, not all research agendas lead to progress. Of course, it is the nature of research that we never quite know at the start whether a particular avenue of exploration will prove productive or not, and therefore many research projects come up empty-handed, and we should be OK with that. But when I say that research does not necessarily lead to progress I’m not talking about that; I’m talking about research that we know (or should know, if we didn’t purposefully keep a veil over our eyes) that it’s not going anywhere. Every field is different, and I can’t risk a guess about the value to society of most medical, physical, or psychological research. But I can analyze my own field, and when I do I conclude that we don’t yet have much to show to our society for the privilege of doing research.

Now and then, the argument goes, a genuinely useful idea sparks, and it makes all the other effort worthwhile: we achieve progress. On this, again, I’m not convinced. “Progress” has undeniably given us many wonderful things, but it also seems to be bringing us to the brink of collapse—our society more and more like a Jenga tower, reaching higher every turn but also becoming more unstable, until we reach the inevitable point where the tiles all fall to the ground. Thinking about progress invariably reminds me of that Walter Benjamin quote that I posted a few years ago:

“A Klee painting named “Angelus Novus” shows an angel looking as though he is about to move away from something he is fixedly contemplating. His eyes are staring, his mouth is open, his wings are spread. This is how one pictures the angel of history. His face is turned toward the past. Where we perceive a chain of events, he sees one single catastrophe which keeps piling wreckage and hurls it in front of his feet. The angel would like to stay, awaken the dead, and make whole what has been smashed. But a storm is blowing in from Paradise; it has got caught in his wings with such a violence that the angel can no longer close them. The storm irresistibly propels him into the future to which his back is turned, while the pile of debris before him grows skyward. This storm is what we call progress.”

We are taught to see our research as a tool: not good or bad in itself; its ethics lie in the way our society decides to use it. When you research something seemingly good and worthy, you might be also unwittingly hurting our civilization, and viceversa: war research and weapon development, we are often reminded, have been the source of many improvements to modern life. So why bother? In sum: we are merely the builders of this tool called research, and it is not our job to question it.

This is what I mean when I say that research is for the most part value-neutral (and please note, again, that I speak only with knowledge of my own domain). Generally speaking, we don’t care where the money for our research comes from, we don’t care who benefits from it directly, and we don’t care how its results can be misappropriated to the detriment of society, as long as we get to tackle our (perhaps socially worthless) research questions. We act as if it were not our position to question these things—it is convenient to not have to think about who are we helping or hurting from the comfort of our desks, labs, and podiums. Our discussion of “research ethics” is usually far more superficial than these considerations: it focuses on protecting participants from risk, on consent, on avoiding plagiarism. Which are all important issues, of course, but ethics is far more than that, and unfortunately “dealing with ethics” in the university environment has simply become synonymous with “convincing the review board that we won’t harm our participants.” Even the deeper treatments of research ethics that I’ve found have unsatisfactory results—see for instance the ethical contortions, here, to justify a collaboration with a tobacco think tank. (If you know of good discussions of research ethics, please share them in the comments.)

This neutrality, this abstraction from the very direct consequences that our research could or should have, stands in my mind in stark contrast to the ills that plague the world and demand urgent attention. We stand by a social and economic system of abuse and growing inequality; we witness the rise to power of the corporation; most importantly, we know very well that we approach a climate catastrophe of our own creation, and a depletion of the most basic resources holding our civilization together. When I remember all of this, when this anxiety takes hold of me, going back to the question of whether ‘foo’ is better than ‘bar’ for some kind of software development project seems either stupid or criminally complicit.

What is there to do? I think that a deeper commitment to bring these ethical issues into our research should lead us, at least, to do four things: (1) to be more discriminating with our sources of funding and more aware of the patterns we encourage when we accept money from bodies whose values we disagree with; (2) to say “no” to contributing with those organizations that pursue values that are in opposition to ours (in my case, those that thrive on the exploitation of natural resources or labour, on violence or oppression, as well as those that actively oppose sustainability, equality, welfare, or diversity); (3) to actively seek out and collaborate with those organizations that pursue values in harmony to ours; and (4) to honestly reflect on whether our research projects are truly the best use of our abilities for the greater good, considering the many ways in which the world needs unscrewing, and to switch activities if we find that to be the honourable thing to do.

This sounds great in theory, but it’s quite hard to do in practice. My big unresolved questions at this point are: what does this mean for a junior researcher? And specifically, what does this mean in my domain? Can we actually pull this off—this researcher/activist combination? If so, how does “pulling this off” look like? I know that in some disciplines people have managed to achieve a research-activist balance, but despite the examples that Jon dug up I still have a hard time figuring out how to make this work for my skills and abilities, and in a domain that, to all appearances, does not care (and does not encourage care) about these issues. I also know that there are senior researchers in my community that are making it work—Steve Easterbrook, my PhD advisor, being an example I’m particularly proud of. But he has tenure, and I don’t; instead I have a pressure to prove myself as a researcher, to publish (it doesn’t matter what, as long as it’s in big venues), and to develop corporate connections, before my funding runs out in a couple of years and I’m forced to jump to the next treadmill.

I think I’m partly writing this down to keep myself honest and avoid becoming complacent: I fear in time it’ll be easy to just give in to the routine. But I’m also partly writing it to ask around: do you feel or have you felt the same way? How do you cope, or how have you made it work? How should I approach this problem?

Posted in Academia, Activism | 16 Comments

Research as activism?

Jon Pipitone asks:

If there is one strand that connects any work that I do it is my desire to to be of some benefit to the world, and for that benefit to have a certain immediacy. I am concerned about issues such as peak oil and climate change that are so broad in their impact, so potentially disrupting, and so urgently in need of address that it is hard for me to think otherwise.  For me, being an activist is crucial. If I’m going to continue on in the PhD program I will need to find a way to make my research activism.

(…)

What I’m missing, I think, are good examples of researchers that are engaged in action research; folks that are researchers and also activists and have managed to blend the two well.  I can’t quite see yet how to apply the skills of a software researcher but if I had some examples of how others are doing it I think it would help.

So, know of anyone? (…)

If you do, I’d very much like to know, too—please share in the comments, or at Jon’s blog.

Posted in Academia, Activism | 3 Comments

Learning from strangers

I got a copy of Learning from Strangers,” by Robert S. Weiss, after reading about it in Jeremy Handcock’s blog. It’s such a good book that I wanted to bang my head against a wall for not reading it before. It’s what all methods books should aspire to be: concise, non-dogmatic, full of experience and practical advice. I particularly liked the play-by-play analysis of interview transcripts.

While you can’t really learn to interview by reading a book, I think a well-written book can help you correct your mistakes and put you back on the right track. After reading Weiss’ book I feel more confident about some of my strategies, but more importantly I can also identify a lot of things I’d been doing wrong:

  • Short interviews. I’ve been too mindful of other people’s time, and tried to rush through interviews to accommodate their busy schedules. Therefore, many of my interviews have only been half an hour long. Weiss thinks this is the bare minimum you need for good material to emerge, and suggests that between one and two hours per session (with several sessions if there are many topics to cover) is a much better timeframe to get a productive interview.
  • “Flustering” interviewees too much. Perhaps as a result of the time pressures above, sometimes I rush from one topic to another, to try to cover a lot of ground. This may result in interviewees believing that I’m not interested in in-depth stories or analyses that take a long time to develop, and in annoying them by constantly stopping their flow of thought.
  • Filling in the blanks. There are times, during interviews, when you ask a question and you get a relatively long silence. At these times I tend to offer a way out of the silence, by providing a rephrasing of the question or a set of possible answers. But these silences are potential indications of some intense effort on the part of the interviewee, which is a signal that some really good material may be about to come. If I fill in the blanks I short circuit the process and waste that potential.
  • Too much rephrasing. I tend to rephrase what my respondent tells me, to see if I understood it properly and to build trust (in the sense that the respondent gets some confirmation that I’m listening attentively and can be confident of my judgment). Sometimes this is useful. But if I overdo it I may be reinforcing a behaviour that I don’t want to reinforce, in effect asking the respondent for “more of the same” material. Looking back on some of my interviews, I think I’ve been overdoing it somewhat.
  • Putting words in respondents’ mouths. This is the most serious of my errors, even though I’d thought I was not at fault. It’s very easy to put words in respondents’ mouths: for instance, in my field, just asking them about their “requirements process” asks them to think in terms of requirements and processes, words and constructs that do not necessarily match their daily practice. I’ve avoided that for a long time; what I now realize I hadn’t avoided is that, in an effort to be empathic, sometimes I have finished a respondent’s phrase myself. Under some circumstances this can be a big deal, so I should learn to keep quiet and see what the interviewees come up with on their own.
  • Not recording the interviews. Sometimes I record them, sometimes I don’t (especially when I think the recorder will get in the way of building trust). I think I’ve gotten pretty good at taking exhaustive notes after an interview, but I’m not sure to what extent my self-perception is justified and to what extent is it hubris. So I should grow more comfortable with requesting for the interviews to be recorded (unless of course the interviewee isn’t OK with it).

In short, this was an eye-opening book. If you do interviews as part of your research, I hope you’ll check it out.

Posted in Academia, Books, Recommendations | Leave a comment

My copy of Making Software

My copy of Making SoftwareLast night, as I came back home from my convocation in Toronto, I found my free copies of Making Software waiting for me.

The book looks great, and the list of contributors is (ahem!) fantastic. I’ll read it over the next few days and report on it. If you get a copy, I’d be very interested to hear your thoughts on the book overall, and on my chapter in particular.

Posted in Academia, Books, Software development | Leave a comment

“Making Software” is out!

Making Software coverI got some great news today: the book Making Software: What Really Works, and Why We Believe It, edited by Andy Oram and Greg Wilson, is now available. It includes a chapter I wrote on co-located vs. private-office work environments, as well as 29 other chapters from some truly stellar researchers summarizing the state of the field. I haven’t read it all yet (I’m told my copy is on its way), but I’m really looking forward to it.

The book’s proceeds go to Amnesty International, and you can find it for sale here. Hope you enjoy it!

Posted in Academia, Books, Software development | 3 Comments

What makes coordination and communication easier?

OK, we’ve established that coordination and communication in software development are difficult. We’re also taking the view, supported by plenty of empirical data, that they are central, and often essential, to software projects. So what can we do to coordinate and communicate more easily?

There are many concrete answers on stuff we could do. We can have stand-up meetings, or use story cards to convey key information about product features quickly; we can document all the requirements of the system in a specification, so that everyone has a key reference to go to when they have a question; we can use fancy awareness technology to let our peers know what we’re doing throughout our working hours, and to learn about what they’re doing, etc. The list of potential solutions is huge; some solutions work well in many contexts, some have rarely been shown to work in practice. But what I’m interested in is abstracting, from these solutions, some of their main ingredients, the attributes that make them work when they work. Let’s say a daily stand-up meeting works wonders for team coordination and communication. Why does it? If we find the answer to that question, if we isolate the factors that make it work, then we can design solutions that take an even better advantage of them, or analyze whether, on principle, we can expect some other new solution to work or not, based on its use of the same attributes.

In my readings and in my empirical studies, I’ve found that there are four particularly important attributes that help people coordinate or communicate better. Depending on where you’re coming from, you may find some of these obvious or controversial:

  • Synchrony. We interact close to the time when the situation arises.
  • Proximity. We interact close to each other, and to the situation we’re dealing with.
  • Proportionality. Our involvement in the situation is proportional with our authority in dealing with it.
  • Maturity. We interact in the ways and with the patterns we’re used to, and we face mostly familiar situations.

There’s a rationale for including each of these attributes into the list, but I’d rather not get into it in this blog. It’s all in my thesis, though!

According to this list, for instance, daily stand-up meetings are generally a pretty good practice to help teams coordinate and communicate better. Interaction in stand-up meetings is synchronous and proximate: the whole team is meeting face-to-face, discussing the issues of the day. If they are performed properly, they are also proportional: those participants who have important things to share do so, and those who can help intervene if necessary. Whether they are also mature depends on the history of the team: at first, daily stand-up meetings can seem pointless or awkward, as they consist of team dynamics that the group may not be used to. Later on, if the team members persevere, their practice matures, and they can cut corners if they want to, or adapt their practice to their needs. (Daily stand-up meetings have one big drawback though: they’re impractical for large teams. I’ll discuss this in the next post.)

That list of attributes is useful because we can now turn our attention to any proposal that is supposed to help us coordinate or communicate more efficiently, and analyze whether it’s doing any good from this point of view. We can make predictions on whether processes, documentation, practices, tools, or many other things are beneficial from a coordination and communication perspective or not—and if not, we can say why.

In my next post I’ll use this analytical tool to pass judgment on some of the constructs that are (or should be) commonly used in our literature. Stay tuned!

Posted in Software development | 1 Comment