I have spoken a little about my first introduction to programming. It was five years ago and the language was Perl.
I did not progress very far with Perl. I got confused about functions and I did not have anyone to really talk to about my confusion, so I kind of forgot about it and got distracted by other things.
Nearly four years ago I began taking programming classes. I figured that if I had people to talk to and deadlines to meet it would be easier to keep from being distracted.
That worked somewhat well for a while. I took programming classes but I couldn’t remember how to do simple things from memory since we only did them once before moving on to another topic. I found “for” loops confusing because I could not remember what each slot in the parenthesis was for. I had to look it up any time I wanted to do one. I didn’t understand why people wouldn’t just do a “while” loop because it felt so much more straightforward to me.
So I kind of stumbled through programming classes for a few years. I would take the into course to a language and go over arrays, for-loops, and other things another time. Every time I heard it things made a little more sense. I was turning my homework in and I sort of understood it. I had a bad feeling that there was a lot more to it than I was processing, but I was trying to tread water to keep from drowning.
Finally I slammed into a wall: Object Oriented Programming.
The first language I learned, VB.Net, did not talk about OOP in the first semester I took. We kept getting further and further behind and we did not talk about it. When I took the second VB.Net class, the teacher assumed we knew it. The first time we saw classes, we were like, “What’s going on?! There is more than one document! How do they communicate?!”
I had to drop the class because I had absolutely no idea what we were doing. I wanted to take a semester off. I felt burned out and depressed because everything was so hard. Everyone else I talked to seemed to have be programming for years and already knew this stuff. I felt like a failure.
At some point around a year ago, I started using the web site “Code Academy”. They went over these introductory concepts again, but I could do the tutorials over and over again and things began to click. I felt comfortable with these concepts and I knew I could learn this.
I decided to take Java in the fall because the teacher I had had for my first programming class designed the curriculum and I knew that I could learn from him. He had since moved on to designing the iOS curriculum, so I followed him to that program too.
The “Intro to Java” class was the best programming class I have ever taken. One of the first things we did in that class was learn OOP. By tackling it immediately and using it over and over again we were able to process what programming is and how it works.
I consider the day I finally understood OOP to be the day I became a programmer. I have been messing around with it for five years, but it wasn’t until nine months ago when I had that first breakthrough.
I have all kinds of concepts that I have encountered that I did not understand. Delegation in iOS has been one. It is easier to keep working at something you don’t understand once you have had the experience of having a breakthrough and finally getting something that was hard.
I feel that I have made so much progress over the last year. I hope that this is just the beginning of a long period of productivity for me.
I know a year ago I felt very unsure of myself. I did not want anyone to ask me any questions because I was afraid they would figure out that I didn’t actually know anything. I don’t feel that way anymore. I feel like I can learn anything I set my mind to and I am up for the challenge. Bring it on!