*Spin-off* Coding Education & Practise

archie4oz

ea_spouse is H4WT!
Veteran
Are you sure about the PS1?

If I recall correctly the PS1 had better tools than the Saturn. I think better than the N64 too if I remember clearly.

The PS2 though was a indeed a "disaster"

Correct, I'd say that the PS2 was the only one that I'd really consider "bad."

c2.0 said:
On the practical side, another issue is that writing SoA style SIMD code isn't (or wasn't until recently) a common skill in the average game programmer's reportoir.

Well I dunno about common... It's been around in use in the audio space for ages, and in the graphics space in the software renderer days.
 
How do you consider the one after that (under that aspect) :)?

The PSP? Better... Granted I consider it basically a matured PS2 environment. But much of residual PS2 ick factor is just old memories of what the environment was early on. Granted I still have some issues with the compiler and debugger and such.

nAo said:
Average game programmers don't even know that SOA or AOS mean and I don't see hordes of programmers suddenly getting familiar with these concepts anytime soon.

Honestly this is frightening, for something so fundamentally basic... Then again so many universities are spitting out trade school Java programmers these days, I guess I can't say I'm not surprised.
 
Honestly this is frightening, for something so fundamentally basic... Then again so many universities are spitting out trade school Java programmers these days, I guess I can't say I'm not surprised.

Ermm... not to go too far off-topic, but I personally don't see the relationship between learning Java in Unis & not learning basic data structure concepts (SoA/AoS) or even learning parallel programming concepts. Heck, I like using java to implement multithreaded applications that operate on different parts of data in parallel, vs using C++.
 
archie4oz said:
Honestly this is frightening, for something so fundamentally basic...
Hey, compare that to commercial release codebases having abacus-style algorithms in there for the most basic of operations - THAT's frightening.

The PSP? Better... Granted I consider it basically a matured PS2 environment.
It'd be better yet if they didn't place so many restrictions on devtools because of the so called security that ultimately amounted to nothing.

makattack said:
Ermm... not to go too far off-topic, but I personally don't see the relationship between learning Java in Unis & not learning basic data structure concepts (SoA/AoS) or even learning parallel programming concepts.
You're right - it SHOULDN't. But then explain stuff like the above. Or worse, why I can't remember the last time I had an interview candidate that seemed to know comp.arch fundamentals - even the most basic things like why not all memory accesses are equal.
 
You're right - it SHOULDN't. But then explain stuff like the above. Or worse, why I can't remember the last time I had an interview candidate that seemed to know comp.arch fundamentals - even the most basic things like why not all memory accesses are equal.

Way off topic..... but.

I'm not sure it's Java per-se that's the issue, as much as a lack of teaching general computing principles. On my last project we had many college graduates with very high GPA's coming out of highly respected schools, and I've had to explain how function calls use the stack several times on the project.

Either they just don't teach computer architecture at school anymore, or it's only taught in classes that most students avoid.

Most graduates have no idea how to optimize something, or even a solid understanding of the code the compiler is generating.

Now it's unfair to generalize we have a few very good college graduates, but they like many of the old school guys program at home for fun, they didn't learn their skills at the school they learned them because they enjoy what they are doing.

I'm not sure I learned anything about basic computer architecture at school either, sure I took the classes, but I'd also written several hundred thousand lines of assembler before I started. So maybe it's more about the broadening of the work force than it is the changes to teaching in schools.
 
Most graduates have no idea how to optimize something, or even a solid understanding of the code the compiler is generating.

Like you said, way off topic, but I had to reply to this. I can understand that some would prefer that candidates understand the stack, optimization, AoS/SoA, etc... and that's fine, but all of those things can ultimately be learned. What can't be learned is problem solving. Some people have it, some don't. While the tech details are important, it's as important and in some cases more so that a candidate be able to think out of the box, solve problems, and present new solutions to the stuff we face day to day. Plus, I can always pair a smart thinker with a tech savvy mentor to get him up to speed on current tech standards and practices.

I only say this because sometimes it seems like people are automatically considered noobs and unhireable if they can't write code samples is 14 different assembly languages. If I ask a general question like how would you cull stuff, and the tech guru candidate stammers out one solution whereas the less tech savvy candidate presents me 5 different solutions, then who is more impressive?
 
