Required Complexity

I was generating a new movie for a friend of mine this weekend, and got reacquainted with Final Cut Pro. When I started using FInal Cut, I always found the clip logging interface to be baffling. It seemed to me that Final Cut should emulate iMovie, and find the shots itself rather than make me do it. Having now made a few short movies with the software, I see that there is an inner logic to the logging system, and it turns out to be a net win in the long run.

The particular example I have for you today is short and sweet. But the general principle that it illustrates is, I think, important. Here is what happened.

Between the last time I made a short video and this week, Apple has released a new version of Quicktime. So when it was time to generate the final movie file, I fussed around with the exporter a lot to try and figure out how to make a decent file that would not require everyone to download Quicktime 7 to watch the movie. I figured I would want to save them the hassle. But, at the end of the process, I encoded the movie using the new H.264 codec and was astounded by the results. What I found was that I could encode a movie at around 1/4 the bit-rate with equal or better overall picture quality. This meant that a 10MB file for five minutes of footage looked as good, or better, than a 40 or 50MB file did using MPEG-4. Maybe I just didn’t know how to tweak the MPEG-4 settings, but there you go. After looking at the H.264 file, I decided that I now didn’t care whether my friends and family had to download the new Quicktime.

So, what does this have to do with logging?

Well, I had a two year old video that I really like, and I found myself curious about what it would look like encoded at a higher quality. Of course, I had long deleted the raw material for this video from my disk. I only had the tapes and my original Final Cut document. Luckily, I had carefully logged all the clips that I used. So, instead of needing to capture the whole tape again and reconstruct all the edits all I did was:

1. Put the tape in the DV camera.

2. Open the Final Cut Document.

3. Select the sequence for the movie.

4. Hit capture.

5. Walk away and eat dinner.

When I came back, the entire thing was reconstructed as if by magic. I hit export, and a hour later the iMac had generated a new H.264 version of the movie.

The key thing here is that unlike more “friendly” software, like iMovie, Final Cut requires that you create meta-data on your raw footage. The actual disk file containing the footage is not that important, as long as you have the clip logged. This means that the interface is initially difficult to understand. You want to be working with your footage, but Final Cut is asking you to _describe the footage _instead. But, in the long run when you want to come back to a project and do something like re-encode it, you are suddenly very glad that you spent all that time writing meta-data.

Now, I’m sure that iMovie, or something else less complicated than Final Cut, could have handled the re-encoding task fairly easily. But it probably would have required that I store full resolution versions of all the clips in the final edit. The elegant aspect of Final Cut is that the project file is an comparatively compact representation of the clips and the edits that I made, and it does not require that I keep any media online at all. All of this is enabled by the seemingly complicated clip logging interface, because the clips form the basis of the representation of the movie. This representation also allows for uber-cool hacks like Offline- RT. Therefore, while the interface is complex, it enables a much more natural end to end workflow for many tasks, therefore the interface designers were correct in making this complexity explicit and encouraging the user to embrace it.

The interface design lesson is this: make your user interface as complex as is required, but no more so. In other words, if the task that you are modeling requires complexity, then the user interface should reflect that. But, the design should not layer on any more than is needed. The Final Cut logging interface is a good example of this. The interface is complex and intimidating on the front end, but turns out to be exactly what you want to do once you understand more about the process of putting together a movie. The initial complexity pays off in spades when you decide to come back to an old project, because it makes things that could be hard, like re-encoding a whole movie, almost trivial instead.

Excellent production tools do this well. The logging and capture features in Final Cut reflect the fact that the software is designed for professional production, where the same raw assets are used in many different ways. For me, it just means that it is really easy to regenerate my dinky little movies without needing to store all of the raw footage on disk. I just store my description, confident in the fact that Final Cut can reconstruct the movie for me.

My other favorite production tool is Photoshop. But, we’ll leave the Photoshop example for later.