Related link: http://www.understandingxml.com
If things at work aren’t too insane, after her school gets out I occasionally pick up my just turned six kindergartener and take her out to a particular restaurant near where we live for “second lunch” and a chance for her to run around the inside playground equipment (in the spring and summer, we usually go out to parks instead, but the winter is a little too unforgiving in Victoria for that). It is a not uncommon destination for a lot of the kindergarten class, so I’ve reached a point where I actually know many of the other parents well enough to banter and talk.
On one such day, I had a chance to talk to an older gentleman from Toronto, a third generation Chinese-Canadian immigrant who had come to work first in Toronto then later Victoria for the Canadian department responsible for handling maps and cartography. We talked for some time, and he laid out a story about his time starting from a young draughtsman and working his way up to being a senior cartographer. It was a fascinating tale: in the 1950s when he started, cartography was a matter of art as it was of science - you had to be adept with pen and airbrush, had to be able to interpret arial photographs and needed a fairly deep understanding of geology, property law (your work was often the reference by which lawsuits were settled), and mathematics.
What’s more, you had to be careful, meticulous, yet amazingly fast, to the extent that what most entry-level cartographers could expect would be sharpening pencils and erasing pencil marks from finished work for the first year or so. While it was considered a white collar job (one of the first such technical jobs in that designation, in fact) at the same time there was an apprentice/journeyman/master relationship that was as clear cut as any guild.
Not surprisingly, computers were devastating to the field, while simultaneously pushing it into warp drive. Computers were especially good at such things initially as plotting isoclines, relying first upon a grid of gravitational surveyer coordinates and later upon laser-based telemetry and GPS systems to plot gradients in a way that even the best map artist could only approximate with a well-painted twist of shading. Since isocline plots were especially useful maps for everything from real estate developers to mountaineers to city planners and aircraft pilots, these maps very quickly became the “next big thing” in the field.
However, in its wake, legions of skilled cartographers found pink slips on their draughting tables, including the grandfatherly figure I talked to. They were replaced by young kids who had only rudimentary ideas about geology but who were far more proficient on these new computer systems, who replaced meticulous renderings of schools, municipal buildings and houses with bright shiny symbols that came cookie-cutter like from a library of pre-approved graphics. Maps lost their artistic value, and increased the number of errors in them considerably, at least for a while.
Yet even after he’d been cashiered out, he would still get calls from the kids to come in and help them understand the subtleties of what they were dealing with. When his nephew came to him to tell him that the younger man was also going into the field, his uncle took him aside, and told him to learn computers first, then to go and then to learn his craft very, very well, to the extent that several years later the nephew ended up managing the same agency that had so unceremoniously gave his uncle his walking papers.
I then told him that I was going to speak at a conference in a few months on Geographical Information Systems or GIS (more specifically, GeoWeb 2006 on July 24-28 in Vancouver, BC), talking about the use of Scalable Vector Graphics and its emerging use in the GIS field. Unfortunately, he had to leave shortly after that, but before he left he pulled me aside and said, “be careful that you don’t let the art fade away in all the computer science.”
I’m entering Middle Age. Once, seemingly not too long ago, I was convinced that I was hot stuff, carrying with me a certainty of my own skills and talents that was, in retrospect, probably unwarranted arrogance. The cool stuff, pushing the technological envelope, taking the cutting edge wave and harnessing its power while remaining only slightly bloodied, that was all in a day’s work. I was also convinced that those who were more senior to me had earned their positions by dint of their brilliance, though that particular illusion has long since bit the dust. Finally, I think there was a part of me that readily acknowledged that I was still a boy, that my actions weren’t really that important to other people.
Lately, however, I see the gray peppering my red beard. I find losing the weight I’ve gained becomes far more difficult, and that my knees ache far more when climbing the stairs in my house than they used to. Those physical changes, however, seem to be accompanied by a growing realization of mental change, among them the realization that there is a joy to be taken in well designed code, a growing dissatisfaction when the solutions that I create are not elegant enough, and a growing impatience with younger programmers who are so eager to blaze through a project, pulling all nighters and subsisting on pizza, coffee and Red Bull to hit that arbitrary (and usually meaningly) deadline … and the almost as young managers who seem to see there is nothing wrong with this.
Perhaps I am on the edge of that same cusp that my cartographer friend faced, yet I think that there is another realization that I am also facing, one that seems to beat ever more insistently the older I get.
There is science in programming, certainly: the science of engineering, the science of algorithms, the intricate understanding of namespaces and function calls and the distinctions between imperative and declarative code. I think that a lot of schools teach the science of programming, and all too many businesses take that science and bastardize it in the name of getting the product out the door.
Yet for all of that, there is also art in programming. It is the art of the craftsman, the art of the draughtsman or the old style cartographer. It is the realization that you are reflected in the legacy of your code, that your ideas will shape and mold a generation of younger minds. It is holding your ground and insisting upon quality over speed, because you know that kludges are the shortcuts that you take out of fear, laziness or greed, and that such kludges detract from the potential for perfection in your code. It comes in studying both the new and the old, the new because from such come the seeds of inspiration, the old because this reflects the collected wisdom of programmers who struggled through the same problems and strived themselves towards the best solutions.
The irony, of course, is that as you gain mastery in this field, the field by its very nature tends to promote you up and out, putting yourself ever farther from the code even as you finally begin to come to some level of understanding about what’s really going on. I feel these pressures myself - while I still code, I find that the demands upon me to deal with the “larger issues” beyond the code, and the need to help educate the next generation of coders, grow accordingly. It is the chief’s dilemma, though most programmers would be horrified to realize that there is in fact such an analogy.
A good chief petty officer in the military comes to understand that his, or her (thanks, Sally!), value comes not in doing the tasks that they’ve mastered so well over the course of their careers as it is in both helping young seamen and petty officers learn how to master their own skills and helping young ensigns and lieutenants learn the confidence to lead and direct those under their command. It’s not just a matter of age - there are of course incompetent chiefs in any Navy (or sergeants in any army, or lead programmers/managers in the IT shop). I think that before you can become a master in any field you need to have a certain degree of intelligence, introspection, confidence, and perseverence … and the luck of talent certainly never hurts, so long as you realize that talent is simply another tool towards achieving mastery, and not necessarily the most important. That life-changing chief is an artist, a craftsman, a man or woman who understands that the ultimate goal of all art is to push us beyond what we are to what we could be.
So as you sit down to write your programs, to shape your products, to press against the boundaries of the possible, remember to not let the art fade away in all the computer science. You, and those who will live in the echoes of your legacy, will be better for it in the end.
Kurt Cagle is a writer and programmer.