http://qs321.pair.com?node_id=314940

Hello once again, my fellow Monks. Before I get started, I feel I must confess that this post is vaguely off-topic. Furthermore, I have not done any research on the subject. Perhaps it is covered extensively elsewhere, and will be redundant and boring. I present simply my thoughts, with the hope that they might provoke some interesting discussion.

Last week I stumbled upon an inconsequential quote buried in my [nearly pointless] Principles of Management textbook. I do not have the exact quote, but it was about outsourcing, and referred to programming as a low skill occupation. This caught me slightly offguard, but then I thought about a growing (to my eyes) number of people who consider programming a craft, rather than a science.

It made me think about other crafts, and the connotations that come with them. To me it seems that "mere crafts" are often delegated to a lower status than other occupations. Consider a carpenter or mason. While a large amount of skill is not required to perform these jobs at a basic level, the skill demonstrated by those who do the job excellently can range from high to masterful. There is a continuum of skill here, but, in my experience, many people on the outside focus on the lower end of the continuum.

It seems to me that programming a computer is becoming something like this. There are those with a level of skill that is barely adequate, and those with a level of skill that is simply amazing. I wonder if this will continue to become more pronounced, or whether perhaps it has been this way the whole time. Maybe it is something that's always been there, but I am only now becoming aware of it. In any case, I think it is useful to at least consider the continuum. This should leave some of us free to reach for the higher levels of craftmanship, while also helping remind us not to be contempuous of those on the lower end. After all, someone must build the tract homes of the software universe. 8^)

Another interesting aspect of this analogy is that it leaves a place for those who would rather call themselves a Software Engineer than a Programmer. There is plenty of room for both Engineers and Craftsmen, even on a single project. Maybe in the future these will become altogether separate jobs in the software world, and this will be a good thing. This might already be the case. I do not have extensive experience in the software industry, but it seems, from the little I do have, that Software Engineer and Computer Programmer are essentially synonyms, even if the former perhaps sounds more important to a certain portion of the population.

Again, I submit this might be pointless and redundant rambling. Perhaps I am pointing out things that are blindingly obvious to most of you here. If so, there is likely some other aspect to this picture I have completely missed -- please share! I guess I wrote this in a somewhat selfish attempt to gain insight by the replies of more experienced Monks. Hopefully it will bear fruit...

Update: thanks to simonm for the catch. changed "track" to "tract"