“Craft Over Art” is a pretty straight forward apprenticeship pattern that is easy for many to overlook. At its foundation it means that you’re program and code can look elegant, but the main focus should be that it is useful. You can’t get too caught up in the elegant design of your code that you sacrifice functionality. This can be a difficult balance to find though because programming is something that you need to present to a customer and if there is no beauty at all then the customer won’t want to accept the project as meeting specifications. The pattern also raises a strong point that if the software breaks it may be better to make a quick repair that solves the problem that may not look nice, but it gets the program up and running again. We should see ourselves as craftsmen that need to make something work as the main priority, the same as an electrician for example.
A friend of mine is an apprentice electrician and this pattern reminds me of a conversation that we had. He was describing an electrical panel that he had to wire. He was excited with how neatly and organized it came out. While our conversation didn’t specifically get into the topic of functionality it was a simple panel and the functionality was implied. As a craftman the functionality of his project was so fundamental that it was not even thought about to mention. The fact that he completed it means that it met its functionality goal. The emphasis was on the beauty that was achieved. He put craft over art and since the art was optional and a preferred goal, but not required, that was the bragging point. Because it was above and beyond the standard.
After thinking on this post I hope to move forward with this in mind not only for programming, but in most of the things that I do. The baseline for success in programming should be two simple questions; “is it functional?” and “does it solve the original issue?” If you’re able to answer yes to both of these questions then we can start working on the artistry and beautification of the code. While a certain level of beauty may be important to the client I feel like if it is not functional than no amount of beauty or elegance will fix that.