College doesn’t really prepare you for the real world. You learn a lot of stuff, which is nice, but a lot of times they don’t teach you how to use it. It’s kind of like learning geometry in fifth grade: I memorized the details and thought I understood the concepts, but it was years later before I knew what to do with any of those concepts.
College was the same way - or at least, it was for me. You spend a lot of time learning about programming languages and syntax, but not a whole lot of real-world project development. For homework, you get clearly defined projects, and the professor never changes the specs halfway through, or adds a bunch of new requirements after seeing the first version. I can’t imagine what would have happened if a professor tried to pull that on a class, but that’s how it goes in the real world. While you’re taking classes, you have to track where you are on a project or two for each of them, but generally, that’s it. Right now, I’m working on two major projects: I’m doing a couple big parts for one, and managing (really, “coding most of”) the other. There are several parts of each that I’m responsible for, parts that other people are responsible for, things I’m waiting to get from the client, and the remainder that isn’t clearly defined yet.
I remember taking Needs Assessment and being told that we would need to know how to gather requirements and things like that, but I didn’t really believe it at the time. At the beginning of this year, I really didn’t need to know how to do it - my manager or a senior developer would come to me with a fairly well-defined project to do, and I’d do it. Sometimes it was changed after the fact or even partway through, but I got the set of requirements and wrote the code as specified. More recently, I’ve been dealing directly with the client a lot more than I used to, and I’m doing a lot more project management than before. I’ve got changes, new requirements, and bug reports coming in from three or four directions and need to manage the schedule for all of it.
In retrospect, this is what Needs Assessment and Tech Transfer (two classes in the IT department) were meant to handle, but I don’t think that any of us took it seriously at the time. In my defense, I took both of them my last quarter at RIT, so my priorities were elsewhere. Would I be better prepared for my current job if I had paid more attention? Well, it’s hard to say - since I wasn’t too interested, I really can’t even remember what we did in those two classes.
Then again, sometimes the sink-or-swim method is the best way to learn. I’m doing a much different job than I was six or eight months ago, and I’ve learned a lot in the process. As I mentioned the other day, I’ve been reading Getting Things Done. I haven’t gotten very far, but I already feel like I’ve got a better idea how to handle all this stuff. Plus, you know, the Internet needs another GTD fanboy.