Welcome

Featured

We are interdisciplinary researchers with diverse backgrounds based in the Department of Computer Science at the University of Victoria. Our offices are located in the Engineering/Computer Science building.

Our research interests include:

  • cognitive support and technology diffusion
  • human computer interaction
  • human and social implications of technology use
    (social informatics)
  • interface design
  • knowledge engineering
  • software engineering
  • technology and pedagogy
  • visualization

Our primary objective is to develop tools that support people in performing complex cognitive tasks. Our projects benefit from the collaborative approach taken within our group and with other researchers. As a group, we operate by thinking creatively, exploiting our synergies, and applying innovative research techniques.

Contact us

We’re on Twitter and Facebook.

Collaborators

We frequently work with several other groups in the department:

An Exploratory Study of the Adoption of Mobile Development Platforms by Software Engineers

MobileSoft 2014 accepted our paper on the adoption of mobile development platforms.

Preprint here!

Authors: Müller Miranda, Renato Pina, Cleidson De Souza, Fernando Figueira Filho, Leif Singer

Abstract: There are several mobile platforms that compete with each other to attract software developers. However, it is not yet well understood which factors developers take into account when deciding on a particular platform. We report on an exploratory study that aims to address this gap. Through semi-structured interviews that used diffusion of innovations theory as conceptual framework, we identified some of these factors. For instance, we uncovered that developers perceive the Android platform as more accessible and compatible with their existing knowledge, but that they fear its fragmentation. Some developers choose iOS simply because sales are more lucrative on that platform. Our preliminary findings can help developers to decide which platforms to use and platform vendors to optimize their offerings to developers.

The Promises and Perils of Mining GitHub

Our paper on using GitHub data for research got accepted by MSR 2014!

Authors: Eirini Kalliamvakou, Georgios Gousios, Kelly Blincoe, Leif Singer, Daniela Damian, Daniel German

Abstract: With over 10 million git repositories, GitHub is becoming one of the most important source of software artifacts on the Internet. Researchers are starting to mine the information stored in GitHub’s event logs, trying to understand how its users employ the site to collaborate on software. However, so far there have been no studies describing the quality and properties of the data available from GitHub. We document the results of an empirical study aimed at understanding the characteristics of the repositories in GitHub and how users take advantage of GitHub’s main features — namely commits, pull requests, and issues. Our results indicate that, while GitHub is a rich source of data on software development, mining GitHub for research purposes should take various potential perils into consideration. We show, for example, that the majority of the projects are personal and inactive; that GitHub is also being used for free storage and as a Web hosting service; and that almost 40% of all pull requests do not appear as merged, even though they were. We provide a set of recommendations for software engineering researchers on how to approach the data in GitHub.

Software Engineering at the Speed of Light: How Developers Stay Current Using Twitter

Our study on how developers use Twitter got accepted at ICSE 2014!

We’ve written up a blog post that presents some of the core findings.

Authors: Leif Singer, Fernando Figueira Filho, Margaret-Anne Storey

Abstract: The microblogging service Twitter has over 500 million users posting over 500 million tweets daily. Research has established that software developers use Twitter in their work, but this has not yet been examined in detail. Twitter is an important medium in some software engineering circles — understanding its use could lead to improved support, and learning more about the reasons for non-adoption could inform the design of improved tools.

In a qualitative study, we surveyed 271 and interviewed 27 developers active on GitHub. We find that Twitter helps them keep up with the fast-paced development landscape. They use it to stay aware of industry changes, for learning, and for building relationships. We discover the challenges they experience and extract their coping strategies. Some developers do not want to or cannot embrace Twitter for their work — we show their reasons and alternative channels. We validate our findings in a follow-up survey with more than 1,200 respondents.

How Search Became Your Company’s Most Valuable Programmer (Part 5)

This is a series of posts about how software development and programmers have become increasingly reliant on developer communities like Stack Overflow and search engines to help them develop and ship code. We think this is a fundamental shift in the nature of software development that has wide ranging implications.

Part 1 – A Story
Part 2 – Diagnosing SAP
Part 3 – How Many Programmers are SAPs
Part 4 – Causes & Effects of SAP
Part 5 – Refactoring the Programmer

Refactoring the Programmer
How programmers develop software is changing rapidly. Software developer communities and powerful search engines are becoming an increasingly integral (and often unacknowledged) part of the software development process. Driven by increasing solution complexity and the proliferation of frameworks, libraries and platforms required to deliver a single solution, programmers (both novice and expert) frequently find themselves faced with having to integrate and debug multiple heterogeneous pieces of code but without the time to develop even a modest understanding of those components. Search engines and developer communities like Stack Overflow provide a lifeline to the programmer allowing them to mine the stored collective intelligence of vast communities of fellow software developers. However, the reliance of programmers on these communities raises some interesting questions for software companies, software engineering researchers and educators alike.

