[Tutor] Python Interview Questions..

Alan Gauld alan.gauld at btinternet.com
Fri May 27 10:59:25 CEST 2011


"Marc Tompkins" <marc.tompkins at gmail.com> wrote
> Java just isn't a hard enough language to separate great programmers
> from plodders (neither is Python, for that matter) because pointers
> and memory allocation are taken care of automagically.

I fundamentally disagree with his stand on this.

> When you're hiring programmers, (Joel says) you want people
> who understand what the computer is actually doing under
> all the chrome, and you want people who are smart enough
> to have actually passed classes where they had to do that stuff.

I have employed quantum physists and geoligists who had no
idea of how computers worked but they were plenty smart and
made good programmers.

A good programmer is someone who can think logically,
analyse and abstract a problem and express it clearly in
an implementation  language (regardless of what language
it is, they will probably use several in their career!)

There is a very small set of programming tasks where you
need to undertand the machine - developing an OS and
device drivers etc - but they are such a small part of the
industry that mostly we can be thankful that modern
languages hide the machine and let us focus on the
really hard stuff - understanding the customers world
and translating their requirements into code. Fred Brooks
identified this as far back as the 80's with his famous
"No Silver Bullet" article.

I started out as an electronics engineer, we wrote micro-code,
then machine code then assembler and finally Pascal.
Then I found C and so on. But I am profoundly grateful
that I no longer have to worry about which register to
store the result of an addition or which memory mode
I need to use in a subroutine call. There are equally
complex challenges in higher order programming than
there are in programming the machine. There is a role
for both, but the macho "I can do it faster in assembler"
attitude that sometimes arises is no more than ignorance
of the challenges elsewhere. I've worked with highly
technical programmers who couldn't understand how a
Corporate General Ledger accounting system worked
and so couldn't program solutions for it. But they
could explain in detail how the multi-threaded kernel
in the computer operated.

So language preferences are fine if they are based on
the language features. Computing and Programming are
something else again.

> for Getting Stuff Done - but when you spend your hard-earned money 
> for
> commercial software, or trust your computing life to an operating 
> system,
> you want to know that it was written by people who knew what the 
> hell they
> were doing, rather than people who scraped by in a Java School 
> 'cause the
> classes weren't too hard.

And this is another matter again. But if you are talking about
share dealing systems or traffic control systems or factory
automation I'd rather the programmer understood algorithms
and  the business functions than the difference between
page switching and banked memory access.

But I definitely want him/her to understand computing, and programming
in depth. I want them to have studied the subject deeply and have
a wealth of experience. Studying computing because its an easy option
is not an option because its never easy. And anyone who starts down
that road will be weeded out very quickly.

> We've all used software that was written by non-programmers
> - I'm struggling with just such a system at the moment - and
> life is just too damn short.

Software can only be written by programmers, its the definition
of the term. The issue is about whether the programmer was
trained in computing/engineering or whether it was someone
who just knew a programming language. Comp Sci was originally
a branch of math, and many of the best programmers I've worked
with came straight into the industry from math - but they had
to learn about defensive programming etc. But their algorithm
design often meant they had less to defend!

Seems to be my week for ranting... :-)

Alan G.




More information about the Tutor mailing list