I find it amazing how many people seem to learn very little outside of what they were taught in their classes. We’ve been interviewing a few people at work over the past few months, and many people just seem to know very little beyond what they where taught in class.
To make matters worse, the kind of experience that you get in classes tends not be the kind of experience that would be very useful in the real world. It seems to be very uncommon that one would have to write something extensive for an assignment in university. Most assignments consist of maybe 5-10 small functions strung together. There’s no way to practice code that doesn’t repeat itself because there’s very little chance that you’d run into code that would be repeating.
I’m not saying that classes aren’t important. You can definitely learn a lot of useful things in class that will be very useful on the job. It’s just that you won’t learn the most important thing. That is, how to actually plan and complete a large project from beginning to end.
All the best experience that I got while in university was in co-op placements where I got to work on real projects. If you are in university and there’s a co-op or internship program available make sure you take advantage of it. This usually means it will take a little longer to graduate, but the experience you get will be very valuable.
I was also very lucky in that we had a two semester group project as one of our classes. In this class, we were required to find a customer who wanted an actual product (the professor had some people lined up, but we were free to find our own if we pleased) and do an entire project from beginning to end. We were required document what we were doing, write the code, write the test cases, and meet with the customer to discuss requirements and talk about how the project was progressing at regular intervals. This taught me not only about the technical side of software development but also how to actually work not only with other developers, but also the customer.
The other thing that I find is that a lot of students don’t have experience using real world tools. Very few students seem to know how to use a debugger coming out of university. I don’t know how they get along without it. But I guess if you’re only doing very small projects, then they aren’t that necessary. But when you’re writing projects that are larger than you can fit in your head, it makes the job a whole lot easier when you have a debugger and you can step through the code to see what’s going on.
My advice to anybody in college or university is to try to learn as much as you can before you graduate. This is when you’ll have the most free time. You may think you are busy now with assignments, studying, and even a part time job, But the truth is that now as a person with a job and a family, I find that I have much less time now than I did as a student. I wasted a ton of time when I was a student and really wish I had spent my time more wisely.
So think of a project that interests you and go ahead and do it. You’ll learn a lot more from doing an actual project than you will from just about any class. And you’ll have something to showcase your skills when it comes time to interview for jobs. You’ll definitely stand out from the rest of the applicants.