I started my college career as an Open Option Engineering major. Sounds fancy, but all it means is that I got to sit through a 1-credit hour class designed to give us 'open optioners' an understanding of all Engineering disciplines to help us make the most informed major selection. The field that caught my attention the most, and managed to get me to enroll in the major, was Computer Science.
This doesn't really have anything to do with Computer Science.
The Computer Science presenter pulled out a pencil and told us to think of it as a computer. There are all sorts of things you can do with a pencil like math, writing, and drawing. However, to say that the study of math, writing, or drawing is the study of the pencil though is incorrect. The analogy made sense to me, Computer Science is the study of computers as tools and what can be done with them, not necessarily what can be done to them.
Four years later and I'm now entering the second semester of my senior year. I'll soon be a full-fledged Bachelor of Computer Science, according to my degree. According to my classmates and coworkers however, I am fairly unique Computer Scientist. You see, I hate programming.
It's hard for me to hit the nail on the head. Whether it be dreading the monotony of staring at thousands of lines of code all day, spending hours trying to find a single bug or syntax error, or picking up a new project and having no idea where to start, programming and I don't get along all that well.
It didn't start out that way. My first introductory programming class used Python and the short programs we had to write were like puzzles, fun and not overwhelmingly difficult. To this day my favorite programming language is still Python.
Then came the second course. We used a mixture of Python and C++, and while the assignments and projects were manageable, somewhere along the way I found myself beginning to hate programming. I felt that our professor, who primarily taught graduate courses, used lectures as a chance to show off how much he knew and I could hardly follow the code being written in three different applications with syntax and structures I'd never seen or used. I struggled, but made it through nonetheless.
Felines make excellent programmers.
At this point I've taken classes I hated like Data Structures and Principles of Programming Languages (lots of programming) and classes I loved like Algorithms and Computational Theory (not so much programming). While I can read and write code fluently enough if I have to, I would still much prefer to avoid it altogether.
The whole reason I became a CS major is because I think computers are the most fascinating devices man has ever created. They can be applied to any field and make pretty much everything faster, better, and cheaper. They're used for everything from simulating highly complex gene folding on the microscopic level to unmanning Wal-Mart's inventory and reordering systems.
A lot of people give me weird looks when I tell them I'm a CS major who hates programming. They think it's like saying I'm a self proclaimed literary genius who happens to be illiterate. But coding is not and will never be what I think of as the essence of Computer Science.
Einstein had mad programming skillz.
Saying Computer Science is only about computers is like saying astronomy is only about telescopes. Computers are the beginning, not the end. And while coding may be the means to an end, it is not the end itself. And that is what Computer Science is to me, taking these machines we've created and using them to make our jobs easier, show us things we never thought possible, and maybe make life a little better for all of us.
What do you think? Is my opinion of Computer Science dead-on or am I just a n00b without the balls required to be a hardcore programmer? Sound off in the comments!