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:

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

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

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

Causes & Effects of SAP
So the completely fake condition SAP is actually probably real and apparently affects millions of programmers, but what causes it? While researches have been studying social media and the role of web 2.0 in software development for a while, the full impact of this shift in programming practice is really only starting becoming apparent now. In this post we combine speculation and bits of empirical research to try to understand what is causing this shift in programmer practices and the impact it may have on software development.

Increasing Solution Complexity
Programmers are increasingly faced with having to program in multiple languages and across multiple platforms http://www.drdobbs.com/architecture-and-design/the-quiet-revolution-in-programming/240152206 . In the last several years a shift in user experience expectations and the rise of mobile and touch centric hardware has caused a splintering in the set of development technologies required to deploy a product to the widest possible audience. This paradigm shift can be seen most clearly in two parallel trends: the explosion of JavaScript frameworks for the web (jQuery, NodeJS, Bootstrap) and the introduction of rich client mobile applications and their associated marketplaces (iOS, Android, Windows).

The software development landscape is now an acronym soup of competing development platforms with no clear winner in sight. Our CSCW2012 paper on how developers evaluate other developers (http://thechiselgroup.org/2012/10/31/paper-mutual-assessment-in-the-social-programmer-ecosystem-accepted-to-cscw-2013/ ) indicates that developers, companies and recruiters are adapting to this new environment. Whereas once companies looked for employees with deep experience in a particular technology stack, now companies are starting to look for developers that can show a wide range of skills across multiple technology stacks and an ability to learn quickly. For many programmers this confusion of development platforms means being able to develop expertise in a single technology stack is now an unaffordable luxury. Rather programmers are expected (using resources like Stack Overflow) to be able to be instantly conversant in multiple languages and platforms and to be able to integrate with whatever library, component or service that may be required to deliver a solution.

This is speculation, but there is likely an interesting feedback loop here between the amount of indexed programming knowledge available on sites like Stack Overflow and the increase in the complexity and heterogeneity of solutions that programmers are developing. It’s very possible that one trend enables and promotes the other. For example an increasing number of posts on a wide range of programming technologies on Stack Overflow increases the confidence programmers have in their ability to successfully combine more disparate technologies into a functioning solution. This in turn inevitably leads to more questions and answers being posted to Stack Overflow about the individual technologies and how to combine them. Which leads to greater programmer confidence….which leads…, rinse and repeat.

fig1

I am not aware of research that looks at how adventurous developers are in taking on complicated multi-language/platform projects the presence or absence of the documentation provided by developer communities. But it would be a good paper.

Poor Official Documentation
Another factor pushing the increasing reliance of developers on search and sites like Stack Overflow is the state of official documentation. The official technical documentation published by platform and language vendors often pales in quality in comparison to the crowd documentation generated by developers contributing to sites like Stack Overflow. There have been several interesting studies done on this topic http://ctreude.ca/2011/02/16/stackoverflow/ and http://www.cc.gatech.edu/~vector/papers/webdocumentation.pdf and http://blog.ninlabs.com/2013/03/api-documentation/ looking at what kinds of crowd documentation is available and how much depth and coverage it provides vs. the official documentation.

An obvious differentiator between official static documentation and the type of crowd documentation provided by something like the Stack Overflow community is the interactivity and the sheer number of potential contributors. Mamykina et al 2011 show that a question asked on stack overflow has a median answer time of 11 minutes http://bid.berkeley.edu/files/papers/mamykina-stackoverflow-chi2011.pdf but with the large number of users on Stack Overflow some questions can start receiving answers mere seconds after posting. Very few vendors can ever hope to offer the level of documentation or developer support that can be generated by the Stack Overflow community machine. However, this does not mean that all official documentation is redundant or unnecessary, in fact our study of links posted to Stack Overflow shows that developers do actually frequently refer to official vendor documentation in their posts http://thechiselgroup.org/2013/03/27/a-study-of-innovation-diffusion-through-link-sharing-on-stack-overflow/

fig2

Again I speculate that there is the possibility that we might be witnessing or about to witness another interesting feedback loop where increasing quality and coverage of crowd documentation reduces the impetus for vendors to provide good quality documentation. Alternatively we may see vendors change their documentation and developer support strategies to incorporate features from sites like Stack Overflow or to start officially participating and providing support through these types of sites (this has been happening for quite some time at the individual level but not sure if its official policy for many vendors yet).

The search engine as the World’s Fastest Debugger
Ok so think about this scenario, you are a programmer writing some code on a particular platform and you encounter a problem. What is the probability that you are the first programmer in the world to ever encounter that error/bug? It happens yes, but as long as you are not working in something very exotic (http://xkcd.com/979/) I think you will agree that the likelihood is pretty low. Now add to this scenario a thousands of communities like Stack Overflow where millions of other programmers are continually posting questions and answers about these types of errors. Finally index it and make the whole thing easily accessible through powerful search engines.

Congratulations you have just created the world’s fastest and smartest distributed debugger. (Note I can’t remember if I came up with the search engine as a debugger or if I am sealing it from someone else, if I am let me know and I will cite you)

Now I am not suggesting that the act of debugging is replaced by having access to Stack Overflow and excellent search engines (after all someone has to post the first answer), rather I am talking about the effects of this stored debugging knowledge is having on the process of debugging. Why would a developer spend time self-debugging when they can quickly access the results of another developers debugging efforts? I know I do it all the time. When I encounter an error, where the solution isn’t immediately obvious, I do a quick search. The cost to doing the search is so low and the potential benefit so large that it’s a no-brainer.

I like to think of the search engine as a debugger concept as an important (but overlooked) part of the trend towards reducing the edit-compile-run-debug cycle that is occurring across all parts of the programming world http://liveprogramming.github.io/2013/about.html. The search engine as a debugger gives programmers more immediate feedback on how to solve their programming problems, hopefully allowing them to solve the problem and move on more quickly. And if you find that you actually are the first one to encounter and solve the problem you can always post the answer to Stack Overflow and get some nice karma!

More importantly though I think the search engine as the debugger is a symptom not just of a simple one dimensional change in programmer practices but rather a wholesale shift in what it means to be a programmer. Our next post asks the question, is it time to refactor our idea of the programmer?

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

How do YOU develop software?

Our research team from the University of Victoria in Canada is interested in which tools and media software developers use to support their software development activities.  So, we are seeking a broad sample of software developers with diverse backgrounds and varied development needs to answer a survey!   The results will be openly published so everyone can benefit from them, but we will anonymize everything before doing so.

Here’s a link to the survey: http://leif.me/devsurvey/?source=chp

The survey should take about 10 minutes. If you are a software developer or a developer in training, we would greatly appreciate your input — it could help us understand how modern developers work and in turn might help us shape new tools that support developers. We will handle your response confidentially. This is a purely academic study.

Thanks a lot in advance!  We’d appreciate any help with distributing our survey — if you feel like tweeting about it or sharing the link with friends or colleagues, please do!

Margaret-Anne Storey, Leif Singer, Brendan Cleary and Alexey Zagalsky from the University of Victoria in Canada.