Some developers love to gold plate their software. There are various shades of .. er, gold, I guess, but it's usually considered wasteful to fritter away time gold plating old code in the face of new features that need to be implemented, or old bugs that could be squashed.
Developers are fascinated by new technology and are sometimes anxious to try out new features of their language or environment or to create their own implementation of a slick feature they saw in another product -- whether or not it's required in their product. The effort required to design, implement, test, document, and support features that are not required lengthens the schedule.
But gold plating your code isn't all bad. Perhaps the most remarkable tale of successful developer gold plating I've ever read is the one Blake Patterson outlines:
Not long ago I purchased a new-in-box Atari Jaguar, complete with Jeff Minter's psychedelic sequel to Tempest, Tempest 2000. It's an amazing game that's been ported to many other platforms, but the consensus is that none are as solid as the Jaguar original. Having played several of the ports, I'd have to agree.
![]()
An interesting thing about "the world's first 64-bit console" -- its controller was, as the Brits would say, fairly pants. It was large, sported a calculator-button array for game overlays (like the Intellivision controller), had no shoulder buttons, and featured only a D-pad for directional control. (ed: certainly one of the weirdest members of the game console controller family tree, to be sure)
![]()
As the arcade original is controlled with a rotary spinner knob, the D-pad falls rather short of providing ideal game control.
![]()
But, of course, being such a savvy chap, Jeff Minter realized this.
Jeff wrote in support for an analog rotary controller ... that did not exist. Neither Atari nor third party manufacturers produced such a controller in the Jaguar's heyday. Jeff, as I understand it, hacked his own together by wiring an Atari paddle controller into a Jaguar controller. In the years since the Jaguar's passing, a few small operations have offered modified Jaguar controllers with spinners wired into them for purchase.
Jeff Minter's an interesting historical figure in the computer gaming community, as the author of several 8-bit computer era game classics. I've talked about his long-standing interest in audio visualization here once before. He's still creating games today; his latest is the Xbox Live downloadable title Space Giraffe. Jeff has a blog that he updates fairly regularly.
Still, I'm amazed that Jeff added code to a commercially shipped console game to support a completely optional homebrew spinner controller of his own creation. That's the very definition of "not required". This code lied dormant in the game until a handful of enthusiasts, fourteen years later, cobbled together custom controllers to play the game as it was originally intended by the author.
If that isn't the ultimate case of gold plating your software, I don't know what is. My hat is off to you, Mr. Minter.
| [advertisement] Peer Code Review. No meetings. No busy-work. Customizable workflows and reports. Try Jolt Award-winning Code Collaborator. |
Posted by Jeff Atwood View blog reactions
« Maybe Normalizing Isn't Normal Dealing With Bad Apples »
That was a bit of gamble I suppose.
There is nothing great in the fact that it worked.
I mean what is the point?
The point was he was building in capability that didn't exist, but could. It's the same as planning your objects for behavior that is not part of the spec, but that you know will be asked for once your software is "out in the wild".
I get critized regularly, by my boss no less, for writing an "elegant solution" when all he wants is something quick and practical. And yet, over and over, some user has wanted something down the road that the "elegant solution" could cover and the "quick and practical" would have needed to be completely refactored to produce.
Most of the time it's just a matter of thinking about what you're doing, and planning ahead a bit. There's not that much extra work in doing it well, and a lot of work saved.
In Mintner's case he may just have been bored with the whole thing that week and wanted a new challenge "for fun", knowing it might be valuable someday. Boredom, not necessity, is the mother of invention.
What can you really say about a guy whose major contributions to my childhood were llamas (<a href="http://en.wikipedia.org/wiki/Llamatron">http://en.wikipedia.org/wiki/Llamatron</a>) and drugged up camels (<a href="http://en.wikipedia.org/wiki/Revenge_of_the_Mutant_Camels">http://en.wikipedia.org/wiki/Revenge_of_the_Mutant_Camels</a>)?
Gareth on July 16, 2008 04:13 AMI don't know if this is gold plating as well, but for me as programmer it is less interesting to see what the final product looks and feels like to the enduser, than it is to take care how the programm is written.
Sometimes I change huge parts in a project, because the current implementation sucks. Don't get me wrong, it works, but it's badly designed, badly written... it's just not good. If I replace one working implementation with another one, the user will not notice, the marketing will not notice, my bosses won't notice. So what's the point of doing it? Isn't it a waste of time?
My boss certainly thinks so. I have a different point of view. I want to make high quality code. Code that is easy to understand, easy to extend, flexible, fast, etc. It's not satisfying to code a piece of crap and just make it look good. Outside it's great, inside it's crap. That is almost cheating the user. It's like having a totally crappy car, that almost breaks to pieces. You clean it, you give it a new finish and you make it look like new. Then you sell for a high price, but in reality the other person has bought a very old, crappy car that might go to hell in about 6 months.
Also if my boss one day comes around and tells me about a great feature, I might be able to implement it in 3 days thanks to the clean code. With the old code the same feature would have needed a whole week, would have led to more crappy code, may have never worked perfectly and so on.
Mecki on July 16, 2008 04:15 AMHey Jeff, your comment system changed my bare URLs into HTML tags when I misspelled the captcha - looks like those then got HTML-escaped as above :(
Gareth on July 16, 2008 04:17 AMthe thing that strikes me is we dont know how much time was spent on producing code to implement the extension that was used 14 years later.
Did this functionaility cost the games company money?
aka gold plating is money in the software game - all the current wisdom is about shipping only what is required at the time...
coder on July 16, 2008 04:18 AMAs everything, this is a balance. Adding code that has to be tested, fixed, tested again, fixed again, ad nausea and then never used is not really a productive (or personally satisfying) use of my time.
On the other hand, taking pride in the quality of the code you produce is.
The best (or worst) example of gold plating causing problems in the years to come is realloc. The Swiss Army knife of memory management in C. Yuck!
Dovetalk on July 16, 2008 04:57 AMThat is just the exception. The rule still is that the overhead you write without a use case won't be needed in the next version of your software. (At least not the way you coded it.) It is safe to live and code by the rules. Not doing it is either fun (this case above I guess) or a worthless risk (for a software company).
Agile methods are talking about the rule, about the general case.
Not living by the rules can be fun. It can be dangerous. It can put to much overhead to a software and slow the development process down. It can even bankrupt you. Or it can make fans happy years later. Cool story. :-)
David on July 16, 2008 05:13 AMmaybe he just did it for his own benefit? did the game sell with this feature proudly on the packaging?
if it did, then certainly this is gold-plating, because it makes the product look better than it actually is. otherwise, its just some coder, doing what he wants with his code... and quite rightly. he's allowed to enjoy the game he made, precisely how he wanted to right?
sure he could have spent the time coding something else... but what?
Jheriko on July 16, 2008 05:17 AMit took me a while to find this article, but I believe it is a clear example about how gold plating can save a project :]
http://thedailywtf.com/Articles/The-Cool-Cam.aspx
sebastian on July 16, 2008 05:34 AMThis is just to confirm that Tempest 2000 for Atari Jaguar is one of the most pleasant game I ever played ! Spent tons of hours with that mindblowing ol'school techno in my headset. Sometimes the screens becomes so crowded that you just navigate by sound and sixth sense - the jedi way !
If you did not try it, have a look, it's still a good expedience 14 years later !
I always thought the Jaguar got a bad rap. I loved the Aliens vs. Predator game for it, and the overlays were extremely useful in that game. Kind of sucked if you lost them, though.
Asmor on July 16, 2008 05:36 AM@coder;
This didn't cost Atari anything since The Yak was an outside contractor working for his own company and would have taken time off whenever he wanted to look after his farm, walk in the hills or tend his great beard. Atari knew they would get a great product and was willing to support him to create it but if it wasn't up to scratch he would have had to absorb the financial hit not them.
He really is one of the outsiders those few great individuals who despite (or perhaps because of) their own personal ethics and beliefs have left a massive impression on the lives they have touched.
In the certain gaming circles he is revered in exactly the same way as RMS is in the Free Software (with a capital F) community.
When you consider he never did anything original his whole career has been built on taking something somebody else has created and just putting a little sparkle into it the comparison to RMS grows even stronger.
My favourite project he is linked to is Nuon. The software that it's developers wanted to see in all dvd players. He ported Tempest to it and some nice sound to light stuff (which is one of his favourite projects) only to see the Nuon system disappear without a trace. No problem let's start porting all this stuff to the next system on the list, xbox 360 live.
Everybody who meets him likes him as long as they know what they are going to expect beforehand he might surprise a few guys who think the hippy has left software.
sparkes on July 16, 2008 05:37 AM@sebastian:
cool article you found!
but I wouldn't call it gold plated code. It's a real feature. Not in the specs, but clearly a useful feature.
There is some value in building code like this for an application.
It provides a chance for a programmer to explore a new technique in an part of the application that's not likely to get a lot of use or complaints if they screw it up. But it will still likely go through the QA process, so the programmer get's important feedback in addition to the practice. Now for the next project they'll have a better idea of what is possible and can plan to take better advantage of the platform. Finally, there's a chance that this 'extra' feature becomes a real hit with customers.
Joel Coehoorn on July 16, 2008 05:43 AMNice post. Gold plating is generally wasteful and not The Right Thing. But dammit, we're programmers. This is not just our profession, it is our art. And the (good) artist should be appreciated for occasionally stretching himself and the work, for signing his piece with a bit of flourish.
John Pirie on July 16, 2008 05:47 AMThe point you should see is not about the code. The point you should see is that the original controller for the system did not match the game play.
It's not about creating the best code; it's all about the user. By having this foresight to predicate the user's reaction created a successful product.
The code could have been a candidate for The Daily WTF, but the user doesn't care because the got the feature that worked.
Maintainable and readable code is always one of our goals, but without the user, the code is worthless.
Tyler on July 16, 2008 06:08 AM> There is nothing great in the fact that it worked. I mean what is the point?
The point was that he was crafting the game that *he* wanted to play, and it was way better for him with the rotary controller. If you want to develop truly great (or even good) software, its best to become a user as much as possible. See http://www.codinghorror.com/blog/archives/001066.html
So if that's what it took to keep him enthusiastic about the project, it was time well spent. It appears that the result was awesome. I doubt I'll ever write any software in my lifetime that affects people so much (one can hope though).
T.E.D. on July 16, 2008 06:36 AMJust like Jurassic Park:
"... your scientists were so preoccupied with whether or not they could, they didn't stop to think if they should."
Sometimes as programmers we need to weigh that decision.
Sure, you CAN use some cool ajax to have your search results pop up in an annoyingly small window (see http://asp.net) but did you stop to think whether it was something you really should do??
Does it add value?
Does the value outweigh the short term cost of development and the long term cost of support?
You're into a different industry, where gold plating allows creative expression, something which is missing from the business side. I Started on the Vic20 had my first game released not long after playing Jeff's Gridrunner. I spent the next 20+ years in the games industry (last title i worked on was Worms) before moving into business software. Goldplating is something which is feared in the business world but absolutely relished in the games industry. If a developer comes up with a really cool feature that makes the game better in someway, more saleable or playable but wasn't on the feature list in the first place, more often than not its a bonus, regardless of all the other problems it causes like testing etc.
Business software and entertainment software live by different rules, even though they're both called by the same name. Games developers gold plate because they're passionate about what they're creating. It's difficult to get passionate about a SPROC that fetches stock prices, so if it take longer than the 20 minutes it's scheduled for, you're in trouble.
Cheers,
Rob
Forgot to mention, Jeff's Game almost ended up delaying the jaguar title i was working on at the time...Soccer Kid. Tempest 2000 on the Jag is definately one of the most addictive shooters released IMO!
If only there was a port of Matrix ;)
Woah, when did you get an editor? ;)
Practicality on July 16, 2008 07:09 AMGold plating is fine. It's when a developer is slipping the schedule to gold plate something that, at it's core is just die-cast metal, that burns my buttocks.
Are easter eggs a form of gold plating?
How about AJAX? Is it just a case of whiz-bang features for their own sake, or does it cross into real utility?
Chris Chubb on July 16, 2008 07:13 AM> I mean what is the point?
Nip over to the forum and ask him yourself ;) (www.yakyak.org)
It's not mentioned on the box, in the manual or anywhere. Consider it an Easter Egg. The Internet is full of ways of building them yourselves.
I think it was added because the original game was controlled with a spinner. Adding the code to make a spinner work probably didn't take too long, certainly not as long as the testing cycle took!
James on July 16, 2008 07:14 AMWould Google's 20% time be considered company sanctioned gold plating?
Antonio Rodriguez on July 16, 2008 07:26 AMSometimes it's fun and satisfying to implement such features - just because you can, because it benefits you, because it's different from the usual work, because it gives your software a little character, because you can do something cool maybe with very little effort/risk, because you can learn something, and so on. I'd never heard the term gold-plating before but I've done it - at least, I think the following would probably qualify:
- Added automatic mic cut-off to my VoIP client when pushing the noisy shift paddles on my old ACT LABS steering wheel (only when speech was not already in progress).
- Added LCD display output to my email client for the LCD displays of two Roland MIDI modules, one of which I didn't own, and the other I rarely had connected.
- Added automatic continuous spinning animation of all 3D objects in the scene when pressing a key to a commercial application that really didn't need such a feature. (But some customers found creative uses for it!)
Certainly gold-plating could easily be a mistake in some situations. But sometimes, I think it can be a bit of harmless fun and even have surprising benefits.
Tom on July 16, 2008 07:30 AMHmm, i don't consider gold plating harmfull. That's how advances are made. It's like the evolutionary ladder for the both software developer skill set and for the product.
Nikola Stjelja on July 16, 2008 07:36 AMNo one would argue that "orange" is gold plated CAPTCHA.
Charles on July 16, 2008 07:38 AMI don't think that word means what you think that it means.
I don't associate gold plating with adding fun forward-looking features (that actually got used by the author!). I associate it with editing and reediting finished products that lack nothing, because someone is not ready to say, "Worse is better, this is not perfect but it's good enough, ship it as it is."
For some reason I also associate it with messing endlessly with the front end when the back end has been done for months (and I don't mean doing usability studies and improving the product, I mean change for the sake of employing do-nothing programmers).
Dan Lewis on July 16, 2008 08:00 AMYou can save a lot of money if you concrete-plate your code and sink it to the bottom of the river.
And you can save some server space with not-blogging about "fairly pants" gadgets.
BugFree on July 16, 2008 08:56 AMWriting in something like that is cool, but I'd get killed at work for doing that sort of thing. It's developement time that goes toward functionality that's not really important to the app and needlessly increases complexity of the app. Those are two things we try to avoid.
Kris on July 16, 2008 09:11 AMOne important thing that is missing: If you only do what you should do, and optimize the process to really only do what is necessary you will be slower than expected. Very likely slower than when not being as strict.
Why? Because humans aren't machines. It makes no fun to be restricted (or self restricted) all the time. You need some inspiration from time to time or you will not be productive and enthusiastic enough be more sluggish etc.
You may do only what you should, but much slower and with less devotion than before when you also did what you wanted, and relaxed by not only slavishly following the requirements.
People don't like to follow rules, the stricter you make them the worse people will feel and perform. A key point that IMO isn't taken enough into account in software engineering.
Peter on July 16, 2008 09:51 AMMy favorite plating has always been CLI options when they weren't required (for a GUI program). I've had that save my butt a few times when someone wanted to automate or integrate a system.
If you are just talking about items not enumerated in specs, I also have fairly strong feelings about programmer tools. Sometimes creating an editor to generate XML, or parse a little "mini-language" to eliminate a bunch of repetitive data from your code can be the best and fastest way to solve the problem.
So although that's technically not "Gold Plating", I sure find a lot of programmers that resist it because nobody asked for it. They seem to have this illusion that to create an additional tool that isn't asked for is almost criminal, when in my experience it often speeds overall development.
I do some of this high-level meta programming (programming to help my programming) on virtually every job I work on now.
Bill on July 16, 2008 10:20 AMI suspect that most of the really good/useful features in most software where born as Gold Plating.
Hoffmann on July 16, 2008 10:37 AMJeff i don't think this is an example of gold plating.
The original used a spinner control. So in order to ease the migration process it makes sense to create a control to mimic the original, a spinner. Then use that spinner to test the changes for the new system. After the changes for the new console are in place and tested, then work on the new UI's input.
brian on July 16, 2008 10:49 AMgold plating is better than lead plating....
Mac on July 16, 2008 11:39 AMsparkles wrote: "When you consider he never did anything original his whole career has been built on taking something somebody else has created and just putting a little sparkle into it..."
Nothing original?!
Have a look at his entire games list and you will find many original games in there:
http://www.medwaypvb.com/llamadloads.htm
http://www.medwaypvb.com/llamadloads2.html
Hover Bovver, Hellgate/LaserZone, Ancipital, Batalyx, Iridis Alpha, Mama Llama and Sheep In Space are just on the C64.
MedwayPVB on July 16, 2008 11:40 AMI think this is just another tale of what inpsired me to want to write code for a living. That someone spent the time to obsess about a detail so small that no one would know or see (unless it was shared) is amazing. insanely great.
Another great collection of these tales is Programmers At Work and the narrative documenting the C3 project.
mikester on July 16, 2008 11:54 AMarrghh mateys!
We are on the ghostship sailing thru the fog in search of the FatThinClient.
Captain, begging's your pardon sir, but the men think their popups are a wee bit plain and simple. Might's they adorn them with some Ajax?
Argghhhh, feel free matey, and tell the crew we be putting into Port Google to fill up with API's and then onwards to Port Yahoo to ransack their javascript coffers.
Capt'n, begging's your pardon sir, but the men have been at sea for quite some time now and the Cookie was wondering if he might spice up their stew with some XML?
Hark! Yonder, 12 degrees off the starboard bow, I spy a FatThinClient! I've been sailing these seas for nigh on a decade trying to duplicate an MS Access front end with a web browser. Argghhh, me mateys, point yee IDE's at yonder FatThinClient.
John A. Davis on July 16, 2008 12:07 PMI would just like to say, as someone with fairly large hands, I found the Jaguar controller to be one of the most comfortable console controllers I've ever used.
Also, how many others here have actually gotten past level 64 of Tempest 2000 on the Jaguar without cheating? I did it once, and it took me an entire weekend of trying.
Karl von L. on July 16, 2008 01:38 PMDude: The code _lied_ dormant?
mike on July 16, 2008 02:06 PMGoldplating is orthogonal to creating quality, extendable code. You should always think when coding, and thinking of how your code will exist in the future is part of coding for today.
Goldplating doesn't even have to be big changes. It's death by 1000 cuts. It's any unused, unwanted code paths through the system. So what if you can code a method to count buttons on shirts. If nothing uses it, then what use is it anyways?
More code
Mode defects
More maintenance
Longer compile times
Bigger downloads
Larger working set
More memory required
faster processor required
All for something that nobody asked for. It's irrelevant even if it's done on your own time. To the security minded, it's an exploit waiting to happen, because I'm sure those testers didn't know to look for it to test it.
If, once you code something and you think there's more value to be had, send an email to your team explaining the class / feature / whatever, and it's other possibilities. Document the code and say 'we could also do xyz' because in the end if your idea is worth anything it'll get put into use.
This is why I like the gist of the agile methodologies. You write tests for what needs to happen, and once your code works, you're done. I don't know how many times I've deleted cruft out of classes when refactoring because 'I thought it was a good idea at the time' when coding the class, but it was completely unused.
Seriously, I'm not the code I write. I don't mind if a week later I'm rewriting something that I alerted someone we'll need to change. Thing is, as smart as I am I'm only right 1/2 the time, and the client is happy enough with things being the way they wanted, and with everything being delivered predictably.
Not goldplating is also better for estimating, and for training your client. If you give them what they ask for, they get better at asking for the right functionality upfront, and you have better estimates.
Otherwise you should implement hashcodes, serialization, object equals, value equality, icomparable, iequitable, and everything else under the sun for every class you ever write to cover it being used anywhere.
locke on July 16, 2008 02:32 PM@Karl von L.
I completed T2K on the Jag without cheating, opening up Beastly Mode. 8-)
I'm pretty rubbish at most games, but played that to death when it first came out.
I bought AvP with the Jag and T2K from Silica Shop, which used to be in Sidcup, Kent, playing both every spare hour I had. :-)
Most games of T2K resulted in the imprint of the fire button embedded in my finger. 8-)
I also liked the Jag controller, having very long fingers probably helped. :-)
MedwayPVB on July 16, 2008 04:08 PMWhile I get my degree in CS, I am working in IT, and I have to say I gold plate all the time there. Sometimes I do it to documents, sometimes to designs for a system, or computer lab. I use my design skills to create nicer looking docs, and more user satisfying solutions. This is in spite of my boss emphasizing just getting it done. An example: while creating a lab image, I put the recycle bin in the lower right corner of the screen to make it look more like Macs which are very popular there.
Michael on July 16, 2008 09:58 PMYou guys miss the point. Goldplate your own homebrew stuff as much as you want. If you think of a new feature do a demo, but don't just add junk because you think it's any good. Talk about vanity.
Goldplating is just a waste of time most of the time. Sure, be creative and go that extra mile where it sometimes counts. Nobody said you have to program the most plain vanilla boring and use ridiculously boring code constructs.
Go ahead and experiment, but doing stuff like reflection or wacky constructs 'just because you can' is plain dangerous. I'll just come along later, ask you what it's all for, and after wiping the blank stare away, will delete it.
locke on July 17, 2008 12:16 AMSee, I think there is gold plating and there is feature adding. Which are not necessarily the same, more often than not they are. Adding features is risky as it introduces more for your support staff to support and potentially not get paid for it.
Example:
1. I write an app to do A, B and C
2. I decide to add D and E as features/gold plating
3. All features work fine for a while
4. Feature E breaks and customer complains
5. To fix the feature I need Developers, Testers and Support staff involved, who pays for this? The customer has no obligation to pay for it as they never asked for the feature and wasnt in the spec.
IF you are writing commercial software then fine, gold plate all you want. If you are writing bespoke software be careful, gold plate the existing features but DO NOT add features without controlled change requests and sign off from the client.
@brian:
"The original used a spinner control. So in order to ease the migration process it makes sense to create a control to mimic the original, a spinner. Then use that spinner to test the changes for the new system. After the changes for the new console are in place and tested, then work on the new UI's input."
That's REALLY bad practice. Effectively, your're designing the entire system around a controller that doesn't match your end-user's controller.
Including this controller makes sense as long as it's a personal option, but some of the most unplayable games I've ever played were like this because the designers had simply mapped controls from an old controller rather than trying to redesign the game to fit them to the new controller. (Ultimate Alliance for the Wii, I'm looking at you)
It's not "eating your own dogfood" if you've covered the whole thing in curry sauce to disguise the taste. (Unless you provide the curry sauce as part of the meal)
Tom on July 17, 2008 01:28 AM@Gareth ... lol, misspel the captcha.. were you getting used to type in the word 'orange' so many time that you tried to type it in too fast? ;-)
Jacob on July 17, 2008 03:46 AMI was a great fan (and frequent hi-score achiever) of the original Tempest arcade game, the spinner control was weighted, ie when you let go it kept spinning a bit and was perfect for the game. Tempest 2000 on the PC was great but I always missed that spinner, it was an integral part of the whole experience of the game.
The point is that that he designed the game 'properly' to use its proper controller and was probably forced to support that POS Jaguar controller as well.
He was no doubt a true fan of the original and that 'gold plating' probably kept his soul and enthusiasm for the project alive. Without it Tempest 2000 may not have ended up the great game it is.
No-one messes with...The Curse Of Minter!
(I'm surprised Sony hasn't sorted him out with a MS 360 development box).
Dave on July 17, 2008 04:42 AMOk, now we are referencing a blog which has an obsessio with sheep videos and audio visualization. If that is not a waste of time, I do not know what is.
Oh wait. That guy's name is also Jeff. What a koinkeedeenk.
BugFree on July 17, 2008 07:34 AMLast but not least, I think there should be a differentiation between Gold Plating (an activity of the developer) versus feature creep and other activities of the client.
A feature is a feature is a feature: If your client is paying you to implement it, what do you care? The addition of superfluous features, be they for marketing, pride, or just plain 'gee this is cool', as requested by the client, should not be considered Gold Plating. If the customer (or their analyst) asks for a feature, you've estimated the effort, and they agree to it, then it's just another feature to you, no matter how inane it may be, and how much it sucks to code. They are paying you to deliver.
If you feel an area of the product you are delivering falls short and you have a solution, by all means table the issue in a meeting. If you say 'it takes me 2 weeks to do this' and they agree, then it's in, and it's not gold plating.
The definition of Gold Plating should be restricted to: unrequested | unnecessary | (and in the majority of cases) unused functionality. While easter eggs might be fun, if Atari had to spend $1 per cartridge for more ROM memory to hold unrequested feature routines, then the cost of the game goes up by that price. Your actions have consequences.
An analogy is called for: Do you want your accountant 'getting creative'? Are you going to pay your lawyer for adding unnecessary sections to a contract because they were bored (oh and btw it cost you an extra $10k and you ended up getting sued for something you didn't ask to be in the contract in the first place).
Coding can be creative, and you can be creative and explore new avenues while still working within constraints. If the working conditions you find yourself under don't allow for the upfront creative input you need, just quit. If you like your job and workplace but can't be creative, take up photography, painting, or music.
Durdenism: You are not the code you write.
locke on July 17, 2008 05:27 PMsoo.... he got paid... to write code that wouldn't work with the actual off the shelf hardware... that the company didn't want him to write... because he thought it would be cooler his way... and now, about two dozen geeks are happy he did it? I'm not sure that's the world's most impressive story...
Shmork on July 17, 2008 07:10 PMThe funny thing, BugFree, is that you complain about the blog post being a waste of time, yet you leave not one, but *two* (at least) comments on it. Who do you really think is to blame for wasting your time?
David on July 19, 2008 12:58 AMIt’s easy to criticize the code now because we know a spinner was never produced. But at the time, there was still the possibility. Green-lighting a project to build a new controller is hard. Green-lighting a new controller that would improve the gaming experience for a existing hit game is much easier.
Support for a drum controller was programmed for Rock Band long before they’d developed an affordable drum controller. Yet that turned out much different.
Robert Fisher on July 19, 2008 04:02 PMDave wrote:
> No-one messes with...The Curse Of Minter!
>
> (I'm surprised Sony hasn't sorted him out with
> a MS 360 development box).
Dave: Minter actually wrote the music visualisation software on the 360, and has one XBLA title under his belt (and another in gestation).
Pete Muller on August 5, 2008 05:02 AM> This code lied dormant in the game
If you would like to improve your English, the above should be written "This code *lay* dormant in the game".
Otherwise, feel free to ignore this. =)
Vincent on August 10, 2008 12:58 PM???
hanso on August 11, 2008 06:07 AMReading through the posts under this article I think there are blinding discrepancies of what exactly gold coating is... as a matter of fact I'm not entirely sure I know what Gold coated code is since in my history it has carried a negative connotation.
What a shame.. Gold is so pretty.
Here's a quick survey answers I got asking a few of the people I know:
Q: What is Software Gold Plating?
A: The attempt of making your code perfect.
A: I don't know what you're talking about, Gold Plated code?
A: I don't know either.
A: It's an electro-magnetic process of applying a thin layer of gold to an object.
A: Gold Plating code is the process of putting more effort into the code than it's worth.
A: Why do you ask?
A: its the beautiful touches you put on your software that makes you say, "wow...this is great stuff"
frightening...
I think I like Andrew Stellman's take on it
http://www.stellman-greene.com/2007/06/09/why-gold-plating-is-a-lousy-name/#comments
| Content (c) 2008 Jeff Atwood. Logo image used with permission of the author. (c) 1993 Steven C. McConnell. All Rights Reserved. |