As some of you know, I do theater in my free time. This semester, I was an actor in a production of Rosencrantz and Guildenstern Are Dead, and we performed two weekends ago. Theater and computer science are completely different in how they work, but both disciplines can learn something from each other. I've always stood at the intersection of the two, struggling to mold myself to fit the wildly different criteria required for each. I've always focused on how my two loves are different and how participating in both gives me a varied skill set and a different set of experiences. A couple weeks ago, though, I started thinking about how the two fields might be similar.
Now, for those of you who don’t know anything about theater, the week leading up to opening night is called tech week by amateurs and hell week by those who have experienced it before. I have no idea why rehearsals are always structured this way (inavailability of the performing space, maybe?), but to me it has always felt like the ultimate form of procrastination. You see, most shows don’t require you to have your lines memorized until tech week or some time close to it, and as the name suggests, no technical components of the show— costumes, props, lights, sound, set, and so on— are added until tech week. In the course of a week, you go from practicing your play in your regular clothes in a small classroom to performing in a large space with a backstage area and costume changes and props that you’ve never thought about before.
As an analogy, imagine that you have a class where you spend the whole semester working on one very large group project. Like any reasonable computer science student, you put it off until the very last minute, and then you panic and try to do the whole project in a week with only a rough idea of what you're doing. To add to your problems, you’re only allowed to handwrite your code on paper up until the very last week, when you can finally use a computer, an IDE, and a debugger. Wouldn’t that be ridiculous? You’d be spending hours and hours during that last week debugging your code because you’d be running into problems you never could have anticipated, and you'd be too tired to think through any problems you encountered. You might be able to put together something that would work for the project, but you certainly would have created a more impressive product if you'd spent the whole semester working on the project bit by bit, incrementally testing your code and integrating the different parts.
Theater is the same way. Even though we end up doing everything at the end, I think plays would be less stressful and come together better if we incrementally added components. You start off with just the lines, the words on the paper, and your actors. Then, after the actors know the words well enough, you add in movements, entrances and exits, and another layer of emotion. Once the actors are familiar with their lines and movements, you add in a few technical components, perhaps just the props and the simple costumes. And finally, once you have the performance space available, you can add in the lights, sound, set, and costume changes in full. The last week would still be stressful, of course, but it wouldn't be as bad as trying to add everything in all at once and running into all sorts of problems when things don't work well together. It's like having every member of your group write code separately and then merging it all together on the last day. Just imagine how many merge conflicts you'd encounter and how much functionality would break.
I think actors, and theater in general, could learn a lot from computer science when it comes to implementing an incremental process. At the same time, computer scientists could learn a lot from the theater. There's a certain polished aspect to a performance that is forged through the sweat and tears of a week of really hard work. It's painful and stressful and long, but by the end, you've put together something you care about and are proud of, and you didn't just do it for the audience-- you did it for you. The actors, the technicians, the directors-- everyone involved in a production pours their feeling into that final product. I think when it comes to computer science, we're very often just doing what we can for the sake of doing it, not always because we care. We often fall into this pattern of creating products because we're told to, pushing the boundaries of research simply because we can, and our work can lose that personal touch. Yet there was some passion, some driving force that got us working on that project or that team in the first place, and we should remember that and incorporate that passion into our work not just in how quickly we work but how well we work. A final product created by loving hands is far better than one created by impersonal code monkeys.
At the end of the day, I'm still going to have to keep stretching to be the ideal performer and the ideal programmer at the same time. But perhaps if I can focus on the ways that one field is honing my skills for the other, I won't have to stretch quite as hard. When it comes down to it, theater and computer science are simply different expressions of humanity, different avenues through which the beauty of thought and feeling are presented. Perhaps theater is more poetic and computer science is more practical, but they both have their uses-- for me, and for the world.