Formal Computer Science Education

In professional software engineering there’s a common debate on the merits of a University degree in Computer Science. The points of view tend to be that such a degree (or its equivalent) is either an absolute requirement, or absolutely unnecessary in order for someone to be successful in the industry.

The truth is, as with everything in engineering, that “it depends” is the actual answer.

I can tell you that all of my life I have known that if I find and read the right book(s) I can easily learn a great deal about a given subject, and usually couple that with practical experience to become a master of that subject.

That means, reading a book (or blog article) and trying things out suggested by those in order to learn.

I did that with Bread Baking, and was able to pass my Trade Certificate in Bread baking, the book was The Master Bakers Book of Breadmaking.

The hard part, though, has always been finding the right book.

A lot of time can be spent trying to find, or reading the wrong, books, and getting mixed up along the way. The baking book I found by pure chance, looking through the reference list of a few baking books I had found at a local library, and discovering that the local university (Massey) had a copy in their library.

My journey with CS began when I read some server administration books, and practised that at home, allowing me to attain things like my CompTIA A+, Network+, Linux+, and Microsoft MCP70-215.

But that wasn’t the path I was wanting to follow. I found software development a little more tricky to get a full understanding of. I taught myself Perl, tried my hand at C++, but never really found the right books to help me on my journey, and nobody that I spoke to online or offline was particularly helpful.

Universities have a group of people specialised in one area or another, CS in this example, that spend time reviewing books, papers, and trends on the subjects that have been found by experience to be required by people interested in the discipline to know in order to be successful in their chosen vocation (should that be their goal).

What that means is that lecturers and course administrators are staying abreast of the current research into parts of the CS field, and using that as a guide to what students need to understand, as well as what resources are best for conveying that information.

They’re doing the work of finding the right books to read.

When a student enrols in a degree, they attend classes that deliver the information that leads to an understanding of the subject that they are interested in learning. They are told which chapters of which books to read, and what exercises to do.

Thus going to University meant, for someone like me, that the books to read were laid out in front of me, all I had to do was follow my natural instincts and read them, whilst trying the exercises out at home.

For me, this meant I was awarded a B.Sc(Hons) majoring in Computer Science, by the University of Waikato.

Just to be clear, the difference between studying in a degree program, and self directed learning is luck. How lucky you are in finding the right books, vs having a school do that search for you.

And a degree certainly doesn’t mean you know everything, fields like computer science are very broad, and rapidly changing, it’s impossible to know everything. But a CS degree is evidence that you have been exposed to, and some understanding of, the fundamentals that people without a degree have to show some other way.

There are also things that a degree will not provide, that can only come with experience. For example, when I completed my degree I had no idea about coding standards, or where to learn them (part of the reason for this is that coding standards can be a misleading term, different technologies have different standards, for example, when to use TitleCase, camelCase, or snake_case, and some standards are project or team specific).

Published:
comments powered by Disqus