Extending on the about page, I want to emphasise even more the importance of creating personal projects, having independent work and going far beyond what a degree might teach you. Just so that we are on the same page, I will not take into consideration the reason for choosing a Computer Science degree, nor the money aspect of doing a degree, but rather I will assume only that you are doing a Computer Science degree and my focus will be on how to make the most out of it.
The computer world has evolved a lot in 50 years and computers, with everything they entail, are nowadays easy to use; take for example GUIs for art designing or forums for programming errors. That is why Computer Science degrees also adapted and stopped teaching irrelevant topics, such as Fortran (an old programming language) or MS-DOS (an outdated operating system). The currently taught topics make use of the most significant advancements in technology and free students from some of those old pains. Nevertheless, degrees seem to lack lectures on fundamental skills in programming and in dealing with machines.
Of course, there are important things the degrees do teach, and those are mainly related to basic concepts of algorithms and data structures, architecture, databases and networks. They also teach compilers and security, so one gets a good grasp of various relevant fields and can do more with computers than simply plugging together a couple of cables. However, that is the apparent safety net we do not want to find ourselves in, at least for two reasons: first, this knowledge may not even be useful in an actual job, as all the trivia you know is general and possibly long disregarded in the industry, and second, graduates from Physics or Engineering are competing with you for all the tech jobs, because they require the same amount of job training, while potentially having a stronger analytical side.
So how do you fight against the two problems mentioned above? How do you use the advantage you have by having done a Computer Science degree when going into Software Engineering? After all, you must have an advantage, in the same way Medical students have an easier time becoming medics and Law students have an easier time becoming lawyers. What do you need to do to make sure that the Computer Science degree prepares you for a career in Computer Science?
A couple of weeks ago I attended an interview with Tim Berners-Lee. Besides finding out about crucial decisions he has made in his life and in developing the internet of today, I also gained a simple piece of advice that could not have been better targetted for this whole blog:
“Build stuff. Don’t just study stuff, build stuff!”
You indeed need to study for your History of Programming Languages course in order to get a good grade and finish your degree successfully, but that does not mean you should devote your whole time to that. Similar to everyone else, a programmer gets experience practising; in this case, that is programming. If you want to be a software engineer and you do not have any code to present in an interview, you can not call yourself a programmer.
There are a lot of resources out there; we have reached the century when people pursue free online degrees and end up with the same level of expertise as any fresh grad. More than that, it is even possible to skip the degrees altogether and land any job based on a portfolio. From experience, I know I would not be able to achieve that due to my lack of motivation, and that is why I have chosen a degree - I have decided to pay for someone else to help me learn things. Yet it turns out that all the money in the world can not buy me a portfolio builder. It is still up to me to bite the bullet and start practising, as that is the way to the top.
While the Computer Science degree teaches you how to teach yourself, that is not enough if you want to become an expert. You have to apply that teaching and test that theory in practice. The group projects organised by the uni have always been a joke, thus it is time to work on a serious project by yourself. Finally, I would like to encourage you to think about how you treat your degree, and even more realistically, the beginning of your career. Do the problem sheets and the programming exercises, but understand that those are only a baseline and the real world is more than just a textbook. Go to hackathons, get involved in open source and stay tuned!
– Free online equivalent of a Computer Science degree.
– FAQ on basically everything Computer Science related.
– On how to go about a Computer Science degree and new technologies.
– On having no Computer Science degree.
– 2012-2013 comments on reasons against a Computer Science degree.
– The discussion linked to the above.
– On what to be aware of during a Computer Science degree.
– 2009-2010 comments on misunderstanding the Computer Science degree.
– 2010-2011 comments on misunderstanding the Computer Science degree.
– On the market of Computer Science degrees.
– On just in time learning: how to learn exactly what and when you need to.
– On the differences between Computer Science and Informatics; on software engineering versus user-friendliness.
– On how to approach college; article gets philosophical.