Software Engineers, Craftsman, and Artisans
You may associate these words with the types of things that they create. In our minds, we might associate engineers with creating system integration projects and mission critical systems. Craftsmen would be the kind of folk who create kitschy programs that serve no purpose other than entertainment. Finally an artisan would be someone who creates something that is both useful and beautiful. But that really isn‘t true. The difference doesn‘t lie in what these people create, but in how they work.
An engineer is concerned with metric proofs and solid evidence. They decide which approach to take based on tests, and typically choose the approach based on tests that show program efficiency. These are the guys that might color by numbers, so the approaches tend to be sterile, cookie cutter approaches. Nothing new is ventured as long as all the existing approaches fit the numbers they are looking for. Management likes this kind of person because they fit nicely into the corporate mold. Nevertheless, if something works, they don’t see if they can make it work better . That is the major problem.
A craftsman cares about the little things. They like elegance even in the code. They don‘t mind spending extra time on the areas that matter most to them. A craftsman is also quite adventurous, and will try new things just because they can. If it works out, they‘ll probably try it on a bigger scale. As a result of all the extra attention and experimentation, they are willing to gamble a lot more. Sometimes this pans out, other times not. Management doesn‘t like this kind of person because they are hard to control, and worse, hard to predict. Artistic things matter to them, and numbers do not.
An artisan is somewhere between the craftsman and the engineer. They perform all kinds of tests to know their tools and their materials. They still have an eye for elegance, but it is always balanced against the whole project. After all, what good is having one good part in the midst of mediocre parts? It looks Frankenstein like. They are fond of experimentation, but it is always within the larger confines of their vision. Management can respect these people, because they are predictable, and they do bring issues to light that can‘t be measured accurately, but have a profound impact on the project. Aesthetics matter, but not to the exclusion of function.
Of the three, it is the artisan that can produce higher quality apprentices who can themselves become artisans. Engineers are too machine-like for their own good. Now, there are people who call themselves engineers but behave like artisans. There are also people who are engineers to the bone and scorn any artistic influence at all — particularly on code, like that can do any good. Artisans are very pragmatic and knowledgeable people. They do realize the importance of elegant, understandable code that performs its task without half trying.
So, which one are you?
