Fog Creek Software
g
Discussion Board




Minimum competency

What would you consider the absolute lowest tolerable performance from a programmer, at which point you would note that he's good enough to keep on as an employee, but not good enough that you wish you had a better co-worker?  What makes a programmer 'good enough' to remain employed in this business?

Let's start with other careers, and move towards programming, getting closer to what I intend.


First: a Wal-Mart checkout clerk

-does not argue with customers, i.e. 'will not create large incident', at least not often

-physically able to stand/lift dogfood bags

-cannot be off by more than a few dollars every day

-cannot break the law (sell to minors, steal merchandise, etc)


Now for your "Nick Burns, computer guy" help desk support job:

-able to fix simple problems and interpret user issues ("I can't find my excel file.  It's in my CD drive, but it was gone before I left for lunch, but it's back now on my window.  Where is Excel?" questions from the permanently-disoriented 'where am I?' users)

-able to set up printers, computers, etc.

-able to route complex problems to line II personnel



Now for a computer programmer.  You pick what's necessary, or add what I missed:

[  ]Understands immediate requirements/'problem specification' - understand the business need

[  ]Basic competency with IDE/language/environment - may misuse several functions and/or libraries, but gets the job done, if slower.  e.g. doesn't know there's 'an' XML class in the .NET framework, was reading them in as text files.

[  ]Code is bug-free, at least enough so that the program isn't severely broken, or so long as the cost of the bug is sufficiently low (define 'cost' and 'sufficiently low' yourself).  In other words, the code works well enough for the task it was assigned.

[  ]Coding is finished slowly, but is finished.

[  ]Functional communication skills, either via written or verbal.  Spelling ability optional.


I know we're all looking for (or looking to be?) superstars that essentially beam project requirements into perfectly-crafted products that sing of beauty and grace, and of elegance of design--and do it all in five minutes on a break while cordially chatting with other employees.  But we can't all be that.  So what would you say is a minimally competent programmer?  A minimally competent developer?  A minimally competent project lead?  A minimally competent CEO?


I used to say 'absolutely everyone can learn to program; it just takes a long time to get used to all the conventions', but now I'm beginning to think that the minimally competent programmer/developer/other programmer caste/whatever requires a lot more than just 'understanding what that if statement does'.

pds
Wednesday, May 12, 2004

"[  ]Code is bug-free, at least enough so that the program isn't severely broken, ..."

Which to me means "he/she tests it thoroughly before calling it done, and is dilligent about responding to testers submitted bugs".

The rest of the criteria I really don't care too much about.  This one can be measured (in practice, but not when considering a hire).

It also says alot about the developer's understanding of their place in the world.

hoser
Wednesday, May 12, 2004

"What makes a programmer 'good enough' to remain employed in this business?"

When they become good friends with thier manager.

apw
Wednesday, May 12, 2004

[] Able to map a network drive

DMap
Wednesday, May 12, 2004

A Maths or a Linguistics graduate. Perhaps one who's saxophone produces a non-irritant sound.

<ducks>

<g>

KayJay
Wednesday, May 12, 2004

Seriously,

[] Understands English (or whatever the primary language PHBs as well as the documentation use)

[] Performs inductive logic reasonably well

[] Some appreciation of deductive logic

[] Can say "I was wrong. Thank you for the heads-up"

[] Does not get hung-up on using "Frameworks"

KayJay
Wednesday, May 12, 2004

I find it unbelieveable how few people really get boolean logic.  This is a show stopper if you want to be a programmer.

christopher baus (www.baus.net)
Wednesday, May 12, 2004

I probably qualify as minimally compenent.

My code works good enough. Well, most of the time (hey, we all make mistakes).
I'm on a perpetual self-improvement kick, so I presume that I'm constantly improving, although perhaps not at the rate really smart folks do.
I have a pretty good idea of what my limitations are. I work on minimizing the ones I think I can and working around the ones I suspect I'll always have.

On the down side, I couldn't care less about closures. I don't care whether languageX is a programming language or 'just' a scripting language (I figure that everthing other than hand-coded machine language is 'just' a script). Given that all of the languages I've worked with have been Turing complete, I've stopped worrying about whether I'm selecting the best language for the job--the best language for the job is the one in which I have decent skills and for which there is a large enough talent pool to make me expendable (and i gotta tell ya, that keeps this particular minimally competent programmer on his toes!).

I actually used to think I was a pretty hot programmer, but as I learned more I realized that I was comparing myself with the wrong people. I like to think that I could be a darn good programmer if I would only give up rowing, band, swimming, skiing, cycling, and about a dozen other things.

Ron Porter
Wednesday, May 12, 2004

>>I could be a darn good programmer if I would only give up rowing, band, swimming, skiing, cycling, and about a dozen other things.

Are you like 14? <sigh>...please inform me by taping a note on the back before you take my job and leave me destitute and alone...

The Cowardly Type
Wednesday, May 12, 2004

I suppose a minimally competent programmer is someone who is doing the job just long enough to get promoted to a management job :-)

Data Miner
Thursday, May 13, 2004

I would be happy with someone who could just understand boolean variables.

one of my co workers writes code like this

while (bFinished = false) do...

or even worse
if (bClient = true)  then...

or even this, a real classic

if (some condition) then
  bFlag = true
else
  bFlag = false


this unneccessary verboseness drives me mental.



 

Alison, Dublin.
Thursday, May 13, 2004

>> this unneccessary verboseness drives me mental.

I saw this at a client site the other day :)

For x = 1 to n
  y = y + 1
Next

This sort of code was everywhere, of course management thought the developer was the bee's knee's

Tony Edgecombe
Thursday, May 13, 2004

---"if (some condition) then
  bFlag = true
else
  bFlag = false"----

The belt and braces approach, but possibly he was worried about triple state booleans.

Stephen Jones
Thursday, May 13, 2004

---"if (some condition) then
  bFlag = true
else
  bFlag = false"----

This isn't necessarily bad practice (hard to say from this snippet, though the format is a little odd.  I'd have gone:

bFlag = (some condition)

Steve McConnel in Code Complete advocates taking complex conditions and assigning a well named boolean, as it makes the code easier to read.  For example:

boolean userLoggedIn = (currentUser != null ) && (currentUser.active) && (currentTime - currentUser.lastLogin < idleLogouttime)

if ( userLoggedIn ) do something

A ficticious example, but you get the idea.

Chris Kessel
Thursday, May 13, 2004

*  Recent Topics

*  Fog Creek Home