What they didn’t teach me in college¶

Updated at the bottom of the post.

Warning: This is a bit of a brain dump.

In the software industry there is a lot of back and forth about the value of a college degree. This post won’t go into that too much, I just want to talk about the notable things that were left out of my Computer Science degree. Mostly things that are used in the day to day environment outside of a university, but aren’t used extensively inside of them.

My degree was a more classical CS degree, which focused on algorithms and theory. However, there was a decent bit of actual “real world” knowledge that they tried to impart. After being at a real job for over a year, I think it is interesting to look back on what I wasn’t taught.

Software testing¶ In college, the concept of testing was basically ‘compare your work against this expected output file’. Sometimes that job was automated, other times it wasn’t. There was absolutely not concept of an automated test suite. However, I think that this may be a limitation of the semester long class idea. A lot of the value from testing comes from things that are real (production, refactoring) or looking back at code that you wrote a long time ago. I have a lot more thoughts on this, and it deserves it’s own post. However, it was certainly a glaring part of what I do now that I had no experience with out of school.

Version Control¶ In the classes that I took, we simply submitted the work to the teacher and that was that. We didn’t check it into a repository, or even version the work we were doing locally. At the time the whole DVCS movement wasn’t quite as big, so I can imagine a lot more people doing local versioning now. I think that the fact that viewing other students work is sometimes considered “cheating” (which is silly), makes it difficult to have a shared repository for all students. A big problem with universities is that knowledge the old mindset that sharing knowledge is cheating. Luckily mine was a bit more enlightened, but I think having a shared repository of code would make this philosophy a bit too “real”.

Web development¶ We had optional classes that offered PHP/MySQL based website making, but nothing in the curriculm about web development. It seems that in this day and age, so much of what we do is centered around the internet that ignoring it in the classroom is silly. That may be the fact that I now do web development, but I feel that someone coming out of a Computer Science degree not understanding the basics of Web Development is a bit silly.