06 Aug, 2008
In my previous post, I wrote about Silver Bullets, and how they’re a dangerous thing to strive for when writing software. Naturally I’m not the first person to write about them
Jeff Atwood’s “Quantity Always Trumps Quality” deals with the underlying cause of Silver Bullet Syndrome – trying to design the perfect system. When I first read the headline, I was already getting ready to disagree, but it makes a very valid point. If you’re not writing code, you’re no learning. Theorizing about best practices and architecture is all well and good, but you can only see things go wrong when you actually code them and see how they work.
“I’ll get to your application in a minute – First, we need to build the framework” by Jeffrey Palermo looks at the problem from a web developer’s point of view. The environment may be different, but the problem remains the same. Well worth a read.
04 Aug, 2008
Legend has it that the way to kill a werewolf is to shoot it through the heart with a silver bullet.
Software is not a werewolf.
That might seem like an obvious statement, but how many times do developers approach a task with the mentality that there’s only one "perfect" way of doing it?
A good illustration of this is to give ten programmers a single, small problem to solve. Chances are, they will all do something slightly different. Even simple algorithms can be done in a dozen different ways. And remember, this is just small stuff here. Once you get to developing full pieces of software, the choice of solutions explodes. Just look at how many RSS readers are out there. Each one solves the same basic problem in a different way.
Games are just as likely to fall prey to the "perfect" way of thinking. Perhaps even more likely, because of there’s always the thought of "we can use this framework for every other game, so it has to be good". This type of thinking sounds smart in principle. After all, re-using code saves money and time. The only problem is that too much time gets wasted on tweaking engines instead of creating the actual product.
Start small, and concentrate on what needs doing. Don’t get caught up in trying to develop an engine that can do everything, because it’s a waste of time. Always remember that what you’re creating can be done in a million different ways, and none of them are perfect.
There is no silver bullet.