More on Reuse

posted in Readme.txt
Published February 09, 2009
Advertisement
Cross-posted at Code.Implant.

Jeff Atwood of the Coding Horror blog posted his latest on reuse with an article entitled "Don't Reinvent The Wheel, Unless You Plan on Learning More About Wheels", in which Atwood advocates reinventing the wheel as a "call to arms for deeply educating yourself about all the existing solutions".
Avoiding the reinvention of the proverbial wheel is a standard bit of received wisdom in software development circles. There's certainly truth there, but I think it's a bit dangerous if taken too literally -- if you categorically deny all attempts to solve a problem with code once any existing library is in place.
I don't think anyone is saying that you should avoid reinventing the wheel at all costs. The reality is that there are times when rolling your own is desirable. As Joel Spolsky said:
And that's where I learned a key lesson in software architecture: for your most important, mission critical stuff, you have to use a tool that is one level lower in abstraction than ideal. For example, if you're writing a cool 3D shoot-em-up game (like Quake, around the same time period) and your key number 1 differentiator is to have the coolest 3D graphics, you do not use whatever 3D library you can find. You write your own, because it's fundamental to what you do. The people who use 3D libraries like DirectX are using them because they are trying to differentiate their games on something other than 3D performance. (Maybe the story line.)
Bottom line: the issue of reuse is not nearly as black and white polarizing as the Coding Horror blog wants to make it.

There are times to reuse and times to reinvent the wheel - knowing the difference is one of the keys to being a good software developer. Even beyond that, it really goes back to basic engineering tradeoffs.

In most cases, however, the software developer who embraces reuse as much as possible will be in a better position and have better opportunity than the software developer who likes to reinvent wheels. It's often a missed fact that invention and innovation occurs only through an iterative process of work built on top of prior work, which quite frankly is pretty much the definition of reuse.

Besides, as Jesse, a commenter in the Coding Horror blog post said, "Doing something that you know can be done is not invention."
Previous Entry On Reuse
Next Entry GDC
0 likes 0 comments

Comments

Nobody has left a comment. You can be the first!
You must log in to join the conversation.
Don't have a GameDev.net account? Sign up!
Advertisement