Skip to main content

CS for Poets

Posted by daniel on December 10, 2003 at 8:33 AM PST

"Traditions of computer science and software engineering have tried to turn all aspects of software creation into a pure engineering discipline, when they clearly are not. The MFA in software would begin to repair this error."

In so many ways, Richard Gabriel's thesis makes a lot of sense. What if we trained computer scientists the same way we trained poets and artists. In Also in Java Today we link to Janice Heiss' discussion with Gabriel on The Poetry of Programming. Dick recounts Mark Strands advice to him that when it comes to poetry "more or less, that how good you are depends on how many poems you've written in your life. About two and a half years ago, I started writing a poem a day, and I've gotten way better since I started doing that."

This comes to around 1000 poems. What is it we do with a budding programmer? Dick suggests that we "Compare that to how many programs someone has written before they're considered a software developer or engineer. Have they written 1000? No, they've probably written 50. So, the idea behind the MFA in software is that if we want to get good at writing software, we have to practice it, we have to have a critical literature, and we have to have a critical context. It looks like we may be able to start a program like that in the next year or so at a major university that I'm not free to name. It's probably going to be called a Master of Software Arts."

He's not the first to talk of software of a craft or of training programmers the way we do craftspeople or artists. Do students study the classics? Do they try to capture the same subject using different media? What might be the analogue to using paint, charcoal, pencil, clay to represent the same still life? With art we say to our students "look again, now what do you see." With programming we say "make it do this my Tuesday then move on to the next assignment." Gabriel says,

I think developers already know but are a little afraid to admit that writing software is a creative activity that requires a lot of interaction with the people who are going to use it. Writing software is a highly iterative, dynamic process requiring user feedback. Again, it's like writing poetry in that you write some of it, and then you respond to it, which triggers more creativity, and you keep going. Then, you show it to someone whose opinion you respect, and you see it differently.

He explains that

In writing, a trigger is something that enters your mind and causes you to start a poem, or a story, or whatever you want to write. The trigger could be a scene, a line, an image that comes to you, or just something remembered. The poet Richard Hugo believes that all writing is creative writing in that you don't know what's going to appear on the page until you write. All writing relies on triggers where you write something and respond to it.

Somewhere on the Jaguar partition of my laptop is a proposal I wrote for CWRU years ago on running what I was then calling an MFP (Masters of Fine Programming). I was hoping to attract people who had been working for a while, thinking about what it is we do when we program. As Dick says, "Writing software is an art, and it takes about ten years to really get good at it. But there's an underlying attitude that programming and software development are easy. We have this attitude that programming is auxiliary, when it's a very central, difficult, human, sociological activity." I look forward to Dick's reports on how his MFA in Programming works out.

Our other daily feature is the second article in Hans Bergsten's four part series JSP 2.0: The New Deal. As I've written on the front page blurb, Hans details "the improvements made in the area of error handling and the new deployment descriptor features." To take advantage of the new error reporting he recommends " that you develop TLVs [Tag Library Validators] for the custom libraries you write, and insist that the developer of any third-party library you use do the same." The changes to the deployment descriptor are that "the rules for the web.xml file are now defined by an XML Schema, and most of the JSP-specific configuration items have been moved to a new XML element, which is under the control of the JSP specification ".

It's JXTA bug day. In Projects and Communities, we highlight the JXTA community's activity today from 8 am PST - 3 pm PST to Stomp JXTA bugs using JXTA. Also the Java User Groups home page now features the latest news on your favorite JSRs in the right hand column.

A cool technique for Deploying JXTA is featured in today's Weblogs . James Todd explains that JNLP 1.0.1 "includes a really cool 'extension resource' such that any one app can reference zero or more "component" JNLP distributions which can, in turn, further reference zero or more component JNLP distributions. The result, of which, is that I, as a JXTA application developer, need no longer care about JXTA deployment details, upgrades, jar signing, etc."

Joshua Marinacci needs a hobby. I've been ok with most of his experiments with the Java UI, but now he's crossed the line and started to use java.awt.Robot. Some of my students spent most of a semester enamored with Robot for GUI testing. Keeping the GUI thin meant the end of their use of that class. Now Joshua has written code Swing Hack 6: Ghost Mouse that enables you to "move the mouse cursor to mystify and befuddle the user."

Simon Brown has a happier thought. He invites you to the London Java Meetup - Xmas Party 2003 and writes "If you're in and around London on the 15th, feel free to pop along and say hello. Have a great holiday season!"

In today's News

Registered users can submit news items for the href=""> News Page using
news submission
All submissions go through an editorial review by news director Steve
Mallet before being posted to the site. You can also subscribe to the
href=""> News RSS

Current and upcoming Java

Registered users can submit event listings for the href=""> Events Page using our href=""> events submission
All submissions go through an editorial review before being posted to

This blog is delivered weekdays as the href="">Java Today
feed. Once this page is no longer featured as the front page of href=""> it will be archived at href=""> You can
access other past issues in the href=""> Archive.