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.