“Hey Guillem, my computer doesn’t seem to work… Could you come by and try to fix it?”

Any of my friends, 2020.



As a Computer Engineering student, I’ve noticed that there’s some misconception about what my degree is about. Joking aside, although most of my friends know that if they have an issue with their laptop it’s a better idea to call the Technical Service, they wouldn’t really know what I’m learning taking my University courses. And even worse, I’m sure most of my family wouldn’t know the differences between Computer Engineering and for example Electronic Engineering (and yes, I’m sure they care about me).

 

So, isn’t it all about coding?

Not really, in fact I’ve taken some courses where I haven’t written a single line of code. It’s true, programming is fundamental and many courses involve some sort of coding, but if you think that studying computer engineering means strictly learning to code you’re not quite right.

In fact, through my last 4 years I’ve taken Project Management courses, where I’ve learned the basics of “traditional” PM, while at the same time I was learning about “agile methodologies” and more modern team management techniques like Scrum.

I’ve also taken leadership and entrepreneurship lessons, where I learned about topics like active listening or the importance of identifying your own strengths and weaknesses.

Maybe all this can sound weird, and maybe even some people can think that taking this kind of courses is a waste of time, but I don’t agree with that. I think that there’s this false believing that the best engineer is the one with the highest technical skills, that can solve a problem with an extremely little amount of time and with so minuscule resources that it’s almost magic. And yes, it’s very important to have strong problem-solving capabilities and to excel at different technical skills, but we must remember that normally engineers work in teams, and teams are mainly formed by humans. And since humans are not like robots, I think it’s important to have some kind of even merely basic notions about how to interact with others in a way they feel valuable, how to manage teams without making its members feel like they are just some kind of flock of sheep and, in the end, making human relations on a business environment as human as possible.

 

Okay, so you believe that humans are important, but I want to know what kind of technical knowledge you’ve learned!

First of all, I must say that as a final year undergraduate student I don’t consider myself an expert on anything. I’ve met some students that once they’ve finished a course on some topic, they believe that there’s nothing more to learn about it. I totally disagree with that mindset. But as a humble student I can list some different topics that I’ve studied during these years.

Here goes the rap-like list of some of the coding languages and other development artifacts I’ve been introduced to until now: C, C oriented to microcontroller programming, MIPS Assembly, Microchip Assembly, SQL, Java, Java but this time applied to Android development, Swift, some Bash scripting, the “web development basic pack”: CSS, HTML, Javascript, PHP…

This was a much longer section before, but I almost fell asleep while I was reading it, so I decided just to give a brief list so you can make yourself an idea of the topics you learn while studying my degree. Anyway, if you want a more in-depth explanation, just let me know in the comments!

 

And what are the Career Opportunities once you finish?

I don’t really know. Okay, maybe I’ve exaggerated a little, but there are really so many different fields that a computer engineer can work on that makes it difficult to sum them up.

For example, as a computer engineer you can end up more on the computer science side, focusing on algorithm design, complexity analysis, etc. You can also decide that you prefer building and typing code, so maybe a software developer profile fits you better. And even as a software developer you can focus on many different areas, mobile developer, web developer, low-level developer (it doesn’t mean it’s easier, it means it’s closer to hardware). And don’t forget about team management profiles, as a computer engineer you can also learn more about team management and manage engineering teams.

As you can see, computer engineering offers plenty of different options to specialize, so even computer engineers can have many different profiles between us. In fact, this means that probably I don’t know even a 1% about my degree, but it also means that if you’re eager to learn and you find this field thrilling, you’ll enjoy it a lot.