Lao Tzu said that a journey of a thousand miles begins with a single step. Likewise, an article of a thousand pages starts with a single sentence. Yep! But although I didn’t plan on writing much over 25 sentences, it took me well over a day to put down the first sentence after deciding to write it yesterday. Why this inordinate delay? And how can I fault our poor students for putting off getting started on their laboratory assignments until the day before they’re due?
Starting trouble is all too real, and getting older and wiser doesn’t make it less ubiquitous, although it equips one with strategies for overcoming it. Writers have a writer’s block. Painters have a painter’s block. And sculptors have, well, a block. I’m not especially proud of that last pun, but I wrote it down as part of a content dump for this article, and so I’m gonna let it stay to make a point later.
Programmers are no different from any other artists when it comes to starting a project. When you have a clean slate, it’s tough to know just where to begin. Even in large projects involving several teams and millions of lines of code, individual programmers often find themselves in a similar situation when they sit down to write one or more smaller self contained modules for which they are responsible.
In class projects it’s easier because I walk around and help them get started. But the prudent student is always aware that the help she gets in class will typically not be available when she codes later on her own. And so she’ll be thinking about how she’d overcome the dreaded programmer’s block when starting a lab assignment by herself. Programmers often procrastinate not because they don’t know how to start a project, but because they’re just messing around not knowing exactly where to start. Often, once a start is made, like in an essay, the rest of the project falls into place around it.
Fortunately, most everything that works for literary authors also works for programming. Thus, by drawing upon techniques used by authors in the past, programmers have access to literally hundreds of years’ worth of strategies to get started on their projects.
One of the most common and promising recommendations I’ve heard for stuck authors is this: Just write – Don’t care for grammar, sequencing or even voice. Just write… whatever comes to mind. The goal is to create a content dump first, then worry about organizing it and finally about decorating it. But note that this is a meta recommendation. When an author is stuck for content, the recommendation says to write about anything at all. Even gibberish helps, like when I wrote silly things like “Sculptors have a block.” Writing anything at all helps because it sets the writing machinery into motion. That’s one less thing to worry about when trying to write real content. Here’s a scene from the movie Finding Forrester that illustrates this point.
An aspiring and promising African American writer, Jamal Wallace, befriends the reclusive writing legend William Forrester. During a time when Wallace is struggling to get started on a school project, Forrester tries to get him started by having him type in the first few words of one of Forrester’s old essays. The essay blossoms into something original and splendid, but also lands Wallace in hot water for plagiarism.
Happily, we don’t always have to start copying someone else’s work to make a start on our own. I’ve found that, at least in Computer Science, we can start on one of our own past projects and morph it quickly into the soup du jour. So I tell my stuck students to start from an existing program, no matter how simple. It may even be one that simply prints “Hello World” and exits. I ask them to type it out (and to not copy and paste it) and go from there.
If they’re bootstrapping and don’t have any of their own code to draw upon, I tell them it’s ok to use someone else’s program or one they find on the web, with the following caveats:
- It must be unrelated to the problem they’re trying to solve.
- No matter what, the foreign content must be typed in by hand, letter by letter.
- If the student is still stuck after copying in the content, they should start making stylistic changes to the copied code to introduce their own programmer’s voice into the program.
In the process of doing this, many students reported that they gradually edit the program to suit their needs. This morphing process picks up momentum to the point that the program eventually undergoes fundamental changes to result in the required solution.
As the program starts to look more and more like something they’ve written, students begin to feel an increasing sense of ownership of it, and so begin identifying places where they should change it to meet the needs of the current project. They develop a feeling that they’ve already started and are in the process of editing it, or tweaking its look and feel. After all, aren’t we all, as authors, guilty of spending more time putting the finishing touches on an article than actually writing it down in the first place? Don’t we look forward to it?
What a great way to overcome programmer’s block! If only everything were as easy.