I know a guy who has an interesting take on programmers. He views them as modern day plumbers or mechanics. Whether that sounds negative or positive to you, (I think he means it in a mostly negative way) the parallels are there. The truth is, I agree with him.
Now, when I say I know this guy, I mean we frequent the same internet. He’s a very intelligent person and someone whose opinion I respect and value. He’s also a man who has needed programmers to achieve his goals for a long time now and he’s seen probably more bad than good out of them. Just like when you get screwed by a mechanic, paying a large sum of money for a hunk of junk program feels rotten. If you try someone else and the same thing happens, you start to think they’re all out to get you.
Like a plumber, you’re paying for a skill you don’t posses, but you get the general idea of the task and believe you’re paying mostly for a convenience rather than for something you couldn’t do if you tried. After all, who has time to learn the trade on top of your normal job. It doesn’t take much to claim to be a programmer or a plumber, all it takes is moderately more knowledge than the average person and people will generally take your word for it. That is of course selling the craft short. There are endless nuances to a profession that you only learn through experience. A good plumber, like a good mechanic, like a good programmer, is something people search for. When you find one you go back to them repeatedly.
Mechanics, plumbers, and programmers work in similar ways at a low level. Each is working on small components which integrate into a larger set of components to form a functioning system. The care taken with the small pieces create the overall stability and reliability of the full machine. An experienced mechanic or plumber can anticipate the bigger picture and plan for it accordingly while avoiding common pitfalls. They can also work more efficiently, wasting less time debugging problems. Having good people to execute on the details that form the system is essential. But these grease monkeys working hands on with the individual modules and living in the trenches are only part of the picture, albeit an important one.
When you think of a mechanic, you don’t usually think of the engineer who worked miracles to design the engine. The type of thinking that goes into the architecture of a complete system is remarkable. It takes a mental capacity to consider thousands of conditions, execution paths, and outcomes while sorting them all out in the end to understand the end result. It’s the same with software engineering. People who think computer programs are simple are only being fooled by the illusion created when software is done right. In the same way as you might think your automatic transmission is a simple thing, it’s just one marvel of engineering that is part of an even larger feat that seems almost impossible.
When the engineering is good enough and the plan is fully thought through, the actual execution of components is mechanical. If the software engineers, the mechanical service engineers, whatever, do a good enough job planning and designing and diagramming the program conditions, the coders, plumbers, and mechanics can execute on the plan with their tools of expertise.
At the heart of it, programmers, like plumbers and mechanics, are craftsman. The good ones are worth their weight in gold. They will help make your goals more achievable through their work. One might see them as a means to an end, and they are, but without them the bigger picture is lost. It’s a good time to know how to make computers do things for people and that’s unlikely to change. Likewise people will rely on mechanics to get them where they need to go and plumbers to keep their house in order, also unlikely to change any time soon. Sometimes they’re the guy behind the guy who changed everything, and sometimes they’re just some shlub who fell short when you put your trust in them. It doesn’t make a trade any less important. Comparing programmers to mechanics isn’t an insult in my opinion, especially if you consider the full spectrum of what’s being asked of them. After all, who doesn’t wish they were more handy around a wrench?