2013-08-17 - Imagine the Computer
Someone told me a little while ago that they didn’t think programming required imagination. I thought this was strange since I was sure I used my imagination while programming but then I started thinking about it. At its simplest introductory level programming is just a translation process and I can understand why someone wouldn’t think that required imagination. If you want to add two numbers you get two numbers and then add them, but that’s a trivial example on the level of a book designed to teach children to read. As the problems get more and more complex being able to imagine them becomes more and more important. Now I wouldn’t go so far as to say imagination is required for programming but I would say it’s required for good programming.
Now there’s a reason I mention introductory reading books and that's because writing and programming are very similar. Both involve using the constructs of a language to build environments, characters, and events. In writing one uses words and sentences to build worlds. In programming one uses symbols and statements to build programs. In both cases imagination comes into play by allowing you to look past the words and see the larger picture that they create. With programming this is really important because you are dealing with a medium meant for two distinct audiences. Programmers have to be able to read code in order to maintain it; computers also have to be able to read code in order to create the program. This requires a programmer to be able to read it as the computer does. You have to be able to see the program in the code to be able to understand how changing a line affects the whole. You also must be able to see the code in the program to be able to understand what needs to change in the code to make it work as expected.
Now the reason that I think some people may believe programming doesn’t require imagination is because their imagination isn’t compatible with programming. We are all wired differently, we all have different skills and strengths and that’s what drives us to do different things. I wouldn’t use my imagination when painting because my mind doesn’t work like that. I can picture a circularly linked list in my head but I couldn’t picture “hope” and know how to draw it. That’s fine though because I’m not an artist, I’m a programmer. Programming is what I enjoy doing and that’s what my imagination connects with. When someone sees a program freeze up they see a program that has crashed, I see a program that is taking a long time processing input and hasn’t been able to handle any other messages for a while.
Comments: