Tim Ward said:
After some mistakes with hiring some people who only understood high level
languages and hadn't a clue how a computer actually worked I've taken to
being very reluctant to hire someone who's never written assembler.
For me, this is more a question of experience. Someone with a lot of
experience has almost always had to delve into the machine pretty deeply
on at least one occasion. Junior employees, on the other hand, may not
have.
I have found profilers to be my watershed question. If someone has used
one, and understands the "premature optimization is the root of all
evil", especially why it is evil and why premature is such an important
word, then they probably understand just how things can differ.
Heck, asking the loaded question "I am told that my matrix factorization
routine runs 100x more slowly on one machine than another. Where to
begin hunting down the problem?" will often tell me a great deal about a
candidate. If he knows to ask whether it uses a square root, then
points out that on G3 and G4 architectures, the square root fn was in
software, he gets extra points, but merely considering that
architectures differ is a good start.
They don't have to have done much work in assembler, just a college
course will do, but that's enough to give them a clue why similar
looking lines of high level code might have a factor of 1,000
difference in execution times.
My experience says that anyone who can haul out a profiler gets the low
level understanding points. I do not do embedded systems, though, where
even C can be too high level, and the best coders write code that is
several orders of magnitude faster and somewhat smaller to boot than
that written by the also rans.
Really one might prefer only to hire people who've written compilers, but
that's a bit like wanting to hire programmers only if they've got a
touch-typing qualification - there aren't enough around.
Heh. I know what you mean. When I was a wee college lad, I skipped the
formal compiler design course, figuring I would not need it. I then got
to pick it up from the dragon book and a lot of sweat when I was put in
charge of implementing a matrix language for a client.
Scott
(e-mail address removed)
Java, Cocoa, WebObjects and Database consulting