Team programming

Programming Topics (Computer Chess) and technical aspects as test techniques, book building, program tuning etc

Moderator: Andres Valverde

Team programming

Postby Alessandro Scotti » 11 Oct 2005, 12:26

Hi all,
I don't think I am the only one to feel that programming a chess engine can be, at times, a very frustrating task... why, recently even an outstanding name like Ed Shroeder is having a bad moment because of a bug! :shock:
In those times, posting in forums or exchanging emails may be good, bu tit's still different from having someone else that care about the engine just as much as you do...
Of course, the same is true when the engine improves and grows stronger and you'd like to share the joy with someone! :mrgreen:
On the other side, having more people working on the same engine could be extremely productive from a technical standpoint. Ideas will be flowing much faster and it is also possible to "specialize" on some parts of the engine, so getting more experience and knowledge in selected areas.
And I've just outlined just a few items, there could be much more (also on the negative side) but you get the idea.
One example that comes to mind is Spike, which has grown very strong in a relatively short time... I for once would be very interested in knowing more about the teamwork that's behind this great engine, even more than its technical details. Maybe Daniel could do an interview? :idea:
So my question is: have you considered joining forces when working on a chess engine, and if so what do you think would be the ideal team?
Up to a while ago, I thought of my own engine as a "personal" accomplishment and would have answered "no". But in the last couple of months or so I've been pondering the question some more and now I'm not so sure...
User avatar
Alessandro Scotti
 
Posts: 306
Joined: 20 Nov 2004, 00:10
Location: Rome, Italy

Re: Team programming

Postby David Weller » 11 Oct 2005, 13:31

Hi Alessandro,

Testing is so time consuming, that, a good 'team' could be N programmers M Chess Pros, and 10*M*N testers :wink:

If you didnt have to test anything, your programming load would probably seem/be much lighter ...

I would be interested to know how this might be coordinated

David
User avatar
David Weller
 
Posts: 135
Joined: 26 Sep 2004, 20:30
Location: USA

Re: Team programming

Postby Dann Corbit » 11 Oct 2005, 17:59

Pair programming is one of the really good ideas from extreme programming. I think for the best results, your collaborator should sit right beside you.
Dann Corbit
 

Re: Team programming

Postby Daniel Mehrmann » 11 Oct 2005, 20:24

Alessandro Scotti wrote:Hi all,
I don't think I am the only one to feel that programming a chess engine can be, at times, a very frustrating task... why, recently even an outstanding name like Ed Shroeder is having a bad moment because of a bug! :shock:
In those times, posting in forums or exchanging emails may be good, bu tit's still different from having someone else that care about the engine just as much as you do...
Of course, the same is true when the engine improves and grows stronger and you'd like to share the joy with someone! :mrgreen:
On the other side, having more people working on the same engine could be extremely productive from a technical standpoint. Ideas will be flowing much faster and it is also possible to "specialize" on some parts of the engine, so getting more experience and knowledge in selected areas.
And I've just outlined just a few items, there could be much more (also on the negative side) but you get the idea.
One example that comes to mind is Spike, which has grown very strong in a relatively short time... I for once would be very interested in knowing more about the teamwork that's behind this great engine, even more than its technical details. Maybe Daniel could do an interview? :idea:
So my question is: have you considered joining forces when working on a chess engine, and if so what do you think would be the ideal team?
Up to a while ago, I thought of my own engine as a "personal" accomplishment and would have answered "no". But in the last couple of months or so I've been pondering the question some more and now I'm not so sure...


Leo interviewed the Spike team allready for CVSN :) May he wants make it public ?

Best,
Daniel
User avatar
Daniel Mehrmann
 
Posts: 127
Joined: 02 Oct 2004, 06:10
Location: Germany

Re: Team programming

Postby Anonymous » 12 Oct 2005, 21:59

I think coordination is possible. The internet offers many way to work on a problem (be it a program or something else).

All you gotta do is really do it and not only talking about :) However i can understand that some guys might have problems with that. If a team of say 4 or 5 guys work on a program together one might feel "hey this guy can see my code ... gnaahh i don't want that". If many peeps work together this means sharing ones skills and talents , too. So others can see your tricks... maybe this is why many peeps talk about it but noone actually makes it. If you know the guy personally, cuz he's living around the corner that is easier i think ... !??!

