I took 'The Psychology of Computer Programming' by Jerry Weinberg along with me on the yearly ski trip at the end of February. I've found Weinberg to be great trip reading, as there's usually a little more time for reflection.
I really enjoyed this book, but feel like I should have read it 15 years ago when I worked on a large (50+ persons) programming team at NCR. It would have been hugely profitable to pass the book around to the team leads and interested parties, and I think that the resulting dialogue and choices *could* have made life easier in the trenches. We had an interesting mix of energetic youths, grizzled veterans and corporate drones that reflected the issues Weinberg discusses.
There's one paragraph that keeps resonating, something he mentions in his 25-year comments reflecting on the original text:
"In any case, the basic rule for size and composition of programming teams would seem to be this - for the best programming at the least cost, give the best possible programmers you can find sufficient time so you need the smallest number of them. (p. 69)"The wisdom of that rule has been supported by all my subsequent experience with three amendments:
1. The smallest number is never a single programmer.
2. "Sufficient time" must include time for team formation. Therefore, there is often a great advantage to choosing an existing team with a track record.
3. It's often an even greater advantage to get your teams started before you have a really critical problem for them to work on.
In my experience, I've found the same thing to be true. I see echos of Brooks Law, Lister and Demarco's 'gelled teams' and even XP's pair programming in these thoughts. Behind them all, I think, is the recognition that individual excellence, as worthy as it is, is incomplete. Collaboration, relationship, is an enormous part of how humans are made and how they work effectively. I like saying 'Everybody is smarter than anybody', but I think the Preacher's words 'Two are better than one, because they have a good return for their work' remains the best way of saying it.
I found, once again, during the dot com bust that companies come and go, but relationships last. There are people who I've worked with over and over again since the last time we worked for the same company, because we like and respect each other, and we do good work together. Fostering and building on that is enjoyable for us, and worthwhile for the buyers of our services. That's what I really want to do with both this blog and my career.