Too great an emphasis is placed on hiring people that know specific APIs or tools, thus avoiding more competent programmers.
Michael D. Crawford
GoingWare Inc.
July 10, 2003
Copyright © 2003 Michael D. Crawford. All Rights Reserved.
A potential client wrote to me today to ask if I had the skills required to develop his software. I'd like you to read my response.
He wrote:
Subject: Michael,very nice resume
Date: Thu, 10 Jul 2003 14:15:10 -0700How familiar are you with packet writing session software and CD-R?
Here is my reply:
Thank you for writing. I'm glad you like my resume. I worked hard to get it that way.
While I have done a lot of work with SCSI and a little with ATA, I'm afraid I've never worked with either packet writing or CD-R software except as a user.
I would be quite interested to learn though. You can see from my resume that I've done a lot of different stuff. That experience doesn't come from being afraid to jump in and do new and different things. I realize that sometimes requires a client to take something of a risk in hiring me.
On the other hand, I have many years of experience, and a very good grounding in the fundamentals. Too many programmers devote too much of their time learning to operate specific APIs without really ever coming to an understanding of what lies underneath the way things work. Having that understanding is what makes me so adaptible. I got there by constantly striving to learn new skills and sharpen old ones. Early in my career, I accepted new jobs largely because of the opportunities they presented to learn new things. Nowadays I regularly buy new technical books and study them.
I am also particularly good at debugging just about anything. My system software job at Apple consisted almost entirely of debugging the Mac OS with the MacsBug assembly debugger. I got that job because I got so good at debugging Mac software while I was Product Development Manager at Working Software. I got so good at WSI because their previous programmer wrote a lot of really bad code, and I had to fix it :->
If you'd like to talk on the phone, you can reach me at (831) 401-3790.
I feel that these days, far too great an emphasis is placed on hiring candidates that know the specific APIs or tools used in the work. This comes at the cost of not hiring candidates who are actually competent programmers.
This leads to buggy and slow code, delays in product development, trouble when unexpected problems arise, and an inability to adapt when the skills needed to develop your software inevitably change over time.
It also leads to the absurd situation in which experienced, skilled and productive developers often cannot find work, because inexperienced and unskilled programmers are hired because they are fortunate enough to be able to list a particular buzzword on their resume. They get those buzzwords because they focussed on whatever was hot when they first learned to program. Despite the fact that experienced programmers can learn new APIs quickly, they are given no credit for the years of work they have spent writing other sorts of software.
Whether or not you choose to hire me to develop your software, I respectfully request that you base your decision to hire any programmer, not just me, on your impression of their competence to develop any sort of software. You will be far better off for doing so, and your company will prosper as a result. If everyone hired programmers this way, we would all be better off because our industry would be healthier. Even the inexperienced programmers would benefit, as they would learn to place greater emphasis on deeper comprehension, and ultimately become flexible enough to do anything themselves.
In job interviews, try asking candidates how they'd approach specific programming problems that are quite outside their area of expertise. Many programmers will be completely snowed by such questions - but some won't be, they may not give the correct answer but you will be able to tell by the way they explore the problem that they have a clue. These programmers are the ones you want to have working for you.
Knowing how to play a few specific tunes doesn't make you a musician. Knowing your chops does.
Thank you for your attention.
Michael D. Crawford
GoingWare Inc. - Expert Software Development and Consulting
http://www.goingware.com/
crawford@goingware.com
Tilting at Windmills for a Better Tomorrow.