views:

69

answers:

6

Im involved with an academic software project in which 2 half-time PhD students manage 4-8 students. Turnover in this project is high, because students join for their 10 weeks Bachelors thesis or six month Masters thesis, then graduate and are gone forever.

Each thesis usually involves the development of a new feature and while we stress the responsibilities for fixing bugs in the work of other students, we have slowly reached the point where shared code-ownership does not exist anymore. People rarely fix issues in other peoples code, but leave their new features in a state, which would need cleaning desperately.

So the question:

  • How do you encourage shared code-ownership if people are only involved in a project for a short time?

P.S.: Except for failing the students, we have little leverage.

+2  A: 

My recommendations, short of failing them is deny them commit access. Do code reviews. If their code doesn't cut it, then don't let them commit it(and therefore, it basically doesn't exist as part of their thesis until they fix it)

To get them to fix other peoples bugs, have a week or something where commit access is denied to everyone unless its a bug fix and tell everyone that they must test everything in the program. If they refuse to help test, then deny them commit access permanently.

Believe it or not, having to submit patches rather than having commit access is enough of an annoyance that it will at least help the code ownership problem.

Earlz
We do kind of strict peer review on patches prior to commit, which might be part of the problem, actually.
Christopher Oezbek
+1 especially for requiring code reviews. It's simple - the long-term employees (the 2 half-time PhD students) are the owners of the project, and all code that anyone else wants to check in has to get reviewed by one of them.
aem
+2  A: 

Basically, you can't. Having someone take ownership of something involves them becoming part of a community and having a stake in the final outcome of the project. Since your students are there for a very limited time, they have little incentive to join the community. Since they'll be leaving forever shortly, they are unlikely to have a stake in the final outcome unless they plan to go into a field where your project may be a useful tool for them.

So, since your current arrangement cannot achieve the results you wish, you are going to have to think deeply about changing the arrangement. You need to ask a lot of questions like: Why do these students do a 10-week or 6-month stint with you? What are they supposed to get out of it? What are you? Are these even compatible goals?

swestrup
+1 for the last 3 questions.
Peter Recore
Thanks swestrup! Most student find the project we develop exciting and in particular their own question involving and thus join us. We have tried to improve their involvement by celebrating our achievements (downloads, praise by users). Venturing out in code from other students is still only reluctantly done :-(
Christopher Oezbek
What are they supposed to get out of it? * Learn as much as they can about software development in a team * Pass their thesis to graduate * Make a little bit contact with the scientific worldWhat are you? * My own role used to be one of the PhD in charge. I have now left the project and see that my successors are struggling to keep the project progressingAre these even compatible goals? * It seems more and more that people put their own success above the teams.
Christopher Oezbek
+2  A: 

A wise professor once said, "Students do what you inspect, not what you expect." You need to make shared code ownership a part of the students' grade determination.

jerry
We found that students laugh at us if we threaten to give them bad grades. :-(
Christopher Oezbek
@Christopher, well maybe you should give them bad grades and see if they laugh afterwards (note: I'm evil)
Earlz
+1  A: 

Make someone's thesis be related to "identifying and fixing bugs"

Make someone else's be "develop a comprehensive test suite"

Do you not have the ability to assign grades based on code quality? Or are your projects strictly pass/fail?

Peter Recore
The problem is that many students find a pure bug fixing thesis much less interesting that develop the new super-cool feature X.But we recently found two guys who want to expand our test suite to UI testing. Yeah!We assign grades, but most students don't care too much, unfortunately.
Christopher Oezbek
+1  A: 

Increase test cases and incorporate code coverage as a requirement of a code check in

Brian
How will this make them venture beyond their own code?
Christopher Oezbek
As they write new code, they have to maintain or increase the code coverage numbers. Fail the build if coverage falls below a percentage. An easy way to increase compensate code coverage is writing tests on un-covered code.
Brian
+1  A: 

It seems like you may not want to have severe punishment as your first line; after all, you presumably need to be able to keep recruiting students. Preferably good ones. So: incentives? Even stupid ones? Like scoring points for the number of existing bugs fixed, or for doing the stuff Brian suggests? A reputation score of some sort? We know programmers are never motivated to spend time they never would otherwise by arbitrary point systems, right? Oh, wait....

LH