146: Resisting the Next Generation

Resisting the Next Generation

"It might come as a shock, however, to discover that programmers are generally stubborn when it comes to learning how best to handle new technologies. 'Programmers are very resistant to change,' says Albrecht. 'They're generally very intelligent people - game developers in general are very smart - but programmers just don't like change. They like their standard environment. They like their standard compiler. They like what they're used to, and they have a lot of momentum behind their beliefs.'"

Read Full Article

That's really fascinating to know. I mean, having experienced being a computer science major for all of three months, I can tell why programmers would hate change so much, but I guess I've just gotten used to hearing companies' PR reps raving about their excitement towards new consoles and new technology at GDC and E3.

The basic reason why programmers hate change is because it forces them to stop doing what they like doing (writing code that does something) and go back to jumping through hoops imposed by the quirks of new libraries and new hardware. Typically every single layer in a software/hardware stack has badly designed bits in it if not outright bugs. Trying to code under such conditions is an exercise in frustration, particularly if you're working under managers who aren't themselves coders.

So no, not resistant to change as such. For proof you need look no further than which technologies programmers dabble with in their spare time!

That was an interesting read. It scares me a bit when I read stuff like this, 'cause I'm in college, in an E-gaming programming major. Learning that people tend to be hesitant to change (programmers) is good to know so I know what to expect, but still. Also, did anyone else have trouble getting to page 2? For some odd reason, it didn't want to load. It just kept looping page 1.

Interesting read.
Not being in the know, i always assume there was some base base coding/scripting language, which would just have to be tweaked somewhat to allow it to work on various platforms (different ways to access the single or multiple CPU's, GPU's etc).

If i understand this right, it's basicly an entire rewrite of the code whenever a game gets launched on a different platform?
Props to the dev's for putting in such effort.

that gave a new look on gaming! suddenly im feeling rather sorry for the programmers who create the games I play... i do tend to be rather critical when reviewing games... all that effort to learn new CPU programs and whatnot to make a game, and then people like me go off and dismiss it as rubbish... feeling a bit guilty now...

Lt. Sera:
Interesting read.
Not being in the know, i always assume there was some base base coding/scripting language, which would just have to be tweaked somewhat to allow it to work on various platforms (different ways to access the single or multiple CPU's, GPU's etc).

If i understand this right, it's basicly an entire rewrite of the code whenever a game gets launched on a different platform?
Props to the dev's for putting in such effort.

There may well be a base scripting language, but it's probably something that some group of programmers at your company is doing (assuming you're a big enough house to actually have such a group), and yes, they're rewriting it every time the hardware changes. Game hardware does tend to change quite a lot from iteration to iteration: an obvious example of this is the Cell processor, which you can't really harness unless you change your ways of doing things to make the best use of it.

Dom Camus pretty much has it: it's not that programmers can't learn new things, but that while they're learning new things they're not doing what they want to do, which is write code that does cool stuff.

I sympathise with the programmers. I mean, they have to change, and re-learn, a lot of things for different platforms, which must suck. Especially, if they are, as stated in the article, perfectionists. Well, most of them still do a good job.

- A procrastinator

I think that there are more facets to this argument than are presented in this piece. Saying that programmers are resistant to change only gives half of the facts.

Sure, programmers can get set in their ways. They can get used to a particular set of tools or a particular language, get used to the idiosyncrasies and learn how to work with them, and they will then argue for their way, or their tools or language, until the cows come home. If they are presented with, say, new tools that are inferior to the ones they are used to, they will be annoyed.

But one of the things that is most fun for programmers is when you get new hardware, or new tools, or a new programming language, that give you new capabilities and make your life easier and more productive. Learning new things is what makes life as a programmer fun!

However, being forced to learn new things for the sake of them being new, when they do not provide new capabilities, is NOT fun. Neither is being forced to use an inferior tool or language. So there is a fine distinction here. And often it is not immediately obvious whether something provides a benefit, so exploring a new tool or technique can seem like a waste of time until proven otherwise.

If programmers were really that reluctant to change, wouldn't we all still be writing in machine code?

so maybe in 2012 we'll see a decent Wii game, cool.

markdeloura:
If they are presented with, say, new tools that are inferior to the ones they are used to, they will be annoyed.

The issue is not so much resistance to inferior tools as much as resistance to new, different tools. Many programmers associate new as being inferior.

markdeloura:

But one of the things that is most fun for programmers is when you get new hardware, or new tools, or a new programming language, that give you new capabilities and make your life easier and more productive. Learning new things is what makes life as a programmer fun!

I agree totally. Its what keeps me coming back to work.

markdeloura:

However, being forced to learn new things for the sake of them being new, when they do not provide new capabilities, is NOT fun. Neither is being forced to use an inferior tool or language. So there is a fine distinction here. And often it is not immediately obvious whether something provides a benefit, so exploring a new tool or technique can seem like a waste of time until proven otherwise.