ERP said:
Either they just don't teach computer architecture at school anymore, or it's only taught in classes that most students avoid.
That's a flaw in the school system as well then. In our country, key classes like that are never left up to choice (not much of the program is to begin with, but that's besides the point). I mean ultimately if you can end up with the same degree with a noticeably different assortment of fundamentals, the name of degree is pretty uselesss in itself, I'd be tempted to start asking to see curiculums in resumes.

I'm not sure I learned anything about basic computer architecture at school either, sure I took the classes, but I'd also written several hundred thousand lines of assembler before I started.
It's hard to pin thing down when we were already doing hobby stuff, but I have school to thank for intro into comp.arch fundamentals and getting me properly interested in them. And very few people will bother studying more theoretical topics for hobby (eg. language theory, or discrete structures, signal theory etc.) let alone study them in order that makes most sense.

joker454 said:
Plus, I can always pair a smart thinker with a tech savvy mentor to get him up to speed on current tech standards and practices.
That's not always an option, and more importantly there's a big difference between "current tech standards" and basic fundamentals.
Personally I usually don't give a damn if candidate knows DirectX Version 454665.3434 because that's the type of knowledge that needs to be constantly updated anyway.


If I ask a general question like how would you cull stuff, and the tech guru candidate stammers out one solution whereas the less tech savvy candidate presents me 5 different solutions, then who is more impressive?
I don't know about everywhere else, but problem solving is always a big part of our interviews. I just don't believe one can exist completely without the other. If you're approaching 30ies, with industry experience, and you still haven't the faintest idea of basics, why should I believe you can learn it all in some more limited time with the new company?

And even your example requires certain fundamentals to be able to answer it. Eg., if you can't do practical Linear Algebra, talking about culling is a bit difficult, to say the least.
 
Last edited by a moderator:
That's a flaw in the school system as well then. In our country, key classes like that are never left up to choice (not much of the program is to begin with, but that's besides the point). I mean ultimately if you can end up with the same degree with a noticeably different assortment of fundamentals, the name of degree is pretty uselesss in itself, I'd be tempted to start asking to see curiculums in resumes.

I have always been asked to provide my full curriculum when applying for jobs.....
 
I only say this because sometimes it seems like people are automatically considered noobs and unhireable if they can't write code samples is 14 different assembly languages. If I ask a general question like how would you cull stuff, and the tech guru candidate stammers out one solution whereas the less tech savvy candidate presents me 5 different solutions, then who is more impressive?
That's theory. In practice most of the time the guy who knows 14 different assembly languages is also the guy that comes up with 5 different solutions, at least according my experience. "Idiot savants" never do very well in (proper) interviews anyway.
 
That's a flaw in the school system as well then. In our country, key classes like that are never left up to choice (not much of the program is to begin with, but that's besides the point). I mean ultimately if you can end up with the same degree with a noticeably different assortment of fundamentals, the name of degree is pretty uselesss in itself, I'd be tempted to start asking to see curiculums in resumes.

If you're interviewing a candidate straight out of school, you would probably do that anyway because they are not likely to have much else to talk about. Obviously, you would ask a seasoned developer a different set of questions (at least when discussing background).
 
Like you said, way off topic, but I had to reply to this. I can understand that some would prefer that candidates understand the stack, optimization, AoS/SoA, etc... and that's fine, but all of those things can ultimately be learned. What can't be learned is problem solving. Some people have it, some don't. While the tech details are important, it's as important and in some cases more so that a candidate be able to think out of the box, solve problems, and present new solutions to the stuff we face day to day. Plus, I can always pair a smart thinker with a tech savvy mentor to get him up to speed on current tech standards and practices.

I only say this because sometimes it seems like people are automatically considered noobs and unhireable if they can't write code samples is 14 different assembly languages. If I ask a general question like how would you cull stuff, and the tech guru candidate stammers out one solution whereas the less tech savvy candidate presents me 5 different solutions, then who is more impressive?

meh, I'm just happy if someone can properly write a simple queue in any given programming language they want. Its entirely amazing how low the pass ratio is on that one: <10%!

if you want, you can PM me your solutions and I'll add it up for this audience...
 
Dont wanna sound like the forum police but..

Can we keep OT, or spin a thread off :)

In an odd way, I think it is completely on topic: assessing the developer talent pool and the proficency of those entering such is a significant factor when deciding the shape of the hardware and tools you develop. While it is true consumers are the customers of platform makers, developers are also consumers. Developers need solutions that meet their realities, be it faster content generation, a solid balance of performance and cost, as well as accessibility and services.
 