All you need is:

-A project manager
Usually this guy is not an expert in programming. He just needs to know a little bit about everything. He needs to know basic programming , basic chess and ... he needs to know how to make a plan with milestones, he needs to define goals.

-programmer(s)
One guy working on this, the otehr on that.

-tester(s)
Making enginematches and running testsuits.

Flow of Information:
Email exchange between the programmers and the manager. Every line of code is being spread , otherwise programmer A does not know what programmer B does. And Manager C does not know how far the current stage of the project is if he gets no information :)
After exchanging emails on a daily basis , a tool like teamspeak ist used to do small comferences and talk things over. At a later stage , when an engine that plays chess is done, the testers get int and run their thing. It's important that they run some sort of "standard tests" to really see improvements ... you can't see improvements if you run different tests everytime eh?

That's all you need. Oh .. yeah ... and again you gotta trust the others a lil bit and should not hold back anything.

Cheers
Anonymous
 

Team Programming in Spike

Postby Volker Böhm » 14 Oct 2005, 15:08

There are interviews on how we organize spike programming, for example somewhere in the arena web pages.

But for short here:

Ralf and me haven?t got much time to program thus we didn?t expect to get a good chess engine of our own. When doing it together it is more fun and less work (sounds good doesn?t it?).
It was easy to work together as we are good friends for a very long time. Here is how we devided our job:

Programming:
Ralf: Evaluation
Me(Volker): Interface, Search, Basic-Datastructures, Pruning

1. Rule: We are doing what we like to do. If anybody would like to add some code in the "others" aerea it?s ok. Just send the change to the partner.
2. Rule: Explain what you are doing and what you have done. Even if not expecially in your own code.
3. Rule: If ever you have an idea for the "others" code, tell him!
4. Rule: Don?t change anything that is not tested enough.
5. Rule: Add integration hours where you put your code together and get a new release.

Any more questions?

Greetings Volker
Volker B?hm, Spike Team
Volker Böhm
 
Posts: 66
Joined: 27 Sep 2004, 18:52
Location: Germany

Re: Team programming

Postby Roger Brown » 16 Oct 2005, 16:24

Hello Volker,

I have a question....

Would you say that your friendship and fun approach to the task made it bearable to program Spike as a team?

Would that be a critical element?

I am asking because your reply seems devoid of technical details and more a focus on intangibles...which I find fascinating.

Oh, thanks for Spike!

Later.
Roger Brown
 
Posts: 346
Joined: 24 Sep 2004, 12:31

Re: Team programming

Postby Volker Böhm » 16 Oct 2005, 18:31

I think it is technical easy to distibute chess programming. The only thing that may not easily distributed is the basic data structure and basic methods (board representation, move generator, ...). Once you have that piece of code fixed and good working it is easy to seperate all other tasks.

As both of us are programming just for fun with little time it is neccessary to keep a good mood. There are many opportunities to dispute while programming or playing in tournaments.
IMHO the most important thing is to keep it fun for all participants and to allways find good trade-offs.

Greetings Volker
Volker B?hm, Spike Team
Volker Böhm
 
Posts: 66
Joined: 27 Sep 2004, 18:52
Location: Germany

Re: Team programming

Postby Pradu » 16 Oct 2005, 18:39

Volker B?hm wrote:...There are many opportunities to dispute while programming or playing in tournaments...
Greetings Volker


Disputes create serious problems for team programming in computer chess. Picking a partner who thinks exactly like you isn't good for team programming either.
User avatar
Pradu
 
Posts: 343
Joined: 12 Jan 2005, 19:17
Location: Chandler, Arizona, USA

Re: Team programming

Postby Volker Böhm » 18 Oct 2005, 12:12

That?s true. It is the ability for compromise that is important.
Volker B?hm, Spike Team
Volker Böhm
 
Posts: 66
Joined: 27 Sep 2004, 18:52
Location: Germany


Return to Programming and Technical Discussions

Who is online

Users browsing this forum: No registered users and 36 guests