Sony’s PR machine has been rather contrite of late, after some really quite stellar gaffes a few years ago, but comments from Kaz Harai in an interview recently are a firm return to the ‘what in Gods name were you thinking?’ school of PR. Ignoring the fanboy-baiting predictions of who’s going to ‘win’ (given the expansions in the game industry, does anyone have to ‘win’?), the bit that got my attention was when he talked about the (many would say unnecessary) complexity of developing for the PS3:
“We don’t provide the ‘easy to program for’ console that [developers] want, because ‘easy to program for’ means that anybody will be able to take advantage of pretty much what the hardware can do, so then the question is what do you do for the rest of the nine-and-a-half years?”
I had to read that twice to see whether he’d really, actually said that – it’s a pretty big insult to developers.
Developers are a problem-solving breed. But here’s the thing – unless you’re a student, or just hacking around on your own time for fun, you have deadlines. Time is money, and professional developers have people breathing down their necks for results, and having spent N times as long as estimated to utilise / optimise something doesn’t tend to go down too well. And as developers mature and become more savvy about the environment they work in, rather than just being geeky hackers, they generally start to look less for pointless puzzle boxes, and more for things that make them productive.
So what would they do with the other 9 1/2 years? They’d probably spend it on making new and exciting actual products rather than decoding an esoteric design.
Anyone can design something to be complicated. The real genius lies in making something powerful, and at the same time making it easy to access that power. You honestly shouldn’t be proud of a design that’s difficult to use – the layman’s way of looking at it might be “Hey, but developers will be squeezing new stuff out of it in 7 years time!”, but the more informed way of looking at it is “Developers would have been getting that power from day 1, if some idiot hadn’t buried it under so many layers of obscurity”.
Kaz, I’d advise skipping the GDC this year, or if you do, best to wear some projectile-proof clothing of some sort.
January 20th, 2009 at 8:25 pm
“Complicated” is a wrong word. “Different” is a better one. Cell enforces a different way of thinking in order to become productive, but it’s what is ahead – there is no way you can survive with the same way of designing high performance games for the next generation of consoles.
Once past the “think different” barrier, a lot of things are not that hard and I’m going to claim that some are even simpler than on other platforms.
Oh, well, and as a tech developer, I’m really enjoying developing for PS3 – my experience with XBox was much more, well, if not boring then lacking enlightenment.
January 20th, 2009 at 8:42 pm
Well, ‘different’ can in itself be wasteful in resources, unless that difference gives you some massive advantage (which so far, we have yet to see). Sure, every developer has to be familiar with threading now, but there simply isn’t any other architecture out there that’s quite like the PS3, since its not just a multicore machine like you find elsewhere. Maybe that makes it interesting technically, especially if you can start from a blank slate, but obviously unique architectures make porting more time consuming than it would otherwise be.
One man’s interesting is another man’s pain in the arse
I’ve certainly spoken to a number of developers who fall into the latter camp.
But this is more about Kaz’s attitude; he’s saying ‘yeah, we know it’s tougher for developers, but they love it really, they’d just be twiddling their thumbs otherwise’. Pretty disrespectful I thought.
January 20th, 2009 at 10:09 pm
Threading is not the key concept obviously – data-centric design and data parallel programming are, IMO. As for massive advantage, it probably has to show itself somewhere closer to the end of console lifecycle, though we’ll see.
But yeah, what Kaz says strikes me as… odd.
January 20th, 2009 at 10:49 pm
Yes, I meant parallelism generally when I said threading. Data parallelism is the most common approach to many parallel problems (we used it a lot in business server code when I was doing that a few years ago). Still, the uniqueness of the Cell I’m sure means it requires more specific tuning compared to other architectures. Unless OpenCL eventually makes it all seamless
January 21st, 2009 at 9:34 am
I think what he said is correct (of course, it is), and the approach/attitude of tackling the challenges are also correct too but he should at least talk about them differently.
Some examples:-
1. complicated -> rich and could be difficult, but the result is ahh rewarding.
2. difficult -> challenge
3. “easy to program for’ means that anybody will be able to take advantage of pretty much what the hardware can do,” -> In a lot of ways, the most rewarding experience comes when you completed one of the most challenging blah blah blah… *you get the drift*
Okay, the summary is he maybe need to brush up his PR skill a little bit
January 21st, 2009 at 9:57 am
Well, I don’t know about you, but I get the most satisfaction from actually delivering something. Sure, it’s satisfying to solve a tricky technical problem, but in my experience it’s *more* satisfying to get to that great end result in a shorter time. I guess it depends on whether you take an academic or pragmatic view. Maybe I’m just getting old, but the geeky pleasure of taming a gnarly architecture just pales in consideration to actually delivering a result. Would I rather have the badge of honour of taming a tricky architecture, or would I rather get to the end results faster? It’s a no-brainer for me – the latter. No-one except us geeks care how much of an achievement it was to get there – they just care about what it’s like at the end. No-one outside the coding team is going to give you a pat on the back for spending 3 months doing something that would have taken a week on another set-up.
I can’t possibly see how ‘anybody’ being able to extract the best out of a machine can *ever* be a bad thing.
Maybe you’re still seeking challenge for challenge sakes – I’m not, and I don’t think many developers with quite a few years in the trenches are either. It’s not very schedule-friendly.
January 21st, 2009 at 11:03 am
Straying in to a platform war I see… many people like whatever they put their money on (be it salary or console choice) regardless of technical merit. All the above parallel programming applies to both platforms mentioned – the 360 does have 3 cores each with 2 hardware threads.
Interesting post and interesting comments
January 21st, 2009 at 11:15 am
Well, I was trying to avoid the ‘platform war’ parts of his comments. But anyone who claims it’s good to make things difficult for developers needs a slap.
January 21st, 2009 at 11:39 am
[...] Kaz Hirai’s interview yesterday (only one part of which I felt merited comment), Microsoft’s Aaron Greenberg has returned [...]
January 21st, 2009 at 5:06 pm
I agree with Steve on this one. Adding extra hurdles for developers to write great games is bad design. Kaz tried to put a positive spin on something that wasn’t positive, and failed.
January 22nd, 2009 at 7:33 am
Well, I dont think what he said is ‘it is good to make things difficult’.
What he said is programming around SPU is hard, and the hardness can be explained by this mantra: ‘good things dont come easily’. I agree with him at that point, but I do think that had the API was designed wisely it can be made easier but more powerful at the same time.
But that is just my guess – it is always the best to hear the opinion of the people who are actually programming the darndest thing and think, it should definitely be easier (and the API was sux actually). Yeah, the core question is this: is the API actually sux?
January 22nd, 2009 at 10:11 am
‘good things dont come easily’
I call bullshit on that. The job of a hardware and software design is precisely to make good things come easily. If it wasn’t, we’d all still be coding in assembler and manually programming graphics chips with I/O codes. Good things *can* come easily, or at least easier, with the right design.
The thing is that, as Paul pointed out and I’ve tried to say here, parallel programming is *nothing new*. However, the way that the SPEs do it is somewhat different to other approaches (less memory, more restricted instruction set, no cache etc), which is one thing that makes it trickier. The question is whether that gives you more power for the effort, and judging by the last 2 years, the conclusion so far would have to be ‘no’.
When things that are considered ‘simple’ today (like multisampled AA) are difficult to implement efficiently, something has gone awry. Hiding behind the excuse of ‘it’s hard because it’s so damn awesome’ doesn’t hold water when you have to program a manual AA filter instead of just flipping a MSAA bit like you do in every other hardware setup. I’m sure it would be satisfying to code my own high-quality parallelised AA filter, but why the hell would I want to if I don’t have to?