In an odd way, I think it is completely on topic: assessing the developer talent pool and the proficency of those entering such is a significant factor when deciding the shape of the hardware and tools you develop. While it is true consumers are the customers of platform makers, developers are also consumers. Developers need solutions that meet their realities, be it faster content generation, a solid balance of performance and cost, as well as accessibility and services.

lol, Ever heard of that old trick of being linked through 5 links of association to anyone in the world starting with you? I bet the same would be true of linking subject matter through association too. ;-)
 
lol, Ever heard of that old trick of being linked through 5 links of association to anyone in the world starting with you? I bet the same would be true of linking subject matter through association too. ;-)

I thought it was 6? ;)

In this case though, I think there is a direct cause-and-effect relationship, at least in theory. The skill of developers, among other things, has an effect on what next generation technologies are chosen. I think a lot of the developer concerns this generation will be weighed pretty heavily in this regards. Even the recent series of comments presents a reality: a lot of people looking for work in the industry are lacking the skills developers are seeking to efficiently use the hardware. Education is one avenue, but there is also a reality that at the end of the day quality developers are a limited resource and you have budgets to work within. From this perspective I don't find the discussion by some developers wishing for platforms that can more aptly handle managed code too surprising.
 
Ok last OT I promise :p
ban25 said:
If you're interviewing a candidate straight out of school, you would probably do that anyway because they are not likely to have much else to talk about.
What you ask during interview is besides the point(even if you don't ask, you're going to see the proficiency on technical questions anyway). I was talking about filtering the resumes before interviews. There's little point to interview a Comp.Sci engineer fresh out of school if his school didn't include the relevant basics and he doesn't mention acquiring them in other ways.

kyetech said:
Because most current/ younger gen programmers are dummies and wont be able to exploit the hardware if they dont have their hand held by friendly hardware.
Generally we just need better tools to work with increasingly paralel architectures, there's only so much hardware can to do by itself.
 
I'm not sure it has as much to do with universities or education as is being implied.
I think over the last say 10 years, the games industry out of necessity has had to employ more people from a broader learning base. Most of us 20 years ago were self taught even those of us who later went through the educational path, this required a certain amount of desire.
We still try and hire "problem solvers" with a desire to work in games, the difference is that the vast majority of them aren't as obsessed as many of us were, they do it as a job. They don't go home at night and write more code for the fun of it.
I think it's a natural maturation of the industry, and probably a good thing in the long term, but as a percentage of the work force the number of people who want to write efficient SPU code because it's cool has dropped dramatically. In fact a lot of the work force even those talented problem solvers have no real idea what that even means.
Personally I find the lack of basic architectural knowledge disturbing at some level, but I think sometimes it's just an idealistic nagging harking back to what the industry was like when I started.
At some level so many of the problems in games have shifted from machine architecture to software engineering that I'm not sure it's even the right thing to worry about.
I used to have an implicit zero allocation policy at Boss, hell our allocator didn't even support free I don't know how I would even present that policy as a good idea on the last 3 or 4 projects I've worked on.
 
ERP said:
Personally I find the lack of basic architectural knowledge disturbing at some level, but I think sometimes it's just an idealistic nagging harking back to what the industry was like when I started.
I don't think it's just idealism - there's a reason why default CS course includes those subjects, just like there's a reason for specific math subjects in the course when you study math, etc.
People you hire today may be taking part in design decisions tommorow, and their knowledge on topics of that kind(or lack of thereof) may have far reaching and long term consequences on those future projects.

Although on flip-side, just today I had a candidate with no professional game experience that probably knew more about game and rendering work then the bulk of long-term experience candidates we interviewed in last 2-3 months put together. So you can still find enthusiasts.

I used to have an implicit zero allocation policy at Boss, hell our allocator didn't even support free I don't know how I would even present that policy as a good idea on the last 3 or 4 projects I've worked on.
Given how fragmented control over projects of that sort can be (as in game team not really controlling majority of the game), such policies would be damn hard to enforce no matter if people believe they're good.
For what's worth, personally I never went as far as zero-allocation, but in final stages optimization work almost inevitably came to nearly freezing memory allocation state during gameplay. I doubt I'll ever have to worry about this in my current job anymore, but I'm not sure yet if it's a good or bad thing. :p
 
Last edited by a moderator:
Mod Note: Spinning off the discussion so it doesn't get lost in the Prediction thread.
 
Back
Top