Sunday, January 22, 2017

What makes a good programmer? Or an enjoyable career in programming?

Going through my old magazines, I found What Makes a Good Programmer? by Cegielski and Hall. My nephew is considering a career in software, so I cut it out from my dead-trees issue and brought it with me on a visit. The article is rather academic, and in my mind the title is a bit ambitious. Here's the short version.
Students who took a course in object-oriented programming were given psychological tests before the course began, and the test measurements were compared with their performance in the (16-week) class. The authors concluded that three psychological factors correlated well with student performance in the OO programming course:
  • Theoretical value belief, a personality trait that values proof during the problem-solving process. Basically, theoretical value belief means you think the scientific method (form a hypothesis, run experiments to test your hypothesis, etc.) is worthwhile; you don't put much weight on ideas that aren't proven.
  • Cognitive ability, basically you're smart enough.
  • Personality, and these traits in particular:
    1. High self-esteem
      basically you think well of yourself. This might be important if, when you face a problem, you think you're smart enough to figure it out (rather than give up).
    2. High self-efficacy
      meaning you believe you can apply the resources needed to push through challenges.
    3. "Locus of control"--
      you see yourself as being able to make things happen; you don't see yourself as just a victim of circumstance.
    4. Low neuroticism
      meaning you don't focus excessively on negative aspects of yourself.
The authors had some assumptions, which have escaped me, but I think the surprising thing was that theoretical value belief was a better predictor of OO programming performance (in the class anyway) than raw cognitive ability.
Naturally I have a few comments on the article. Although performance in an OO programming class is easier to measure than success in a multi-year programming career, it really is a different thing. Come to think of it, studies have been done on longevity—comparing for example the proportion of male and female programmers who are still in the field N years after graduation, and so on. It might be interesting to correlate that with the psychological parameters mentioned in the 2006 article.

And as I mentioned to my nephew, one thing that wasn't studied, but makes for an enjoyable career in programming is, well, enjoyment of the programming process! This includes analysis, design, coding, testing, debugging, and documentation.

I obviously enjoy the craft; my latest recreational thing has been hacking a Python script to solve the soma cube. (I hesitate to mention this because you really don't have to enjoy it that much, really…) I was quite pleased to find that my script found 240 unique solutions. But that's already more than you wanted to know.

I also obviously enjoy writing about programming and debugging, too, as shown in this 2014 blog post about a freebsd kernel panic and other posts related to computers.

Oh, and this post from last August about my life as a computer guy.

No comments: