The reason I did that was because I had no money. I could never build one. Chips back then were… like I said, to buy a computer built, it was like a downpayment on a good house. So, because I could never build one, all I could do was design them on paper and try to get better and better and better.
— Steve Wozniak
I was in a similar situation during my freshman days in college. It was my 1st programming course and back then I didn’t own a computer, my relatives and friends don’t have one, and nobody in our block has heard of it.
Our department has a computer lab that offers cheaper rates but you have to compete for slots with upper class students. Somehow, these juniors, seniors (and beyond) have already occupied all the computers seats every time I had a free time to work on our programming assignments. There were 2 or 3 computers within the university premises but the rates are too expensive for me. But of course, I had no choice because I need to finish the programming assignments.
Well, I actually had a choice. Similar to what Woz did, I started writing computer programs on paper. I really can’t explain it but I think writing code on paper can make you a better programmer.
In high school, my cousins and I would go to my aunt’s office after school. Each one of us would have a free typewriter to play with. Sometimes, my aunt would ask us to type very long documents and she would buy ice cream when we’re done. When our school offered computer typing courses using WordStar, my experience with typewriters proved to be very useful.
Whenever we have programming assignments, I would write the whole program on paper first. I would sit down near our window with a bunch of papers, a pencil, and an eraser. I used the back of old letter-size papers from my aunt’s office. I would spend the whole day debugging and re-writing my program. I have no text editor, no compiler, no debugger to use. I would test my program by writing variables in columns, then in each row, the values of these variables while my program is running in my head. When I’m done, or at least, confident that my program is “working”, I would head up to the nearest computer shop and type my program. Since I’m a fast typist, it took me less than 30 minutes to write my program. Of course, it doesn’t run perfectly on the 1st try but I only needed a few more minutes to get it working. For the next two semesters, I employed this strategy.
On my 2nd year, my aunt bought a computer and by that time, many of my friends own Intel 486-based computers. I can now program 25 hours a day for free.
My motivation back then was to save money. I never really expected that running programs in my mind would help me become a better programmer. I still advice people to try it once in a while. Well, I never known someone who actually tried it. I guess if someone hears me telling this, he would wonder what the f*** I am talking about. “Of course, you need a computer to write a program.”
I never write actual programs on paper anymore. But I still have a lot of scratch papers in my study table drawer.