Guide For Small Team Programming?
dm writes "I run a small design shop and have been doing more and more web development, including fairly involved back-end programming of what's now essentially become our own CMS. Up to now I've been doing all the programming myself. Now we are working with a second programmer for the first time. I already use version control (SVN) and an issue-tracking system, and I guess we are both decent at what we do — although self-taught, but we both lack experience programming in a team context. Is there a useful guide for this? Most of the tutorials I have seen for Subversion are surprisingly organized from a single coder's perspective. Where else should I look?"
Both excellent books for this situation, in my opinion.
Bogtha Bogtha Bogtha
Sorry it's not about the perfect solution for your problem, but keeping
things in mind about the new context can improve things.
These are the lessons I learned from jobs and life either.
a.) be precise what you are talking about
- missunderstandings tend to poison the atmosphere at work
b.) clear missunderstandings as early as you can
c.) keep in mind that you now have a coworker
- trust him, he can do things on his own
d.) keep in touch with him
- this means you also report to him what you are doing
"primus inter pares" first within a group of similars,
you are the leader? dont behave like "the Führer"
e.) if you recognize anger, missunderstandings etc.. talk about
f.) keep in mind two programers are two human beings
g.) give him all the information you have
- if information is being held away, he would feel "pissed off".
h.)
- "smile"
- behave
- use "please" and "thankyou"
- commendation (wisely used)
g.)
let him bring some of his ideas in, discuss ideads,
if commendation comes from your boss, be modest and inform your boss if it was
your coworkers idea.
Communicate! The basic need for team work is comminication.
These are aspects I learned, when followed, it is allready team work, you don't need
a special conception for team work.
A couple of things -
1. I've had a lot of luck with git, as opposed to SVN. The ease with which it allows you to branch is a huge boon, and might save you some headaches as you work with other guys on your team. You might check it out.
2. I think the 37signals guys have a lot of good stuff to say on this in their book "Getting Real", which you can read for free on their web site(http://gettingreal.37signals.com/toc.php).
svnadmin dump
(edit dump file)
svnadmin restore
A repository is a consistent history. If you want to change the history, you need reconstruct it.
I've been working with CVS and SVN for ~a decade and have never needed to delete one revision. The closest I've had to come to this is extracting a new repository from a subset of an old one. "svnadmin dump" let me do this without any trouble.
What's the stop the admin from reading the confidential info just before doing cvs admin, anyways?
æeee!
There is precious little research to date comparing the efficiency of two skilled and experienced programmers doing full-time pair programming with what they produce working alone except when they feel the need to collaborate in real time, and what there is isn't nearly as favourable.
One interesting data point is the study Evaluating Pair Programming with Respect to System Complexity and Programmer Expertise by Erik Arisholm et al. from Simula Research Laboratory, published in the February 2007 issue of Transactions on Software Engineering. There's a good summary on the Catenary blog.
This study is more realistic in that the research subjects were professional Java consultants, rather than college students. However, it appears the study did not allow the subjects to collaborate with anyone outside the pair (or at all, for the solo subjects).
The abstract of the study:
A total of 295 junior, intermediate, and senior professional Java consultants (99 individuals and 98 pairs) from 29 international consultancy companies in Norway, Sweden, and the UK were hired for one day to participate in a controlled experiment on pair programming. The subjects used professional Java tools to perform several change tasks on two alternative Java systems with different degrees of complexity. The results of this experiment do not support the hypotheses that pair programming in general reduces the time required to solve the tasks correctly or increases the proportion of correct solutions. On the other hand, there is a significant 84 percent increase in effort to perform the tasks correctly. However, on the more complex system, the pair programmers had a 48 percent increase in the proportion of correct solutions but no significant differences in the time taken to solve the tasks correctly. For the simpler system, there was a 20 percent decrease in time taken but no significant differences in correctness. However, the moderating effect of system complexity depends on the programmer expertise of the subjects. The observed benefits of pair programming in terms of correctness on the complex system apply mainly to juniors, whereas the reductions in duration to perform the tasks correctly on the simple system apply mainly to intermediates and seniors. It is possible that the benefits of pair programming will exceed the results obtained in this experiment for larger, more complex tasks and if the pair programmers have a chance to work together over a longer period of time.