Original Post
Recently I read some archives of another message board in which there was a discussion about the difference between commercial chess programs and amateur/hobby chess programs.
The general consensus was that the difference was not that commercial programs were using some secret methods, but that the authors of the commercial engines had created a good system that allowed them to test out new ideas quickly, and use an automated testing system to determine if the change was positive or negative.
I think this probably applies to good code vs. bad code in general, so how do you create a system where you can rapidly try out new ideas and make changes to a program? Automated testing probably isn''t too hard. The closest thing that I can think of is a kind of "firewall" method, or modular approach, where you section off different parts of the program, so if you need to make a change to one part, you minimize the code you change which should result in a rapid changing process, and shouldn''t break the program. Is that what I''m looking for, or is there something better?