Since coming to work with Chisel, I and others like Margaret-Anne Storey, Christoph Treude and Leif Singer have attempted to capture the impact that large developer knowledge stores like Stack Overflow (indexed and made accessible through search engines) are having on programmers and software development in general. The Social Programmer is a concept that attempts to sum up the new reality faced by many programmers and asks the question do we need to rethink our concept of what a programmer is and what they do? I this post we ask do we need to refactor the programmer?

(Note the following sections are based on our FCSD 2011 paper (http://ctreude.ca/2012/01/05/futurecsd2012/) where we introduced the concept of the social programmer)

The Evolution of the Social Programmer
The emergence of Stack Overflow as a repository of programming knowledge is the latest evolution of a historical trend with programmers inventing or adopting a “social” technology to meet their need to discuss what it is they do with other programmers. However, with sites such as Stack Overflow indexed and made available through search engines, are we approaching the point where the archive of stored programming knowledge reaches a critical mass and where new programming practices and behaviors will emerge? Have we already reached that point and what kinds of impact might we see on programmer practices and the software development industry as a result?

fig3

We think the programmer has already been refactored, it’s happening day by day largely invisibly but evidenced in the ever increasing contributions by programmers to communities like Stack Overflow and GitHub and by the proliferation of programming languages, libraries and platforms. Together these online services for programmers (infrastructure), the programmers that participate and a shared philosophy make up the social programmer ecosystem. We are currently in the process of charting this eco-system.

What Makes a Good Programmer?
For a programmer in the social programmer ecosystem, where a large percentage of programming knowledge is archived and curated by millions of “experts”, do we have to redefine the attributes of a good programmer? Is the metric of a good programmer someone with a deep understanding of programming and software engineering principles, or someone who can leverage and synthesize the programming community to achieve the same results? When you are very unlikely to be the first person in the world to encounter a particular problem, does a smart programmer attempt to diagnose the problem independently or just ask the community? Will an entirely new category of programmers emerge, a Just in Time Programmer, without formal training but with the ability to combine snippets to craft solutions that will just meet their needs? What tools will these new programmers require?

Software Development as a Massively Distributed Activity
If future programmers will require the ability to synthesize a single solution from the contributions of the many, it raises interesting questions (both positive and negative) about the nature of the software that those programmers produce. Give an environment where practically all software is developed with reliance on a shared knowledge base and community, who actually owns the intellectual property? Is there a risk that programmers do not really understand how their software works? Or will it in fact lead to better efficiency by reducing time spent fixing bugs or re-inventing the wheel? Could the distributed development approach to programming actually increase quality by promoting best practice solutions? Is this a realization of software componentization, different from the vision of component based development perhaps but effectively a similar result? What organizational changes will this shift entail in terms of social offshoring and the ad hoc creation of teams?

Conclusion
Ultimately it’s too early to make a judgment on the social programmer and the impact the phenomenon will have on software development practice. We are already starting to see changes in in the skills companies and recruiters are looking for in programmers (http://thechiselgroup.org/2012/10/31/paper-mutual-assessment-in-the-social-programmer-ecosystem-accepted-to-cscw-2013/). At the moment this appears to be confined to a distinct subset of programmers but it will be interesting to see if it spreads and how far. There will also always be programmers who find it difficult to fully participate in these communities because of intellectual property or security restrictions for example. How we bring the benefits of the social programmer ecosystem to these programmers is an interesting challenge.

A final though. An argument frequently raised when discussing these topics is quality. What is this trend going to do to software quality? Are programmers going to become copy and paste programmers, findings snippets of code on the web and then pulling them together to craft a solution without any understanding of how it works. Frankly I’m sure this is already happening but it’s not fully clear if this is; a new trend, can be stopped or is an entirely bad thing. We will probably see the emergence of a group of programmers that lack foundational computer science and software engineering concepts, but this is not necessarily new, many practicing programmers were not trained as programmers. The potential benefit of the social programmer ecosystem is that these programmers can interact with and learn from communities of knowledgeable programmers where expertise is valued and where best practices can be disseminated.

Well, we hope :)

Part 1 – A Story
Part 2 – Diagnosing SAP
Part 3 – How Many Programmers are SAPs
Part 4 – Causes & Effects of SAP
Part 5 – Refactoring the Programmer