Master of Fine Arts in Software

Monday 1 September 2003This is almost 20 years old. Be careful.

Richard P. Gabriel has a proposal for a Master of Fine Arts in Software degree. He thinks the “software engineering” mindset is all wrong, and proposes a program to reverse that thinking. He says of the degree:

One way to look at it is that the student is writing, designing, and working with software while paying attention.


“While paying attention” is achieved principally through writing short essays called annotations. An annotation is a vehicle for the student to pay attention to one craft element at a time. A craft element is something that makes software effective and beautiful. Craft elements can range from the smallest coding details such as the choice of variable, function, class, or method names through the design of interfaces and protocols through the layout of information on a screen to the largest concerns such as the architecture of a system and descriptions of what to design.

I love this idea. I think no detail is too small to be considered. I’d like to think that my small but growing collection of essays can count as annotations.


I agree with this. Software is essentially a craft, and not an industrial discipline. If you look at the internal structure of most software-making groups, you'll find that it's not much different than a medieval guild. This is certainly clear when business neccessities attempt to press industrial management techniques (like, for example, the omnipresent Gantt chart, named for Henry Gantt, a graduate student of sorts of FW Taylor, the father of the industrial method of breaking tasks into smaller parts, taking them from "workbench style" craftsmanship where a single craftsman makes, say, a whole shoe to an assembly-line style production where one person may do only one task over and over). There are lots of kinds of work that have certain irreducible parts that can only be produced via the craft of the individual worker. It's possible to take the process of making a car and break it down into repetitive parallel tasks for 250 workers, but think, for example, of the process of writing a news story. It wouldn't make any sense to have 100 journalists each writing one sentence of a 100 line story -- the supervision it would take to make the end product useable would be so excessive that it wouldn't be worth it. This is the essential mark of a craft job -- the cost of managing it into an industrial job exceeds any concievable profit you would get from it. Software certainly falls into this category.
Ned, I you were the first person that ever used the word \"choreography\" when discussing the behavior of software. It opened up a whole new level of insight for me. Now I always think of thread interaction as a dance; some clunkier, like clumsy couple waltzing; and some more intricate, like a large line dance.

Thinking of it in a more \"artsy\" form seemed a bit alien at first, but made an enormous amount of sense over time.

Plus, I hated calculus.
nice escapes on the quotes...
Ned, you are clearly in line for a professorship in this program

Add a comment:

Ignore this:
Leave this empty:
Name is required. Either email or web are required. Email won't be displayed and I won't spam you. Your web site won't be indexed by search engines.
Don't put anything here:
Leave this empty:
Comment text is Markdown.