For me, the magic of building software is putting it in front of the people it will serve. We don’t always think that way, however. Sometimes there’s a sense of “the users are messing up what I created!” But Software isn’t painted art. Software isn’t something that you complete, give it to the users, and then say, “use it the way I designed it.”
Software is a beautiful act of collaboration on both the programmer’s part and the users’ part. There are lots of examples of this, but here’s just one.
When STARSIEGE: Tribes was under development, there was this massive outdoor world but the only way to get around was vehicles. If the game had gone to market that way, we never would have heard of it. But instead, during development, a wonderful bug came up that forever changed the tenor of the game:
Dave Moore, who was working on collisions and character movement, walked into Youngblood’s office. “[He] said, ‘Hey, I’ve been working on this stuff and I have a bug, but I’m not sure if I want to fix it or not,’” Youngblood recalls.
Moore wouldn’t divulge what the bug was. Instead, he brought Youngblood back to his office and told him how to trigger it. “It was, ‘OK, you’re on top of this hill. Run toward the next hill, and when you get to the top, jump and then just keep jumping as you go all the way down,’” Youngblood says. “And I played with it and was like, ‘Holy crap.’” Pressing the jump button canceled the collision with the landscape, allowing the player to accelerate down slopes and frictionlessly launch into the air, attaining much higher speeds than were possible with the jet pack alone. “[It] was ‘wrong,’ but it actually made the game more fun to play,” Youngblood says. “I looked at him and was like, ‘Nope, don’t fix it. This is now a feature.’”(source: TheRinger.com)
No one had forseen skiing as a feature; but it became a critical feature of the series, and it started its life as an unintentional consequence of design decisions. A bug.
I’ll leave you with just one thought for today: How would software development change for you if you were to treat it like a beautiful act of collaboration between your team and your users? More like Jazz, less like building a building?