I meant to write this a while ago but got side tracked and ended up writing a completely different post. My graduation was Saturday and marked a significant accomplishment in my life. I’d like to go back over some of the things I’ve learned and experienced. Apologies for such a long post, but hey, this was 4 years of my life we’re talking about here.

Freedom And Living On Your Own

My freshman year was not the greatest. I lived in the dorms. We played Call of Duty 4 at least 8 hours a day. Hide and seek across the ENTIRE campus started at 11pm. I don’t remember studying. I don’t remember being awake during class. I don’t remember learning a thing. The freedom of living on your own and spending every moment of the day with your friends was something else. You’ll have some great memories to look back on.

However, I quickly realized this wasn’t for me. I wanted to work. Keryx was just starting out and, while it was a lot of fun to make people feel like idiots while we played COD4, it wasn’t satisfying. Happiness for me is bringing a smile to someone’s face. Living in the moment like this wasn’t the right thing for me. My grades slipped and I failed Calculus 2 on my first try. To be fair it was over a year since I took Calc 1 in highschool (which wasn’t college level at all), but I’ve spent the rest of college trying to recover my GPA from my poor performance.

General Education

These courses are crap. Sometimes I wish I went to a technical school. A lot of these courses were a waste of time. Intro Chemistry, Intro Physics, English 101, the list goes on. I learned nothing, I met a bunch of people but nobody’s heart is in it.

If you’re like me, you love to work on your own things. It’s very disheartening to spend time with a bunch of people who don’t care. I always felt out of place and never really enjoyed it. Looking back, of course, you only remember the high points.

Not all Gen Eds were bad. You get to meet people and if you’re lucky, you find a new interest of yours. For me, this happened in English 102. The course was about writing research papers and the teacher loved movies. We just watched movies, discussed topics, and wrote research papers about the films. It was wonderful. I rediscovered my love for writing and had a unique viewpoint in the class. Almost everyone in the class would agree on a viewpoint but I would come from another direction (often because that’s how I felt, but sometimes simply because there was no diversity). It was great. Use college to explore your talents.

Find Teachers You Like And Stick With Them

Sometimes you can’t avoid them, but some teachers are just bad. Your first impression is going to pretty much be how it ends up being the entire semester. Do they seem disorganized? They probably are. Have a hard time following them? You’re going to go through the entire semester like this.

One of my CS professors was fairly hard to understand with her accent. I gave her the benefit of the doubt, but soon realized that what I found hard to understand was how she explained things and not her language. Coming from an entirely different culture, she was strong in math unlike US students. What came naturally to her she was unable to explain to us in a manner we could understand. This was a huge mistake. You can usually tell after a week of class whether your teacher will be like this or not. Unless it’s required, don’t waste your time in these courses. You’ll hate every moment, you won’t try your hardest, and you would have been much better off with a professor you did like.

When you find a professor you do like, stick with them. The current chair of the department is one of my favorites. My first course with him I loved, it was on Assembly programming with the MIPS architecture. One of the hardest classes I have had and I loved every moment. I slaved away for hours trying to write the programs. Everyone complained but me and a couple other students. We were the ones who cared. I learned an incredible amount in that class and wish I knew programming at the assembly level much more than I do.

After that class I swore to take as many courses with him as I could. Keeping in close contact with him throughout the years, I landed a part time job with him, got to do some awesome research on my own with him overseeing me, and he helped me get a part time job with another professor looking for a Rails developer. Work closely with faculty you like and you will be presented with some incredible opportunities you wouldn’t have received otherwise.

Pay Attention In Class

Things might seem boring. Algorithms and Data Structures? I know how to use integers and arrays. This stuff is boring. That’s how I felt during the class. I had it with a professor I didn’t like and didn’t try very hard. It turns out this kind of thing is incredibly important later on. If you’re interviewing at most companies (startups are usually excluded from this) you’ll be asked these theoretical questions. What is the Big O of MergeSort? You should know these things no matter what.

It’s things like these that are very hard to learn on your own. You don’t even know they exist, so how can you know to go look them up? At best, you’ve got Hacker News to pay attention to and google every little thing you don’t understand. Then you’ve got to find websites that can explain it to you in a manner you can comprehend. That’s hard. That’s why you need to go to college.

That’s not to say you can’t learn these things on your own, but they will affect your design and implementation of projects. This can be good and bad. You are aware of how things may potentially bottleneck. At the same time, you lose your naivety and put things off because you’re too worried about building something inefficient. If you don’t know about these kinds of things, you jump in immediately and start building.

The complicated topics are where you will learn best in college. They’ll challenge you unlike your gen eds. Algorithms and data structures, networking, operating system implementations (memory, disk, threading, etc), low level programming, the list goes on. These are all very interesting topics and quite hard to learn unless you have a mentor. The toughest topics are the ones I remember the most fondly.

Know What You Want From School

I wanted to grow my network of contacts and get real world experience. Because my focus wasn’t on grades, I struggled to get a 3.0 GPA. The companies I want to work for don’t care about grades as much as they care about getting things done. That’s what I wanted, that’s what I got.

Maybe you want to work at IBM. Grades will certainly matter a lot more for you. Several places at the career fairs initially blew me off when they asked for my GPA. They took my resume anyways just to make me feel better but guess what? I got calls back from almost all those places. “Wow, you worked for Google one summer?” Yes I did. In CS, grades matter the most when you’re a new grad. Switching jobs later on in life, nobody is going to care about your GPA. Knowing this I chose differently than other people about my experience at college. Whatever you do, make sure you know what you want to get out of college. It’s too expensive to waste your time.

Things I Use Daily That I Got From College

A lot of people think graduates are so much different from those who didn’t go. That might be the case, but I’ve seen several people who did just fine. The worst thing about not going to college is feeling that your knowledge is incomplete compared to graduates. Don’t think that. Ever.

Honestly, there are only a handful things I use on a daily basis that I have learned in school. I never took a course on databases, they were the focus of my interview for the job I took, and I passed it with flying colors. I remember someone making the remark that it “Looks like we need to make this harder.” My database knowledge is entirely self taught and I’m doing just fine. Sure I don’t understand more complex things about databases, but from what I can tell, our database course didn’t teach much real world experience anyways.

Algorithms and data structures are things I DO use on a daily basis, but they vary by programming language. What may be efficient in C isn’t in Python or vice versa. Get to know your tools and work with them accordingly.

In all honesty, I think the goal of college isn’t to produce excellent job candidates. The goal is to expose them to the concepts in a bunch of different areas so they can be familiar with the topics, figure out what they like the most, and know where to go from there. Most programmers I’m graduating with can’t program. I’m not even joking. What they DO know is a bunch of concepts.

The problem with things is that the job market expects graduates to immediately be able to come in and start implementing new features. If they never programmed outside of the classroom in college, you can’t expect them to be able to do it in the real world where you’re not running around in a room with padded walls. If you screw up badly enough in the real world it can cost you your job. In school? You just take the class over.

Learning to do things on my own, without help, was probably the best thing I have ever done for myself. It sounds stubborn, but you can do anything. You don’t need anybody holding your hand. It might take a while, but you’ll look back on it and wonder what your life would have been like had you need been a self starter. That dream job isn’t so far out of reach at that point. Some might think they have to work their way up the ladder for 20 years to get where they want. Why wait? Just go snatch it up right now.

If you’re interest in learning things on your own, Daniel Strauss pointed me in the direction of the which hosts a bunch of great online courses completely free.

comments powered by Disqus