The first course at university was an introduction at Computer Science, it was a comprehensive course that took bits here and there on boolean algebra, trends on tech, logic gates etc… I was excited to study and I did my very best throught the week. Though the second actual tech stuff I got was the fundamentals of programming in python. I had a pretty decent background in python because I took a course before (I didn’t complete it) but it was more than enough. Still, by the second week (out of 8) we were studying functions, variables and expressions. What the flying fuck? That escalated too fast compared to the courses I’ve seen online and the ones I did. That’s when I got scared.

That feeling never stopped. Every passing week there was an advanced topic and I genuinely had to put in the effort to get through it. The book we used was How to think like a computer scientist. It was very nice to read and to understand, and it was exactly this reason why I made it safe and sound at the end of the course.

Nobody told me programming courses escalated way too fast

Web programming, Programming I and II, those also escalated too quickly.

But this is the funny part: I can’t even remember most of the stuff I learned. Yeah, I remember some of the web programming concepts because I’m actively building my personal website, but Java? Python? I honestly forgot most of the concepts and I don’t even remember Object Oriented Programming.

In addition to this, we’ve got these at the beginning of the degree, which was really hard for me on those days. I had to purchase separate courses on udemy, watch many YouTube videos (especially for JavaFX), read some books and even paid tutors online to help me get through it (probably one of the best decisions I’ve made).

Tip: Learn to code in Java and Python before you enter the career. Especially Java because it is the standard for Computer Science.

Nobody told me confusion is the everyday mood and not a sign you were failing

Wtf guy meme
Meme from the internet

In school, confusion usually meant you missed something. In Computer Science, confusion often means you’re at the right place. I’ve pulled up many all nighters trying to understand tiny concepts that were necessary in my understanding of something bigger, perhaps something I didn’t have to learn but my curious mind had to get done before moving on to the next phase.

I’ve had many sessions where I was so confused I felt like I was a disaster at programming. Things like recursion didn’t make any sense at all, and one of the things I had to do was to learn to adjust my mind into how a computer scientist think of these concepts, which is not the same as regular thinking, not even maths thinking, it was something completely new to me.

I still feel this way in every new course, and I’m just halfway through my degree. I had to learn to accept this confusion and calm down because coding takes time, and the stuff you do at a real project takes even more time than you think: learning the api documentation, making sure each function is properly defined, the structure is comprehensive and hoping the infrastructure was properly set up beforehand. These kind of things are hard to do and I expected to do ’em in a single shot, which was part of my frustration as well.

Nobody told me the degree teaches you to think, not to code

You come in expecting to learn Python, Java, frameworks, how to deploy a website… Instead: discrete math, theory of computation, proofs. Many students (including me) resent this at first.

I’m still not totally convinced about some courses, but I’ve been wrong before and who knows better? I’m making a career out of this, I’d better be ready for whatever comes my way.

It wasn’t until I read Peter Denning’s perspective on computer science as a discipline that I understood what the field is really about. He argues computer science is not just a science, nor an engineering nor applied mathematics: it’s a combination of them. Computer Science is a science, an engineering and applied mathematics. It is a structured body of knowledge, practices, and values. It exists as a professional way of engaging with real-world problems and its purpose is tied to society.

Modern societies depend on information processing, they need coordination at scale. They require reliable communication systems. Computer Science exists to make this possible. It is not abstract for its own sake, it is fundamentally functional. Learning to think like a computer scientist is the whole reason the degree exists.

The essay I published on dev.to is in Spanish, but I’ll take the time to translate it to English and publish it later. Yet, the original paper can be found here.

Nobody told me how isolating it would feel sometimes

Student in front of their computer, confused or frustrated
Photo by Vasilis Caravitis on Unsplash

I remember I was going through a JavaFX programming assignment where we had to use a weather API and I swear to god I was giving up on that. I didn’t know what API to use, I didn’t know how to set up the API itself, I didn’t know how to set up an environment and I remember I hardcoded it (lol), the visuals weren’t working properly, my IDE didn’t help: I spent hours ensuring settings were ok, the java version, the logic, the debugging at midnight… all that felt like I was alone in this. I never thought of my colleagues and how they did, it never crossed my mind. It was just me, google, youtube and the course materials.

I wish I had a tutor at this stage, it would’ve been so helpful! Someone guiding me privately for this task, even for an hour would’ve been perfect.

Nobody told me that comparison would be my biggest obstacle

Hear me out, I experienced this today watching a tutorial on how to use the Spotify API with python: the way the guy explained and went on with it made me feel like a disaster and that I didn’t learn anything. “How can he define a function so quickly, just like casually writing a recipe?”; I felt awful, but I had to step back to remember a couple of things:

  1. He already knew it
  2. He rehearsed it
  3. He recorded it and edited it
  4. He is a senior dev
  5. It was a tutorial where backend with python was a prerequisite (and I didn’t have it)

More often than not, I’d find myself comparing how I code to other people on the internet, on communities like stackoverflow… “How do they know that?”, “Where does that come from?”. And then I’d stop. I’d stop whatever I was doing and feel disappointed about myself.

This goes hand in hand with the previous thing nobody told me: being confused is going to make you feel this way, but it’s ok. You just have to remember this is part of the job. You are still learning. I am still learning.

Whatever, we ball

The degree I thought I was pursuing isn’t the one I’m ending up with, and I’m still figuring out which one I actually needed. As I said before, I’m halfway through and I don’t know if these observations will hold. I’m still confused, but I am determined to complete this degree somehow and find out what the next steps will be.