For the past few days the reality that I'm going to be graduating has finally hit me and I've been reflecting on my four years as a Computer Science Major. There are some things about College that I look on fondly, and a lot that I don't look on so fondly. In fact, I'm 100% ready to move on and head into the workforce. Before I do that though I want to share what I've been thinking and hopefully provide some helpful information for people who are thinking about whether a CS degree is the right path forward for them.
College is generally a pretty cool idea. You get to go to a place and learn a ton while still being relatively separate from what I would qualify as the 'real' world. I think that going to college and just learning how to be a human being and function in a society is highly valuable. So, if you're not going to be taking on an obscene amount of loans, I think college is worth it for that alone. It gives you the time and space to grow up alongside your peers and really get your shit together before you start your career. Personally, I really needed that time. I was NOT ready for the real world four years ago.
Another big pro about going to College for Computer Science is that it can be pretty helpful when it comes to exploring niches within the industry. When I got to College, I was convinced that I was going to be doing graphics programming for Games and FX type work. So HLSL, C++, WebGL, all that stuff. Then I took linear algebra, failed it the first time, got a B- the second time and realized that graphics programming probably wasn't for me. I didn't know that there was so much math in that realm of programming, and it really turned me off to it. I probably could've figured that out on my own, but how much time would I have wasted? Probably a lot. I was like a month into my first round of linear before I realized that graphics programming wasn't for me.
If you go to a school with a mature program, there will probably be clubs that you can join as well. For example, I was a staff member on the VR club for a couple of semesters. Now again, I realized that the VR industry wasn't for me, but I think that learning what you don't like is just as valuable as learning what you do. Plus I got to meet some pretty cool people while I was at it.
Speaking of people, that's another big pro of going to school for Computer Science. If you go to a school with a big program, you're bound to meet tons of kids, most of which are probably very intelligent. I don't really think I need to explain the value of knowing people and having friends within the industry, but college is a great place to build these relationships. That's not to say that you couldn't build these relationships at a bootcamp or something. But again, depending on where you go to school, the sheer number of kids to meet can be huge.
The last pro that I'm going to talk about comes from all of the group projects that you're going to have to do throughout your time as a Computer Science major. There are actually pros and cons to that so group work is going to have it's own paragraph in the con section as well. Group work can occasionally be an interesting learning experience. While the worst in people is generally accentuated in school group work because people aren't paid and there's no actual incentive to do anything, doing group work with shitty teammates can really build some character and teach you how to deal with people who aren't pulling their own weight, which I would imagine does happen in the work environment from time to time.
You may have noticed I haven't really said much about education. The reason for this is that I really don't think that the education is a huge pro in it of itself. With sites like Frontend Masters, EggHead, etc, you can really learn all of the foundations of Computer Science like memory management, data structures and algorithms online with some time and effort. I think that the main value of school comes from the insane networking opportunities, as well as the time to grow up and find your place in the industry.
The first con is that a lot of programs can be hit or miss when it comes to the quality and depth of education. But wait, didn't I just say that education wasn't that important? Well, yes I think that relatively speaking it isn't as important as the other things I brought up. That being said, if you ARE going to go to college for Computer Science, hopefully you'd want to learn AT LEAST as much as what you'd be learning in the more Computer Science oriented online courses out there. I go to a pretty big school that is purported to have a high quality Computer Science program. To be honest, I never really noticed anything that special about it. I had some professors that clearly loved their jobs and cared about their students, and some professors that clearly didn't give a shit. The one thing that my school did have though was a challenging and expansive curriculum. You could explore a bunch of different realms of computer science, from compilers to cyber-security. Unfortunately I know that some schools don't have such choice in their curriculum. If you go to school for Computer Science it would certainly benefit you to go to a place with a high amount of choice in classes if possible.
Computer Science is also fucking HARD. So hard. It's not just programming, programming is the easy part. It's the analyzing of data structures and algorithms and figuring out the amount of block transfers done in a block-nested loop join and taking three different math and stat classes...Yeah, Computer Science is a really hard major. In fact, these past four years have been the most stressful of my life by a long shot. The amount of day-to-day work in Computer Science is a lot more than most other majors because almost every single class is project based. You have to be doing work every day in order to stay on track. This makes it harder for Computer Science majors to have 'traditional' college experiences. This isn't to say that it's impossible, because I've known kids that have pulled it off quite well, it just requires a lot of discipline and time management skills that I do not possess.
A particularly annoying thing about college, for all majors, is the fact that you will almost certainly have to take classes that have nothing to do with your major. Computer Science is no exception, and it's brutal. The thing is, I understand the reasoning for forcing me to take humanities credits, it's to build a more well rounded student, I got it. The problem is that because CS classes often take so much time the other classes become an afterthought and I don't get as much value out of them as I could be getting.
The final thing is that most CS curriculum, including mine, are packed full of painful CS theory while leaving out really practical skills like leadership, working on teams (that aren't dysfunctional because of lack of real stakes) and software engineering generally. Kids (including myself) graduate without knowing how to address pretty common problems like naming things, and often have no idea how to architect a working piece of software. There is actually a class at my school called 'Software Engineering' which I took this semester. It was a valiant effort by my professor, but it was plagued by the same issues as previous group work, namely, the lack of student effort. CS programs are usually pretty terrible at teaching industry standard tools as well. There's a 1 credit class at my school right now for React and a roommate of mine took it. I asked him to send me his slides and project prompts because I was expecting it to be egregious and well, my school did not disappoint.
So after looking back, it seems as though there are quite a few cons, but also quite a few pros about going to school for Computer Science. Personally, while I found it to be insanely stressful and exhausting, I don't regret my time as a Computer Science major. It really helped me find my way and meet some good friends. Could I have done that on my own? I'm not sure, but I do know is that in this timeline, College got me to where I'm at right now, which is pretty good.
Generally, my thoughts are this. Going to college for Computer Science is probably worth it if you have the money to go without getting into crippling debt and you're unsure as to what direction you want to go or if you just want to experience what it's like to grow and figure yourself out while everyone else around you is doing the same thing. If you don't value those things as much, like you're already in a career and are looking to change industries, then maybe you'd be better off heading to a bootcamp, getting your foot in the door as fast as possible and picking up the CS foundations as you go. I actually met a couple of people at my internship that did this and were doing quite well in their first jobs. Neither path is correct here, it all depends on you and what you're looking for from your life and your career.
Alright, time to get back to studying for my finals...