How do you know that a tool or language is inferior until you have used it? The case being considered is that of learning a new console. Is it immediately obvious which platform is 'inferior' - PS3 or X360? I know which one is the most familiar and I know which one has had the most resistance from programmers.

markdeloura:

If programmers were really that reluctant to change, wouldn't we all still be writing in machine code?

Only if you started your programming career coding in assembly. I still do code in asm, when needed.

I'm not saying that everyone has to go out and chase the latest and greatest thing. There is room for experienced excellence in a given field - be it a language or piece of hardware. I'm also not saying that all programmers are resistant to change. I just find it surprising the number of programmers that will dismiss something because it is new, unfamiliar or hard. To me, that stuff is the bread and butter of a good programmer.

This is why videogames are no longer designed with love by geeks in their bedroom and instead put together by committees of marketing managers with scripted "formulas" of what sells and what doesn't. Bring back the programmer-designer!

This article gets at the issue quite well. I have heard from many a developer about how much "harder" the PS3 is to develop for, and this little lie was parroted by countless media outlets. The PS3 is not any more difficult to develop for than the 360, it is just different. The truth of the matter is that software engineers are like any other engineer, they are the most frustrating of people to work with. When it comes to change, they are inherently lazy.

TheMadDoctorsCat:
This is why videogames are no longer designed with love by geeks in their bedroom and instead put together by committees of marketing managers with scripted "formulas" of what sells and what doesn't. Bring back the programmer-designer!

I'm not sure that a programmer-designer would help at all. Someone designing a game that is programming may fall into the trap of only designing what they know they can program, whereas when you've separated the two institutions, the designer may be driving the programmer to break their own boundaries; forcing the programmer to discover potential they never knew existed.

TonyAlbrecht:
I still do code in asm, when needed.

So do I, and I hate every single line of it.

TonyAlbrecht:

I just find it surprising the number of programmers that will dismiss something because it is new, unfamiliar or hard. To me, that stuff is the bread and butter of a good programmer.

Well, it always sucks at first. For the first few months, you'll constantly be looking up how to do X, which you could do with your eyes closed in that other language. And if that's the only sort of change, it IS a bad trade.

Generally though, newer languages, libraries or waht have you, will make the work easier in the long run. Most programmers do realise it, but they all complain anyway, even if things stay the same ;)

I've explained this dynamic to some people myself, thank you for allowing me to point people here as well.

It's the inherent weirdness of being a professional programmer, to do your job properly you have to relearn your job all the time. It's really hard to compare this kind of experience to anything that exists in another job.

Tonyalbrecht:
I write pseudo code that looks almost exactly like Delphi. Because that was the one I was became accustomed with first. The last time I actually built anything with it is six years ago (I'm 25 yrs old btw).

I don't think programmers are necessarily resistant to change. Then again, you're really talking about two different things in the article.

There are changes that are simply inevitable. Targeting the PS3 over the PS2 means that you'll have to learn the new architecture. There's no way around it, that's just the way things are. Programmers are going to have to learn how to deal with Windows Vista eventually, whether they want to or not. It's just a simple reality.

But the more traditional resistance to change in the industry has more to do with simple cost/benefit. Learning new things takes time. It has to be worth the cost in time. When you're changing from a method that works to another method that does the same thing, just in a different way, it has to really be worth the change.

It's completely valid to be reluctant to change in the second case. New doesn't mean better. (It also doesn't mean worse: it means new.) If the cost of learning the new way is more than the cost of the old way, and there's no great benefit, there's no point in doing things the new way. A lot of resistance to change comes from concerns that the new way offers no real benefits compared to the old way. This is a valid concern.

Sadly there's a lot of blindness based on that concern. The old way works, damn it! Proving that the new way is actually better can be an uphill battle.

I remember going through some trouble to convince a programmer that he really should learn how to use the version control software, since it really does make things easier on everyone.

I lost on the bug tracker, sadly, that remained a spreadsheet. Oh well. I blame that on Bugzilla's overly confusing interface. :)

Well, I'm a programmer myself, although in the field of embedded systems, not games at all. But I can sympathise greatly with the problems of my 'job-cousins' as it were. Fortunately for me, the problem is not anywere near as extreme for me - after all, my field deals with single microcontrols systems (i.e. a whole computer on a single chip, with relatively limited RAM and code storage).

I can certainly see why languages like Java and .NET are taking off on PC programs (which are easier, per-say, due to standardized OS's, librarys, and interfaces).

 

Reply to Thread

Log in or Register to Comment
Have an account? Login below:
With Facebook:Login With Facebook
or
Username:  
Password:  
  
Not registered? To sign up for an account with The Escapist:
Register With Facebook
Register With Facebook
or
Register for a free account here