When reading the Map Generator thread as part of my work on the Ecology model, I found this quote from Paul Crocker:
And this one from F_Smith:
In other words, two people stopped working on the project as a result of the work I was doing.
I am concerned about this.
I joined the project in November of 1999. At that time, the project had been going for about a year and three demos had been produced.
When I write a program, I first code up a minimally functional core loop, test it, and then add new features to that loop. Most of my friends did the same thing, so I assumed it was standard practice. This worked fine with the procedural laguage we used, and at that time I didn't know that there were languages other than procedural languages.
So I thought that those three demos were the first iterations of the "core loop" that would serve as a structure for the more detailed models that were being produced at the time. I figured that the basic code framework had already been established, and that a well written and well documented procedural model would fit right in.
There were no programmers working on the tech model, so I tested it using my mathematical modeling knowledge and some procedural programs that were easy to write. At the end of this testing, I wrote a detailed design document. I figured that the coder would be able to turn the system into a procedural program like I had done and then fit that into Clash's core loop.
I didn't learn the fallacy of this until a couple months ago. By that time, the damage had already been done. I had spent over half a year using an inappropriate design process, and my model had alienated two people who knew two basic facts about Clash that I did not know:
1) We were not using a procedural programming language.
2) There was no "core loop" or basic program framework that my models would fit into.
Each of these people saw that I was wasting a lot of time by using a flawed design process. They saw this as a symptom of the inability of Clash to produce anything in an efficient manner, so they figured they would be wasting their time by trying to contribute.
They could be right.
In half a year of working on the project, I was never given a primer on what the state of the project's code framework was. I was not told what the programming language could and could not do. I was not given any instructions on how to make models that would be compatible with the programming language and the project framework. I was not told what could and could not be changed. I had to find out all of these things by trial and error, and the result was mostly error.
I wonder what would have happened if I had been given some simple information like this when I started working. If someone had just told me to read the first chapter of "Thinking in Java" last November, I probably would have been far more productive.
The past is over and we can't fix it, but we can take steps to make sure that mistakes are not repeated. I think that every Clash project worker should know the following:
1) The basics of the Java language and OO design.
2) The current state of the code/design framework.
3) What is already coded, and how that affects the models in development.
4) How the model relates to the rest of the project and how it will share data with the other models and the GUI.
Model makers will have to understand those issues before they can progress with any efficiency. Currently, the lack of this knowledge has resulted in a lot of wasted effort. I still don't understand some of the things listed above.
This lack of knowledge and communication also seems to be a big source of frustration. We have not created an environment where people can work intelligently and productively, and this is probably a factor in the high turnover rate. Paul Crocker left in part because of this issue, and F_Smith almost dropped out for the same reason. I think that this was an important factor in the retirement of many other people.
This could also be a part of our recruitment problem. Currently, people who want to work on one model have to go through mountains of unfiltered information before they can even start to see how their work fits in. If the information in parts 2 through 4 above was listed in one place, I think that people would have a much easier time jumping in and working on a little part of the game.
Basically, we have to develop better ways of working and sharing information if we are to be productive and efficient.
There are a few more communication issues I'd like to discuss, but this is the most important so we should concentrate on it for now.
quote: BTW: I also opted out of taking on a major role because . . . I felt that people were worrying too much about minor details rather than tackling the basic framework (FE worrying more about adding coral reefs, etc than how the whole thing fits together). |
And this one from F_Smith:
quote: I have gotten the feeling that my input is not proving valuable to ya'll, since most of the people on the project seem to disagree with my focus on a good object design as the heart of any program. So to avoid any more difficulties, I will now to go back to lurking, permenantly. |
In other words, two people stopped working on the project as a result of the work I was doing.
I am concerned about this.
I joined the project in November of 1999. At that time, the project had been going for about a year and three demos had been produced.
When I write a program, I first code up a minimally functional core loop, test it, and then add new features to that loop. Most of my friends did the same thing, so I assumed it was standard practice. This worked fine with the procedural laguage we used, and at that time I didn't know that there were languages other than procedural languages.
So I thought that those three demos were the first iterations of the "core loop" that would serve as a structure for the more detailed models that were being produced at the time. I figured that the basic code framework had already been established, and that a well written and well documented procedural model would fit right in.
There were no programmers working on the tech model, so I tested it using my mathematical modeling knowledge and some procedural programs that were easy to write. At the end of this testing, I wrote a detailed design document. I figured that the coder would be able to turn the system into a procedural program like I had done and then fit that into Clash's core loop.
I didn't learn the fallacy of this until a couple months ago. By that time, the damage had already been done. I had spent over half a year using an inappropriate design process, and my model had alienated two people who knew two basic facts about Clash that I did not know:
1) We were not using a procedural programming language.
2) There was no "core loop" or basic program framework that my models would fit into.
Each of these people saw that I was wasting a lot of time by using a flawed design process. They saw this as a symptom of the inability of Clash to produce anything in an efficient manner, so they figured they would be wasting their time by trying to contribute.
They could be right.
In half a year of working on the project, I was never given a primer on what the state of the project's code framework was. I was not told what the programming language could and could not do. I was not given any instructions on how to make models that would be compatible with the programming language and the project framework. I was not told what could and could not be changed. I had to find out all of these things by trial and error, and the result was mostly error.
I wonder what would have happened if I had been given some simple information like this when I started working. If someone had just told me to read the first chapter of "Thinking in Java" last November, I probably would have been far more productive.
The past is over and we can't fix it, but we can take steps to make sure that mistakes are not repeated. I think that every Clash project worker should know the following:
1) The basics of the Java language and OO design.
2) The current state of the code/design framework.
3) What is already coded, and how that affects the models in development.
4) How the model relates to the rest of the project and how it will share data with the other models and the GUI.
Model makers will have to understand those issues before they can progress with any efficiency. Currently, the lack of this knowledge has resulted in a lot of wasted effort. I still don't understand some of the things listed above.
This lack of knowledge and communication also seems to be a big source of frustration. We have not created an environment where people can work intelligently and productively, and this is probably a factor in the high turnover rate. Paul Crocker left in part because of this issue, and F_Smith almost dropped out for the same reason. I think that this was an important factor in the retirement of many other people.
This could also be a part of our recruitment problem. Currently, people who want to work on one model have to go through mountains of unfiltered information before they can even start to see how their work fits in. If the information in parts 2 through 4 above was listed in one place, I think that people would have a much easier time jumping in and working on a little part of the game.
Basically, we have to develop better ways of working and sharing information if we are to be productive and efficient.
There are a few more communication issues I'd like to discuss, but this is the most important so we should concentrate on it for now.
Comment