Sign of an Immature Programmer

This is a bit of a sticky subject, akin to the endless debates on what makes a “real” programmer (not to be confused with a Real Programmer). I don’t use the term professional because that simply denotes something that you do for pay, with the assumption that if you’re being paid for it, you have a certain level of competence.

However, there are stages of development that people seem to go through as a programmer. Just because one is at a certain stage doesn’t imply goodness or badness, it’s simply where one is at.

I’ve been working with a remote team in a not-to-be-disclosed location, and have been struggling with their work because while they can code, their practices have a lot to be desired. At first I attributed it to incompetence (of which there is a degree), but for my current struggle, I’ve settled on the explanation that they’re still immature in their development practices.

The thing I’m struggling with right now is revision control. In past discussions, I’ve been told that there’s not enough time, the schedule will be hurt, it’s too much trouble. Now that I’ve been forced to cut off direct access to the servers and have said, only through revision control, the truth has come out. The e-mail said, in essence, “Uhm… what’s revision control and can you tell us how it works?”

These people are technically professionals with degrees in computer science, but in my book this is a sign of underdeveloped maturity as a programmer. Revision control is an extremely liberating tool that allows one to work with reckless abandon, knowing that the next “I don’t believe I did that” moment falls from being a devastating heart-stopping mistake to an annoyance. It’s used to varying degrees by individuals, but at least in my circles, I don’t know of a single competent programmer that doesn’t have some form of personal revision control system in place.

In professional situations, a lack of revision control is in my book inexcusable. Client assets need protection, the software process needs the flexibility and surety, and developers don’t need the headaches.

Now it’s a interpersonal and management problem that I have. The inner annoyed part of me wants to say, “RTFM.” But we have work to do, so I’ll need to do a little hand-holding to not interrupt the flow.


2 thoughts on “Sign of an Immature Programmer

  1. Kok-Yong Tan

    I used to be a C++ programmer on Sun Unix systems back in the early till mid-90’s. Even when I was in college earning my CS degree back in the mid-80’s, revision control (SCCS, RCS, CVS, etc.; i.e., systems that predated Subversion, Git and Mercurial) was taught to everyone taking Software Engineering 101 in addition to learning how to nail down tech specs, func specs, delivery timetables, etc. So, when somebody who’s supposed to have majored in CS asks, “What’s revision control?” the first thing that comes to my mind is “Where did you get that degree from? A crackerjack box? Or Uncle Al’s Online School of Programming and TV and Radio Repair?” Seriously. Immaturity has nothing to do with it. It shows someone who was never trained right and who has never worked on anything bigger than a one-person, semester/quarter-long homework/project because it’d be obvious to anyone with half a brain that they needed something like that as soon as they hit the first “Oh shit! I shouldn’t have done that. Now nothing works and I’m screwed.” moment. That they didn’t know about revision control tells me that either they’ve never done projects big enough to require it or they’ve not learned from experience. Regardless of which, it’s not a good thing. My two cents worth.

  2. James Reuben Knowles Post author

    I think we’re saying very similar things. I think I should clarify that I don’t mean personal immaturity at all. I mean professionally, i.e. the person hasn’t developed what I would consider core competencies in a professional environment.

    It may be training, exposure, experience, or whatever… the person still has a ways to go professionally.

Leave a Reply