Question Guy (9/9/2011)
The best developers I know were, to be blunt, just born with it. Yes, they had to learn the syntax, but they seem to know the answers without ever seeing the answer before. They just know how to troubleshoout or can see 10 steps ahead.
I definitely fall into this camp of thinking. I know when I first got into development, it felt very intuitive to me. I have a mix of classroom instruction and self teaching. I've always had a couple of problems with both ways of learning.
In a classroom setting, be it grade school, high school or college, I was almost always able to pick up concepts quicker than my peers. Therefore I spent a good amount of time either going ahead without the teacher, daydreaming, or working on something completely unrelated to the class. (Doesn't seem to apply to finance courses as much though)
When learning things on my own, I would take myself to a certain point and then get wrapped into something else or otherwise abandon the effort for some reason. For example, between high school and college, I started teaching myself C++. I had a book I was reading and doing all the examples and problems in. Then I got to the chapter on pointers, read in the book that you could seriously mess up your computer and I stopped.
The other problem I've run into is that the university program I followed (2 years at community college getting a liberal arts degree focusing on Math and Science, 2 years at a university finishing a bachelor's in CS) seemed to be either lacking, or didn't clearly define pre-reqs for classes. I took a class in software development before really learning anything about databases. I was required to take a class for technical writing, but that really didn't help me write requirements documents or user manuals. The closest I came to learning testing was when I was taking Java classes, because the professor made a point of giving us basic unit testing skills.
Now that I'm working in the industry, I feel like it wouldn't have more helpful if the "seminar project" I was required to take for my bachelor's would have been two semesters with some time spent gathering user requirements from the instructor and then implementing a solution instead of just picking your project and developing it.
I think the real solution is some combination of both self-learning and "guided" learning, whether that be through a university or apprenticeship. I also feel like there needs to be a good mix of theory and practice.
The opinions expressed herein are strictly personal and do not necessarily reflect the views or policies of my employer.