DEV Community

Cover image for Engineering vs. crafting
Marko Bjelac
Marko Bjelac

Posted on

Engineering vs. crafting

Cover photo by myself - my kids made holiday honey-cookies


Last year Dave Farley published a segment from one of his Engineering room interviews with Emily Bache.

It was somewhat provocatively titled:

What Is A Software Engineer? | Craftsmanship Movement Was A "Step Backwards"

Yet another scenario which goes like this:

  1. a minority struggles to become a majority
  2. everyone else ignores them
  3. during the struggle the minority fractures and starts bickering amongst themselves, creating several even smaller minorities
  4. everyone else ignores them even more

The minority I'm referring to are programmers (i.e. people making and modifying code for a living) who are doing their jobs with the highest level of quality possible. What is quality and what is possible are topics for themselves but this is the gist.

The programming-as-craft concept was more or less completely described a while ago by Bob Martin's post What Software Craftsmanship is about.

Dave's approach is that software engineering is not craft because it brings something else to the discipline. I have not figured out what. Software-as-craft does not imply the absence of TDD, BDD, continuous integration, deployment, delivery or any other "engineering-like" practice.

To take a step backwards (or rather, tilt our heads), what is art?

There are multiple definitions. Among those listed I think this one is closest to the context:

(countable) Skillful creative activity, usually with an aesthetic focus.
She's mastered the art of programming.

The examples gives it away I admit - programming can be art.

So can engineering.

This is surely art:

Vincent Van Gogh: Café Terrace at Night, 1888. COURTESY WIKIMEDIA COMMONS

I'm sure most people will agree that this is also art:

Chrysler Building spire, Manhattan, by Carol Highsmith

However, there is a huge difference. Buildings also have a type of art seldom visible to most people. The building's structure & infrastructure are very complex feats of engineering. They required a lot of thought, planning, collaboration & quality of work which can be thought of as huge pieces of art. They are even more magnificent than a painting (or an architect's drawing) because they involve hard work & skill invested by a lot of individuals. My point is, categories are often fuzzy.

Programming can be art.

Programming can be craft.

Programming can be engineering.

Programming can also be none of the above. It can be a sloppy mess.

The important thing is that today most of programming is neither art nor craft nor engineering. It is a sloppy mess, hastily put together to meet a deadline and to make money quickly (mostly not going to the programmers themselves).

Here is a helpful diagram to paint the picture:

Developer type vs. number demonstrating the irrelevance of distinguishing between software crafters & engineers

Instead of bickering about esoteric categories, we should put our energy and imagination to work on how to reduce the number of slop-pushers and increase the number of crafters and engineers.

Top comments (2)

Collapse
 
fyodorio profile image
Fyodor

Everyone is trying to romanticize what they’re doing. It brings more meaning to life and to work. Funny thing is for some of us engineering is more romantic and for others craftsmanship is. It’s like favorite movie genres. Very personal. So any spiritual and philosophical wars about that are meaningless.

Collapse
 
anabujan profile image
Ana Bujan

agreed, deadline-driven slop is hard to erase. But if everyone were acquainted with Uncle Bob's principles or similar authors, who knows...