Recently at work, we rehashed our options regarding a piece of source code which my company bought largely on trust, without understanding what exactly differentiates its workings from an earlier version that we (meaning I) have been slicing and dicing for the last couple of months.
The software is a pre-Beta version of a commercial product, somewhat customized for our use.
The thing, and an earlier version, came with no user or technical documentation and no real API. So, while it needs to interface with the rest of our app, we (meaning I) have been engaged in an exercise akin to reading the I-Ching in order to figure it out.
The software is a C# ASP.NET app and it _was_ written according to Hoyle, as an n-tier app with an intermediary XML layer between the database and the business classes.
The bad news is that it’s buggy and will need further customization to meet our needs.
To complicate matters, the lead developer is the only person in the vendor’s shop who seems to know enough about the app to provide even user-level training, and he’s been engaged, apparently 24×7, in getting it ready for Beta release.
I should point out that my employer is nobody’s fool: he’s a man of ferocious energy and intellect who among other things built a million dollar estate from a semi-wreck of a house. For example, he did all of the wiring and 2 levels of hardwood flooring himself. HIMSELF.
Thus, he is not the type of person who tolerates dumb, and this application makes me feel really dumb.
I, who find economics, optics, computer hardware and geometry beyond ken, have nonetheless scored tolerably well in various IQ tests taken through the years. This no doubt tells you that IQ tests are poor measures even of analytical intelligence.
Thus, I’ve started to wonder if the discomfort I’ve felt in dealing with this notorious 3rd party application is an indicator that eligibility for SDI benefits based on mental incompetence is in my immediate future.
Out of curiosity, then, I did a Google search on the average IQ of computer programmers, and came across Robert Boyd’s blog: “Anecdotes and ponderings about corporate software projects, project methodology, offshore labor, software salesmen, programming patterns, contracting and other minutiae of Dilbertville.”
Here’s what he says (the stats, unfortunately, are unattributed):
What IQ level is required for software programming and IT administration jobs? There is a wealth of information, created largely for the Human Resources profession, attempting to estimate minimum IQ requirements for a plethora of skills and job functions. Minimum IQ requirements for enterprise-level software programming are generally estimated at about 110 to 115. Minimum IQ measurements for computer operators and administrators are generally estimated at 100 to 115.
If this is true, then I should be in the clear, even with my last year’s IQ test results of 135: hardly genius, but respectable, and “good enough” to develop enterprise-level software by about 20 points.
What this doesn’t tell you, though, is how smart you need to be to work with other programmers’ code, a feat that is generally recognized as requiring a higher skill set than rolling your own.
One thing is certain: we’ve studied the options (different software, different programmer) and have come to grips with the clutch reality: the client expects results this week, and I’m the only one available to make the delivery.
I’ll let you know how it all turns out.