Joy of Creating
I enjoy my work. I find it fulfilling and the problem solving to be engaging. Yet at the end of the day it’s work. The drudgery of completing tasks, the politics, the deadlines, can take away joy. Software development isn’t unique in this area, almost all jobs have this fine balance between fulfillment and drudgery which is why people have hobbies outside of work. Softball teams and woodworking, painting and poetry, all contribute to balancing our lives and bringing us joy through leisure.
Those who use work as a hobby often lead unbalanced lives. Working late nights and weekends will find themselves possibly ahead in their careers but unfulfilled in other areas. Yet there are those, like myself, who find that their hobbies can be tangential to their careers. That they may be a contractor building homes during the week but find it fulfilling to put an addition on their home on the weekend. A mechanic who spends his evenings restoring an old car. A developer who is writing their own applications.
I do this. My interest in computer science and software development extend beyond work. I find myself reading product development and process books on the weekend, building web apps in new (or old) languages in my spare time, and reading books on computational theory in the evenings. This interest in and around computer science has helped me move forward in my career at times but it has also created joy. This joy is not the same feeling as solving a complex problem (satisfaction), nor is it the feeling that comes when work is finally done (relief), but a deep feeling that puts a slight smile on your face and gives an inner warmth.
For years I’ve been teaching myself Clojure, a language that is at the same time simple and complex. Many advocates of the language will say that it causes you to “think” rather than just “code” making for more elegant, readable, and safer programs. I can’t put my finger on what the urge was for me to learn such a language but I will say that I’ve become a better programmer because of it. Not from using the language itself but rather what that language opened up for me, a whole world of exploration and understanding into the complex and intricate history of mathematics and computational theory. A merging of two worlds that have always been interesting.
In the past Lisp (which Clojure is) was considered a “research language” while others such as C were “industrial” to a certain extent. Industrial languages are still present today ranging from COBOL to Java to Go. I use “industrial” languages during my day job but I have spent a lot of time creating things with Clojure. Though I would say I’ve not built anything of any significance and I’m still learning what I have built and explored has brought a certain amount of enlightenment. Over the last few months I’ve been working through the “Little Schemer” off and on working through the exercises in Clojure. The other day I completed the last section titled “What is the value of all of this?” where in the end you have built a whole Scheme interpreter. “What is the value of all of this?” is a question similar to “Why would I do this?” and the simple answer was, “because I can” but a better answer I think was, “because it helped me learn and grow and brought me joy”. The creation of something after a bunch of work and education brought a lot of joy. Joy that I can carry throughout the work week and in the coming months.