I've been interested in computer programming since I was about 14 or 15 years old. I taught myself C++ (with the now-deprecated libraries such as iostream.h), and wrote some simple console programs. Just basic stuff, like a program to convert arabic-numerals to roman-numerals and vice versa. Time went by and I didn't do anything else related to programming.
When I was around 20 or so I took a college course on Java as an elective, which I didn't particularly like, but the class did get me interested in programming again. I again took up learning C++ (this time with the standard libraries), and even created some basic games (pong, tetris, etc) using the SDL library. At this point in time, I would describe myself as being absolutely addicted to writing code! I would stay up all night perfecting my collision-detection algorithm, or reading tutorials, etc.
I decided then that I wanted to major in computer science (I was a social science major at the time), and successfully made it through the calculus and physics courses required by the university for computer science. This was a late change for me, as I was only 5-6 classes away from graduating with the social science degree. Unfortunately, mainly due to a combination of financial reasons and fear that I just wasn't smart enough to make it in computer science, I decided it would make more sense to just finish the social science degree in one semester (as opposed to 5-6 semesters for computer science) and get a job. And that's what I did. And I've regretted every minute of that decision.
I'm now 24, going on 25 soon, and worked in the social work field for about a year and a half. I really hated that job. I hadn't done anything programming related for a couple years at that point, but found myself working on some side-projects designing and implementing office automation scripts and various mshta applications. Most of these I started on my free time (such as breaks and lunches) to make my job or my co-workers' jobs easier. I really liked working on those projects, but it wasn't my primary (or secondary, or even tertiary) job, and the time I had to work on the stuff was very limited. And towards the end it was non-existent, due to changes in employee policy.
So, I quit that job a couple months ago, and I re-enrolled myself at the university to major in computer science. My first course will be in a couple months and I'm very, very excited to finally do what I really want to do. And now I'm nervous sick that I just won't be able to make it in the field! I feel like there are a million things to learn, and that I'll never know enough to be competitive, or even just competent.
Some of the things that really concern me:
- I'm no good at reading other people's code. I've svn'd some open-source projects and didn't even know where to begin! I know that reading code is a skill that takes time to get good at, but it seems like such an insurmountable thing to achieve to me right now, that I don't know if I'll ever be able to do it.
- I usually have no idea how to approach programmer "interview questions," until I read the solution and I'm like "aha!" I'm worried that I will freeze up if given one of those types of questions on a real interview.
- I know that the computer science degree will not prepare me for a real-world programming job, but I also don't know what I should be learning in addition to the degree in order to be prepared! I have some books that I'm reading through (currently "How to design programs", "Beginning Visual C++ 2008", and "Pro C# 2008") but I know that book learning != practical learning.
- I'm relearning C++ and C#, even though in the past I've written programs in both languages, I just don't remember how to do things in those languages. And I get frustrated because the books I read always want to explain what a variable is, what a for loop is, etc. I know all of that stuff already. I feel like I'm constantly relearning the same stuff, over and over again. I think my knowledge level at this time is somewhere between "laughable" and "enough to be dangerous," but I don't know how to get beyond this.
I apologize for such a long-winded question/post. I guess, basically, I could sum up most of the above with "I feel lost, and don't know if I'm heading in the right direction." I don't have a friends who are programmers, and I don't know anyone in the field, so I don't really have anyone to bounce these concerns off of.
Edit Thank you all for your answers to my question(s). I greatly appreciate it!