4 years ago
Share this article Reddit Twitter Facebook Google+

4 reasons that you are an artisan, not a programmer

Definition of artisan and programmer

Artisan is a worker in a skilled trade, especially one that involves making things by hand -- Oxford Dictionaries
An artisan (from French: artisan, Italian: artigiano) is a skilled craft worker who makes or creates things by hand that may be functional or strictly decorative, for example furniture, decorative arts, sculptures, clothing, jewellery, food items, household items and tools or even mechanisms such as the handmade clockwork movement of a watchmaker. Artisans practice a craft and may through experience and aptitude reach the expressive levels of an artist. Wikipedia

A programmer, developer, dev, coder, or software engineer is a person who creates computer software. The term computer programmer can refer to a specialist in one area of computers or to a generalist who writes code for many kinds of software. Wikipedia

Why programmers should be artisan

Programmers should do unique and creative work

The two antonyms of uniqueness and creativity are probably repetitive and tedious. Unique is often creative, repetitive is often tedious.
Repetitive work does not mean low-level. Many so-called senior programmers in so-called big internet companies have been doing repetitive programming for decades, but are still able to get extremely high salaries and have a happy life. But such happiness is same as the assembly line workers getting happiness from their salaries. The work of the assembly line workers is undoubtedly repetitive, but the work of programmers should be unique and creative, because the computer technology should evolve.
To support your family, repeating your work is fine. But to be a programmer, you should not stop pursuing creative work even if you don't have enough knowledge to do so.
Creative work is not hard to reach. You don't need to develop a whole new operating system or invent a new compression algorithm to be creative. A little novel improvement in your development work can be called creativity. For example, assume you and your team are developing high performance software. Your team colleagues are following the O(N) time complexity algorithm that's handed down by your predecessors. You have made only a small improvement by doubling the memory usage then the algorithm runs on O(1) most of the time. Even if your improvement was popular all over the world a few years ago, it's a creative job for you and your team. This example is a real case I've been through at least once.

Programming is not only science, but also art.

If your task is to write a piece of code to calculate the value of 1 + 2, your program must output 3 to be correct, and the other values are clearly wrong. From this point of view, programming is indeed science. No matter how you improve, the result can only be 3. But programming is not just a rational science, it also contains some perceptual artistic components. These artistic components are not about correct or wrong, good or bad, but this gives you artisan unlimited room in pursuit of perfection. For example, for the code style, there is no right or wrong, but some programmers' code is so beautiful (let's only look at the format), while some programmers' code is messy. This is especially true for code structure design, architecture design, and so on. The work of a master of painting is worth 1 billion to some people, and it's just a paper to some others. This is not important to the master, because the master pursues the perfect work. Your program is often picked up by other programmers, but it doesn't matter, it's important that you pursue the perfection of your code like a master of painting, because programming is also art.

Programmers should pursue perfection work.

If you have agreed with me that programming is art, then you will also agree that we should have a never-ending pursuit of perfection. You may not know what perfection is, because there is no perfect thing in the world. But as an artist, when you look back at the code written 3-6 months ago, you should find room to improve so that you are one step closer to perfection.
Of course, reality doesn't always allow you to pursue perfection, such as the projects you do in the company, with clear delivery dates and quality standards, then your job can only be to deliver projects on time and by quality rather than in pursuit of perfection.

Programming should be built manually, not assembled on the assembly line

In today's network era, writing programs seem to become very easy. Typing the question into a search engine, choose the open source code repository or the forum answer from the search results, then copy and paste some code, you complete your task. But in that case, you're just a porter and assembler of code, and there's no contribution to advances in computer science other than increasing the number of lines of code on Earth and earning some of the wages that make your breadwinner.
This is similar to the assemblers on the assembly line. They undoubtedly create a great value, but that's not enough to star a new industrial revolution.
If you agree that programmers should do creative work, programming should be art, then similar to a skilled handmade artisan, the program should be handcrafted.


If you think of programming as a job, it's enough to be a programmer. But if you really love programming, start working as a programming artisan.