The real world can be really really different than that which we are told in college. At least for me it was, anyway. The degree I received is very helpful, very much so. It got my foot through the door. It's on my wall, and to this day I don't know how I passed so many Calculus and Physics classes. But this post is all about what was taught compared to what was used. And just to mention, the calculus and physics have not been used yet. One day. I'll say this now, this may have had more to do with my schools curriculum than anything else. For the most part it was very linear and theoretical with almost no practicality. Some schools may offer fantastic classes where apps are build and items are 3D printed. If so, feel free to send me a message and let me know about the school ^_^ .
College Work V. Real Work
Here is a quick list of the tech courses I took in college and what I ended up doing when I got my first job. I'll leave out all of the math, physics and biology classes as many science majors have to take those courses.
- C++ 2
- C++ 3
- Database Design using MySql
- Data Structures 1
- Data Structures 2
- Circuit Design 1
- Circuit Design 2
- Assembly Language
- Microsoft Dynamics AX
- Sql Server
- Classic ASP
There's a pretty noticeable disconnect here. And I assure you my resume had exactly what was on the left side. However, those jobs are way more limited in number and are mainly taken by "Compute Engineers" and not "Computer Scientists".
The first thing I notice on the list on the left, is how "old" it feels. Assembly Language, C++, basic circuit design. It felt like the 70's, had I been born then :/ . The 70's from the movies that I've seen. It felt like the goal with these classes was to give a real scientific vibe to the department. Like an old PBS special. And it succeeded in that respect. I did in fact feel very scientist-ish. For whatever that's worth. But of course now, many years later I can't help but feel it was kind of gimmicky. I definitely would have preferred something more tangible in the end. Every CS majoring graduate that I know ended up working in the software development field. Having taken courses with them for 4 years, I can assure you they learned most of their skills while on the job.
Quick Breakdown On What I Learned In College
And then quickly forgot shortly after graduating. The circuit design and hardware classes I took in college have had no impact on my career as of now. Those classes were standard for Computer Engineering students, but as a Computer Science student I was not interested at all, and unfortunately they took up a rather large percentage of my time.
C++ - An introduction to programming class. It covered loops, variables, operators and just briefly into classes. It was an important class, as it gave me a strong footing into the world of software development.
C++ 2 - Took a different route this time around. An entire class revolving around C++'s STL(Standard Template Library). And in UNIX to help balance things out, since the first c++ class was in Windows. I haven't touched a Unix machine since then. I did get pretty good at using Vi however.
C++ 3 - Back to Windows we go. Nothing too new here, classes, inheritance, polymorphism and that was it. No databases were used, everything was stored in static files.
DB Design - The only time I ever touched a database, just barely, in college was in my Database Design class. The class revolved around MySql and it took about 3/4ths of the class before I got to write a single query. 90% of the time was spent on Normalization and design, which is important, definitely. But in 4 years, I never once linked a database to any software of any kind. Which is how you normally..use databases. I built a car dealership schema, and wrote 5 queries to accompany it. It would have been way more beneficial to have implemented a mock dealership website to test out the work.
Now let me jump into my first job just to quickly compare. My first job was as a Dynamics AX developer, which uses X++ as it's proprietary programming language. The applications were connected to a very complex and large Sql Server database, which I didn't know much about, as the most I did in college with databases was writing a query with 3 joins. WinForms were used throughout both as tools and to work with Dynamics.
It was incredibly difficult. I was corrected alot, I spent tons of hours after work going through the projects and learning how everything I knew..wasn't really applicable. Big wake up call. I was transferred to the web department after a year to take the load of the single web developer, where I worked on websites built in C# and I had a very helpful and patient lead developer who I owe alot of my current knowledge to. I would arrogantly do things the way that I learned in school, and he would rewrite many things and tell me why it was a bad approach. I'd go home, work on my own sites and implement everything I had learned that day. If college was simply a ticket in order for me to get this real world hands on experience, then it was worth it.
I loved college. I made a ton of connections and I was forced to read software books in order to pass my classes. Could I have done it alone? Sure probably. Was I going to?...probably...not. Just like people that want to be doctors won't just spur of the moment begin to memorize every bone in the human body. However, I'd wager that most people that ever did anything big, probably didn't do it while waiting for their 5:30pm Commedia dell'arte class. College offers a good foundation for learning HOW to learn. After that hurdle, I think it's up to you to see where to take it. So while I don't agree with the choices being made as to what is taught, I wouldn't use that as an excuse to not learn something new. If they don't want to teach it, fine by me, I'll just rack up $1.50 in late fees at the public library and learn it myself.