posted 08-13-99 01:21 PM ET
RLMullen -
Been there, done that.I used to be the "Hired C Gun". Companies payed me outrageous sums of money to come into at the middle or later of one of their projects, and finish it for them on time. Maintainability was not an issue. Any bugs short of fatal crashing the product 1 out of 4 times in 10 minutes was not an issue. They paid through their behinds to get me, and the prices always rose. I always felt sorry for the poor slobs that had to try and maintain my code though. But it wasn't my problem... and I always had another 3 contractors begging for my time whenever I wanted a job. Life was good.
And then, through a quirk of Fate, I found myself in need of guaranteed pay for a period of time. Contracting is a lot of things, but it's not guaranteed. So I took a "permanent" position. And through that position, I got to see the nastiest, ugliest beasts that someone else wrote. Some by "Hired Guns". Others by those that came before.
You know what I mean. It was very educational.
Unlike many Hired Guns, I had worked a lot in teams (and actually had ran teams of Hired Guns), so I am proud to say that my overall coding level was a bit higher for most Codeslingers. But that means that I only commented once in a few hundred lines, (or all the comments was about previous code, and not applicable in the slightest to the final code) and was still making code that was quick to write, and quick to run. That was still a bit of a nightmare for maintainence and upgrades though, unless you knew the reason it was the way it was and was there when it was written.
From a software services point of view, you find its worth the time to add the comments. You or a team-mate is very liable to have to go back into that code and make an enhancement to meet new customer requirements. You find it very efficent to take the time, and write it proper the first time... to make any code you use twice a function that gets called, to make constants a global in one spot... to sit and think through EVERY request and detail and interaction before opening a keyboard. As a wild, wooly codeslinger, you learn to skip writing lines of code that the optimizer is just going to toss. As a Maintainer/Long Term Enhancer, you learn to put those in, for clearness and readibility.
What it all boils down to though, is that there are 2 priorities in Software Engineering. 1) Getting it done on time, and 2) Getting it written for maintainability (debugging), enhancability (expansion), and trouble shooting customer problems. Unfortunately, Objective 1 is counter to Objective 2. The reason? Time. #1 is all about doing what you have to meet the hard deadline to get the product out the door and out to manufactoring. You hope you can finish with enough time for the product to get a good QA, but that's someone else's problem. Generally, QA and the idiot Management that shortened the development time too much to allow a quality product, but left enough in for a panicked product. #2 is one where Time is a luxury. It's more important to have a Quality Product. Customer needs and requirements are the item in stone.
Games are throw-away products. You are only going to get 1, maybe 2 for an ultimate game, expansion. If its a great game, by the time you can crank out a 3rd expansion, the market is going to have been flooded with cheap imitators, good innovators based on yours, and the market demand for your "type" of game is going to be dead or dieing. Only the super-tremendous break out hits can get away with anything more. And if it was a good money maker, than rather than EXPAND the original code, a sequel will be commissioned based of the original game concept/play. But with the competition for the game consumer buck, there will probably be new standards and new fads that have to be incorporated, leaving little to none of the original code for re-use.
As a throw away product, you drop the need for maintainability, enhanceability, and trouble-shooting right out the window. The only thing left is making the schedule. Since is quickly written and quickly running code, if you don't do an expansion quickly, your original team forgets what it was they did and why. The Expanders have to struggle through the slime and mud to hook in the new bits...
The other side of the coin is the Custom App Developing shops. You have a customer that has a set of requirements that have to be met. They are paying you as they have a need to be filled. Odds are, you will have to maintain this product for them for some time. This is often seen with Government Contractors, Financial Software Groups, Utility Companies, etc, etc, etc. This applications are anything BUT throw away products, so its in the Software Authoring Company's best interest to make sure the code is has all the 3 points of long life span quality (Main/Enhance/TroubleSht.) listed previously. If you deliver a low quality product (say SMAC/CtP/Etc), your customer will go to another contractor. And you won't pay the mortgage, or the electric, or the food bill.
That's the difference. It's capitalism at work. In software game writing, maximizing profit is to minimize development time, and to spend the least possible on QA to make the product acceptable to the market. It's inefficent cost-wise to do anything more. In the customer specified needs software authoring, maximizing profits is to deliver the highest quality product that is best fit for a long term of service to a customer that may at any time pay for new options to be added, or a rewriting of current option functionality. Any problem they have, and they will expect your people, or people trained by you, to be able to determine exactly what it is they MISUNDERSTOOD and be able to walk them through what it is they INTENDED to do.
Its really the difference between quality services, and mass product. Too completely different games. The only thing in common is we both use the same base toolsets.
The way to make the software entertainment authoring companies to slow down and invest in QUALITY is to make QUALITY of the product a true concern. As it is now, it's not percieved as a permanent hot issue. And that is what I have been trying to correct and educate my fellow game consumers about.
-Darkstar