Jamie's Blog

Ruby developer. CTO. Swimmer. Always trying to write more

What you don't know if you don't have a CompSci degree

If you didn’t study computer science at university, there’s quite a lot you probably don’t know. Even more, you don’t know what you don’t know—so I hope this post will be somewhat enlightening.

Here’s a selection of things I learnt between 1995-1998 studying for a BSc. Computer Science at the University of Sheffield (roughly in order):

  • Artificial intelligence, particularly the history of AI and the philosophical concerns around what is intelligence, Searl’s Chinese Room, the Turing Test, etc
  • Lisp: (((our (first) programming language!)))
  • Modula-2: if, for/while loops, functions, comments etc.
  • Web development: using a web browser(!), writing the most HTML you’ve ever seen (tables, tables, tables!)
  • Discrete maths, particularly set theory, graph theory, matrix multiplication, and eigenvalues
  • Legal aspects to software like copyright, patents, ethical issues etc
  • C++ and object-oriented programming
  • Formal methods: logical proofs of correctness which always seemed to end in “triv.” when the lecturer considered the rest of the proof trivial (spoiler: it never was)
  • Some algorithms, I think. Maybe sorting? but I remember we had to use Pascal for it
  • Parallel programming: some theoretical distributed programming and building parallel neural networks in the OCCAM language
  • Networking: token ring networks(!), Ethernet, 7-layer stack, TCP, UDP etc.
  • More AI, particularly back-propagation neural networks and logical inference stuff in Prolog
  • Presentation skills: I think this was a module but I definitely remember having to present some papers to the class
  • Databases: relational databases, SQL, and the various normal forms
  • Natural language processing and the different approaches. Part of speech tagging, parsing, extracting “meaning” etc
  • Speech recognition
  • Computer graphics: raytracing models, 3D representation & projections etc
  • Human factors / HCI
  • A group project. Can’t remember the task but mostly taught me about the unreliability of developers to actually do work
  • Data structures (in Java, which wasn’t taught)
  • Software engineering—I’ve no idea what this was about! Probably the waterfall model 🤣
  • Final year project in which I taught myself Java and build applets and a multi-threaded client/server

All courses will be different, and more recent courses might have some more modern languages. You can find the most recent course online and, whilst things have clearly been updated, the nature of the course has not fundamentally changed.

This is just an a real-life example of what I spent three years studying and you’ll have missed out on if you were self-taught or started in a coding bootcamp.

And do you know how much of that I use on a daily basis? How much of what I learnt during that time I ever used in my 20 year career? Almost none of it.

What a CompSci degree is not

If you didn’t do a degree, you might assume that we were learning all about Ruby, or Rails, or writing React apps, or how to un-fuck your local git repo. No. That is not what you learn during a Computer Science degree. And, in case you’re quibbling with the “BSc. Computer Science” name, it was exactly the same syllabus if you were studying for a “BEng. Software Engineering”.

After the first semester or so of LISP and Modula-2, we didn’t learn programming languages directly. They were a sideshow on which we might receive a brief printed cheatsheet but were generally expected to just figure it out. It typically went like, “Your project is to build this… in Pascal” > “We don’t know Pascal” > “Here’s a cheatsheet”. This is at a time when the Internet resources were nothing like what’s freely available online today. You have vastly more information freely or cheaply available to learn a new language than I did during my degree.

We didn’t learn how to use tools. We certainly didn’t learn to use the tools that we use today and I don’t remember any of my education being directly relevant to my first job (C++, FAME time series database, financial yield curve calculations). It was slightly more relevant to my second job but only because I went into commercial telecoms research around intelligent agents.

My point, in case I’ve obscured it too much, is that you shouldn’t be intimidated by people with a computer science degree. They probably haven’t learnt the things you think they have. They probably haven’t had lectures about the problem you’re struggling with. You should not feel like you’ve been missing out on a secret education about designing React components or architecting systems with Kubernetes and Cloudflare. That isn’t what a computer science degree will give you.

Why you might still consider a degree (or how to replace it)

At Podia, I don’t use degrees as a selection mechanism during hiring and, if my memory is correct, only 2 of 12 developers have a formal computer science education (including me). This isn’t the case everywhere, at every company, in every country. Some places still require a relevant degree and you might have more opportunities with one than without one. That said, I think these companies are a declining part of the industry.

The main advantages I got from my degree were: time, practice, and people. You can get that in many other places these days.

There are bootcamps, courses, internships, and online learning communities that will give you the resources to get started. If anything, those resources are much more relevant to your first job than a computer science degree would be.

There are very low barriers to practicing your programming skills now: open source contributions, side projects, koans, etc.

Those same places also introduce you to people and give you a sense of belonging to a community. I didn’t really make the most of this aspect of my degree but I know others that have maintained strong relationships from their university and used that to hire (or be hired).

Wrapping this up, I want to highlight the most valuable thing a degree gives you, and which most people skip: Time. A solid 3-4 years spent exploring the field, honing your skills, working with other people, and building those twin muscles of curiosity and learning. Even if you complete a 6-month bootcamp and get your first job within a year (major congrats!), you should consider how to best use the first few years and not overly worry about pay and promotions. Don’t be exploited but, at the same time, you should focus more about being constantly curious, tackling new problems, and learning a broad range of topics.


Photo by Joshua Hoehne on Unsplash