Why are they having such a hard time filling this position?
I guess there arent many people who learn that, or care for writing device drivers or do assembly.
A lot of students I know arent interested in low level stuff. They are pretty much content with VB and using other peoples libraries.
This job description is strikingly similar to the ones posted on the ATI web site.
So is it that no one wants to work for ATI? Or do the pay/relocation/benefits suck?
They’ve been advertising this position for MONTHS.
[This message has been edited by glVertex3f (edited 05-18-2002).]
I have no idea what the position is or why it’s been open for months. Perhaps it’s just a generic description to solicit resumes (common among recruiting). Anyway, having been involved on many levels of hiring in the past, I can offer this personal opinion:
Finding very good, very low level people with sufficient scope of experience is very hard. If you’re doing things that literally may make or break your company, you probably can’t afford hiring people who are “only half decent”. If there’s also relocation problems (you’re not in a hot-spot) and you also have corporate budgetary constraints to worry about (“but our OTHER people at Staff Engineer IV level don’t make that much”) it can be very hard to fill these kinds of slots.
Ever thought about they wanting more than one person? They are sucking the market dry from devicedriver developers. They are scarse indeed.
We have 2 device driver developers at our place. You never met a stranger couple. However, I will say that if you want to be a device driver programmer, its easier to come from the bottom up (from an electronic engineering background) than from the top down (a high-level software background).
These guys really know how the hardware works
And yes, they are like gold-dust.
My fiancee did an engineering school in electronics (ENSEIRB, Bordeaux, France) but they never got to the point where they knew anything about writing device drivers.
Interestingly, one third of the school was studying computing and the two other thirds were studying electronics. If you look at the jobs they got in the end, one third was in electronics and the two other thirds were in computing !
I guess it is not that easy to become a device driver writer: you need to know the hardware, you need to know the software and both of them change when the device itself changes !!!
To be honest, I used to like low-level things (Assembler 68030, DSP 56001 on Atari Falcon 030) but I now tend to prefer high-level things such as software development in C++. Don’t get me wrong: it is useful to know these low level things but they never get you very far if you do not use them for what they’re intended: develop low-level stuff such as drivers !
Anyway, to summarize, I agree with V-man. People that could fill this position must be very rare these days…
Some years ago i had a job as device driver developer for 3D HW on Macintosh.
I was hired beacuse of my expiriences/knowledge in low-level hardware and assembly programming and my 3D-rendering knowledge. at this time - 1996 - it was ofcourse software rendering.
I was programming RAVE (=Quickdraw3D driver interface) and Glide for the companys Accelerators(Voodoo1,Voodoo2, Permedia 2).
As the first OpenGL implementation for macintosh was introduced (at the Apple WWDC’98 by Conix in San Jose - as far i can remember) my Boss told me to check it out, and to write an driver for his hardware.
After i checked it out, i quited my job, because i wanted to do all that cool stuff by myself, and not just “preparing it for others”.
So what i’m trying to say ?
i think, this is one of the biggest problems in finding driver programmes for 3D stuff:
You need lowlevel guys which are also familiar with Highlevel graphics programming. And most of this guys choose a job, where they can do both. And this isn’t driver programming. In most cases this guys end up programming fixed hardware configurations, where they can do their Low-level-assembly optimizations while still using fancy 3D hardware.
I know it and i did it.
This “fixed hardware configurations” are also called:
- PlayStation, PlayStation 2
- Nintendo 64, Gamecube.
that guys, which don’t want/need to programm 3D-Stuff chooses HW like GameBoy and GameBoy Advance…
one of the reasons, why i love to programm NVIDIA hardware is because i can do such cool low-level-assembly programming with their hardware… (vertex programms, Register combiners & stuff)
I also don’t see very many chipset makers release full docs so you can roll your own drivers, and practice a bit. As it is now, you have to find REAL old stuff to practice on, and not to mention the crappy x86 ASM code (compared to say 680x0 ASM) (at least with windows platform).
What ever happened when companies like say C= Amiga would release their nice HRM, with all specs layed out? The good ole days!
> they never got to the point where they knew anything about writing device drivers
There is no college which teaches this.
There are a few classes and seminars which will get you an introduction. Then it’s down to learning by doing.
Not only do you have to understand the implications of a device interface (sitting on the receiving end of a bunch of ioctl()-s) but the programming model inside a kernel is very different from that of a regular user program. Especially if that kernel is running on more than one CPU at the same time
When your interrupt handler routine page faults (assuming you’re on a kernel where this isn’t OK you’d better have a fair bit of experience in how to debug things and what the rules of the environment you’re executing in actually are. Those things are part of “What they never told you at MIT” (although there may be one or two classes that go into overview or some subset of this if you’re in a MS program)
Bah. They don’t teach any of the good stuff here at MIT any more. You have two classes that are 100% done in Scheme. An algorithms class that doesn’t use any computer language at all and is taught with the CLR book, which is totally theory-heavy. If you’re lucky, in the computer systems class they’ll show you a “scheduler” written in… Java. My compiler class had us write a compiler – in Java – for a clone of Java.
People without a doubt graduate from here without even knowing what a pointer is, or without being able to write C code. And yes, they graduate in computer science.
Bitter at the failure of this school to provide a decent computer engineering curriculum,
To add to my bitter remarks…
They also overemphasize AI. The labs that get all the hype are the AI Lab and the Media Lab, but as far as I can tell, both of them seem to just be sinkholes for donors’ money. The required AI class is laughable; they take this attitude that practically everything done with computers is “AI”, and so you get to learn about search algorithms that belong in an algorithms class, not an AI class. Oh, and of course, you learn them in Scheme.
LCS puts out some decent research here and there, but some of it (can you say “Raw Project”?) is just pie-in-the-sky absurdities.
Maybe I just hate academia in general.
Originally posted by mcraighead:
My compiler class had us write a compiler – in Java – for a clone of Java.
You wouldn’t happen to be talking about JOOS, are you ? It’s used everywhere…
[This message has been edited by PH (edited 05-22-2002).]
They had “Decaf” (easy) and “Espresso” (for crazy people with too much free time).
I took it earlier, but:
>>>Maybe I just hate academia in general.<<<
Im surprised that you are saying that about MIT. Isnt MIT on the #1 wish list of every techy wanna be student?
PS: I definitly hate it. Math for computer science was BS. I prefer calculus courses. … and those not-so-great linear algebra courses turn out to be extremely useful now!
Ah yes, the big creativity drain that is school in which everyone must learn the same thing in short amount of time while keeping things as general as possible.
Originally posted by mcraighead:
My compiler class had us write a compiler – in Java – for a clone of Java.
Ah, sounds very very similar to “fika-projektet” (“coffee-project”) we did here at Luth. A java-clone implemented in java. Cool for learning the language. I’m quite disappointed at my university too, they teach too much java, too little C and hardly anything C++. I have classmates who hardly are able to deal with malloc/free and basic string, char *, operations. Even some of the base code we have been using in labs in some courses where we used C it’s strikingly obvious that the guy who wrote it is from the java generation of programmers. Lot’s of malloc(), no free(). And that’s what we’re supposed to build our apps on
MIT isn’t so great. I think the program is far too theory-heavy.
I was a CS guy. In our school (KTH), at least at the time, the Comp Sci people had the most required math of everyone (even more than the physics people, IIRC!)
Evenso, I now (ten years later) wish that I had either gone to a math program (for getting really hardcore on something that has a 1000-year half-life) or gone to an EE program (where they taught a lot more of the things I actually had to learn on the job).
Comp Sci is mostly useless if you want immediately applicable skills. Software Engineering is where it’s at for that, and even there it’s a lot of “here’s how to write SQL report parsers in Visual Basic.”
I guess to be good, you gotta have all three: Comp Sci for theory, Soft Eng for practice, and actual experience doing the real thing.
Anyway, which goes to show that I’m not surprised that job postings like this stay up for long. In fact, I think any company in need of a person like this might need more than one, and will just keep running the posting as a feeler to get good candidates.
Well, this thread has gone wildly off-topic, but I’ll add.
The most useful things I ever learned in school were the basics of math and science. I learned a lot of useless specifics, too, and I think that’s the reason that universities try to be theory-heavy. In school, it’s better to learn important ideas in a useless language than useless ideas in an important language.
Plus, it’s easier for the professors to keep track of the important ideas. They change less frequently.
Along the same lines, academia doesn’t track transient stuff well. They can tell you all about sorting algorithms, but don’t ask them about current graphics architectures. A game programmer’s likely to know much more about current graphics architectures.
I’ll end my irrelevant musings now.
Just read through this thread, very interesting.
We are currently looking for someone to undertake OpenGL Graphics Driver and chip development here in the UK.
Device driver writing and hardware level programming is a pre-requisite.
Bit of a longshot but anybody know of a developer based in the UK/EU?