When I entered college, my intent was to study math and maybe become a math professor down the line. At St. Norbert, any math major has to take Intro to Computer Programming, which I did my first semester. This was my first real exposure to the inner workings of computer science in my entire life. Despite that, I found that I could work and think in C++, my native CS language, and that studying CS was much more fulfilling than studying math.
After worrying about my tuition and existing plan, I made the decision to major in both Computer Science and Mathematics and told Dr. Pankratz, the professor of my intro class, that I somehow needed to make this happen. Between studying abroad, keeping my math major, and not wanting to extend my school term any more than I had to, getting this major has not been easy, but I feel that it has put me where I want to be in a way nothing else would have.
I don't think I can abstract Computer Science better than Frederick Brooks does in the first chapter of his book The Mythical Man-Month. It is a medium through which typing the correct incantation can bring about magic not possible in any other sphere, but also a discipline that demands perfection on the part of the incantor. In Computer Science, fantastic dreams are possible. The programmer holds infinite creative possibilities in their hands, but the greater the possibility, the more tremendously difficult to realize it can become.
This is more than an idea for me, because I have struggled to meet the standards that I and others set for myself; I have fought to achieve the great possibilities open to programmers, and I have failed. While an assignment may be complete or satisfactory, as long as I can think of ways to improve it, it cannot be truly great. Despite discouragement, I will continue searching for greatness in computing.
I am very good at understanding other's logic and creating consistent extensions to it. I also have a good memory for patterns and rules, and I can learn quickly when instructed well. Having learned a good method for doing something, I can often improve it without any shifts in basic method or paradigm.
In addition, I have an eye and intuition for what makes a product usable and presentable.
Without either extensive study or concise, well organized instruction, the methods I invent on my own are often unnecessarily complicated. When this happens on a large scale, debugging becomes time consuming and laborious. While I often have good ideas for features and improvements of my work and others' work, implementing those ideas sometimes falters if there is no good or easy way to do so made available by the original work.