The great stampede was on. They had almost no time to create a company out of a galaxy of ideas, people who had never worked together, and ideas that were untested and very possibly tragically flawed. All this required was an incredible sense of imagination, a Director presentation to end all presentations, and some workable technology. In other words, no one was going to sleep for the next fourteen days.
Peter and Todd had delegated the appropriate components to each team leader, and were now flying back and forth between all the groups playing den mother, judge and jury, and confidant. Arguments broke out in early hours of the morning as the server team was not delivering data to the network team which was not broadcasting the data correctly to the clients, which were running too slowly to manage the rendering engine... it never seemed to end. Everyone claimed to have the most important piece of information, and no one was playing nice with the others. The "herding cats" analogy was coming to life. And there were fires breaking out all over the building.
The blazing fire of the moment was on the screen in front of them. It was one in the morning, and the client team was trying out a standalone version of the software. Standalone meant that the machine was not actually receiving network data from other machines, but instead had a dummy set of data on its own hard drive that it was feeding to the client software to fool it into thinking it was receiving data from other machines. An avatar, or representation of another user was in the middle of the screen, standing on a basic grid of squares. Standing was a bit generous, since the avatar was actually just a cube. The rendering engine was not even close to showing an actual, articulated human figure, so the square was the stand-in tonight. This was the first adolescent version of their virtual world. It actually looked a little forlorn on the big twenty-one inch monitor. However, all they cared about in this test was whether the software was receiving the fake positional information correctly, and whether their cube was moving to the right place when it received that information. If it was told to move to a square at a certain set of coordinates, it would be nice if it actually got there correctly. This was the dreaded user synchronization problem. Everyone had to see everyone else's avatar at the same place at the same time. Otherwise, one person would be talking face to face with an avatar, while the owner of that avatar would be looking in a completely different direction on their machine. Not exactly conducive for building their community of the future.
Kevin and Dan started up the software, and then started pouring the dummy data into it. Dan was lurking behind Peter and Todd so they could look closer. "We have the data organized so the avatar should move one square at a time down the first row of squares, then two squares at a time down the second row, three squares at a time down the third and four down the fourth. If we have any cumulative problems, this should flush them out."
Everyone unconsciously held their breath as the avatar started responding to the data. Obediently, it shuffled one square at a time down the first row of squares. Everyone breathed out. It came to the end of the first row, and then jumped smartly to the second row. "So far so good," whispered Todd.
After a moment, the avatar set off down the second row, two squares at a time as ordered. As it reached the end of the row, Dan said, "And here is where the wheels fall off."
The avatar moved to the third row. It prepared itself, and then sat there. And sat there. Finally after a few excruciatingly long moments, it moved three squares forward. Except it was back on the second row. A groan went up from the assembled watchers. Another moment of hesitation, and then it was two squares forward, but back on the third row. From then on it was random wanderings across the screen, sometimes smoothly, sometimes in a sudden jerk and jump. Todd leaned back and sighed. "So what the hell is wrong?"
"Actually," said Dan, "we're not even sure what component is screwing up, let alone what the screw-up is. We are unfortunately in a world of multiple-dependency errors right now. What you're seeing is probably the result of several things going wrong in sequence, not just one. It’s pretty common this early in a software life cycle. We suspect the dead-reckoning system is a large part of it, which would account for the jumping around act, but there could be some buffering silliness going on also."
Todd ran his hands through his hair. "Are we sure about the timing on the absolutes?" Todd had made a decision earlier that was now threatening to haunt them. Since everyone knew that the amount of data being pumped around was going to be vital, everywhere they could minimize data transfer increased their chances for success. This had brought them to a decision on the positioning packets that were being sent. Since every user needed to know where every other user was in their virtual world, these packets were vital. However, a shortcut had been taken to try and minimize the action. Since most people were probably going to move their avatars in a straight line when walking, the system didn't always send the actual positional information every packet. Rather, it sent what was known as dead-reckoning information. In essence a plus or minus from the users previous position, instead of the actual position itself. This lowered the amount of data being sent. However, after a while a certain amount of "drift" would work its way into the system, and the avatar would slowly move out of position from where its owner actually had it. To correct this, every now and then the system would send an "absolute" packet instead of the "relative" packet, with the actual positional data in three dimensional space. The avatar would correct to that position and then work relative from that new correct spot. If the drift was small enough, the user would never notice the avatar nudging itself into the right spot occasionally. However, if a large amount of drift had worked into the system before the next absolute packet arrived, the viewer would see the avatar suddenly snap into a new spot. This could be the problem they were currently seeing,. Or it could be something completely different. Or a combination of things going wrong in sequence. There was no way to tell.
Welcome to software hell. Conducting a symphony was easy compared to this. Not only all the components have to work correctly, they had to work correctly with each other. Timing was everything, and right now the timing was significantly off. Todd stared at the screen as the avatar continued to spastically shoot back and forth across the screen. "Okay, decrease the time between the absolute packets and see if that minimizes this problem. If it does then we know what it is. If not, it's back to the old drawing board."
Todd got up with Peter and walked back to their offices. As per valley tradition, they had taken the two corner offices. Peter followed Todd into his office and closed the door behind him. "So, is it time to start panicking yet?"
Todd laughed as he sat down behind his desk. "We are not even close to panicking yet. You have to prepare yourself for a lot of divots in the beginning. This isn't like our little product back in England. There we were all working on the same product at the same time. This is more like we are working on five products simultaneously. And there are significant timing issues because of that. We just have to accept the fact that there are going to be some teething problems."
"I agree with all that, but we do have a small problem. By the end of this month we have to have a presentation ready to go that will blow away every VC in the valley. If they buy that, then they buy our concept. That is great, except the next question on their lips is going to be whether we have the team that can take that concept and turn it into a reality. And only a working demo is going to convince them of that. Again, it can be very basic, but it has to show the concepts, and it has to work. I'm just a little worried right now. Is there anything we can do that will allow the teams to work together closer, or at least be aware of what the other teams are doing?"
Todd swiveled back and forth slowly. "Well, we could implement a Notes system, and then have all the teams deliver updates and issues to the appropriate discussion threads. That way we have a record of what people are doing, what other people's responses are, and where conflicts are arising. If people are faithful about submitting to the threads, it will flesh out problems fairly quickly."
Notes was an odd little program created by a software company called Lotus, which was then sold to IBM. Notes was a program that defied description, which was part of the problem that Lotus had selling it by themselves. It was a program that really was based around the idea of sharing ideas and information among many people. Part telecommunications program, part database, part chat, Notes was a way to formalize the dynamics of a company and have everyone take part in the forward momentum of the enterprise. Sounds simple right? Not surprisingly, Notes wound up being a surprisingly complex piece of programming. For a program that was hard to define, it was even harder to create. But when used faithfully by an organization, it almost became a diary of the day to day running of a company. An extremely valuable tool in other words. Todd knew that if all his teams used Notes together, then they would know at all times decisions that were being made in other teams that affected them. Then they could enter the discussion "threads,” or conversations, themselves to create a real time forum for problem solving.
Peter opened the door. "That sounds like the perfect thing to do. Why don't you see how quickly we can get a site license and get it up and running. I think this will spotlight our choke points in the development process very quickly." Peter then stopped for a second and then slowly closed the door. "Here is another question, and it may be a little early to ask but I will anyway. Do you think we have the right team?"
"Peter, I don't think we even are close to making that kind of assessment. This team has barely been together, but if you look at them, they are all software rock stars. These guys have written some of the most important code in the valley. Everything from Apple's system software to Digital's database code to leading communications layers. Every single one the software equivalent of a home run. There is a reason why we picked the people we did. I feel perfectly comfortable going into battle with this bunch. "
Peter thought about this for a moment. "I think I want you to do an evaluation of everyone, and tell me where we have holes on the team."
"Peter, I won't do that. It's just too early. Let's let them gel first before we start dropping in new team members. Software teams are like sports teams. You can upset the chemistry very easily if you change them around too much."
Peter re-opened the door with a snap. "Fine." He walked out without another word and closed the door behind him.
Todd looked at the back of the door.
"What the hell was that all about?"