Up to one or two centuries ago, most people still worked in fields where they could directly see the result of their labour. A peasant would work on the field, and at the end of the day look at several nicely ploughed tracks, or know that the seed has been successfully brought out before the weather changed, or that the harvest was brought in just in time. A craftsman would sit in his workshop, execute the many different work steps belonging to his craft, and enjoy a sense of completion and accomplishment when looking at the well-crafted product of his labour.
The production process was experienced as a whole and was often in the hand of a single person or small team from collecting and processing raw materials to adding the last touches. In many cases this person or team also had ownership of the raw materials and product.
How different our work life has become today! Production processes have been broken down into thousands of steps which are scattered over countries, enterprises and individuals. Many of us work in “supportive processes” such as HR, controlling, or QA, but even those who work directly in the core process of what their company produces must often feel as tiny wheels in a giant machine, lacking an idea of the whole and an understanding of their role in it.
Philosopher Karl Marx described this development as a key element of his work and calls it “alienation” (see the Wikipedia entry).
Reading in Vijay Vijayasankar’s recent blog Don’t tell me I am OBSOLETE – it hurts ! about how good it felt to go back to coding even for a day after achieving a degree of professional seniority that usually means giving up coding, I realized that many people must share this strong reaction, this intense feeling of the joy of coding with Vijay and me. Frankly, programming is the only thing that gets me to work through the entire day, night and the following day – money or flattering words can’t do that, and whether or not programming is still part of your job description, it’s quite probable you’ll feel the same way. But why?
I think the reason is that when we program, we are often in the very privileged position to create something from the first vague idea to the complete program. Everybody acknowledges that the program is “ours”, it bears our personal coding style as an imprint of our individuality, and people will consult us first before touching it if we allow that (and often enough if we don’t). We oversee the entire production process from raw materials (ideas) to finished product (running software) and even have a sense of ownership of the final product.
So in many ways, the work experience of a modern-day programmer is more like that of an ancient-times blacksmith, carpenter, or baker, than that of a modern-day office worker suffering from alienation from the production process. We can draw pride and great satisfaction from having a clearly identifiable product of our day’s work. This is why we programmers are very privileged to practise a craft that is in many ways wonderfully old-fashioned.
Obviously, in recent years the software production process has undergone a tendency to be broken down and deskilled like most other production processes, so you might call me naïve for depicting it the way I did. Surely, my understanding of historic work processes is quite naïve as well.
But the next time you hit F8 at 10 PM, feeling happy that your program runs smoothly and deciding to stay for a few more hours because an idea for an improvement has just entered your mind, you’ll know how important the sense of accomplishment that comes from complete identification with the result of your labour is.