I’m a sophomore in college going for a Computer Science degree, and I’m teaching myself to program.
I wish I was more surprised by that statement. It’d be nice if my programming course in Python didn’t fail me on homework for using the “list” type in a problem when the teacher wanted raw outputs in a line. (They look identical.) It’d be nice if my university’s game club wasn’t three guys with a cheap iOS “game maker”. But I’m an adult, not surprised when reality is disappointing.
So, I teach myself to program. There are a wealth of sources on it, actually. stockoverflow.com is quickly becoming my best friend. Type “Python tutorials” into google and a dozen textbooks erupt. The Python documentation itself covers more submodules than I ever knew existed. Yesterday I found out a module called subprocess covered the entire process of the program I’m outlining, all in a few lines of code.
In a sense, I feel like this is learning to draw all over again. The Python course does nothing but exhort us to draw lines – and only straight lines with this particular ruler. Next year, the C course might let us do a circle! All part of a gradual build up that culminates in a real picture somewhere around late senior year.
But, like learning to draw, the true trick is in the abstraction. When you draw a picture, you have to be able to zoom to any level of the picture at will and see how it fits. This particular line: How does it fit into the groove of her neck? How does it and its neighbor match tone to imply the hint of shadow? How does that shadow compare to the shadows under her nose? Every piece has to contribute to a holistic whole in order to give the form and function that is recognizable as an end product.
I have a pretty good handle on the basics of Python now. The loops, the calls, and the formats. Much like perfecting a single line, that is only the beginning.
Now I branch out into the deeper, murkier world where isolated little programs, perfect in their numerical simplicity, suddenly have to interact across oceans with operating systems and internet protocols, memory buffers and hard drive architecture. Where codes and protocols meet in heaving storms.
Its too bad that none of my classes hint at the existence of this ocean, too busy with the puddles of water around our feet. I didn’t come to school to be bored and coddled.
So I guess I’ll go sink for a while in the big ocean and see if I can come out ahead.