Another Brick in the Wall EducationSeptember 27, 2020
This post has been in my drafts since the beginning of 2016. I wanted to postpone releasing it until I have the full view. And now that I have just received the results of my last course at university, I think it’s time to finally publish this post. Since this comes from my own experience, I cannot remain objective in this post. Also, the first two drafts of this post has nothing to do with its current form.
Okay, here’s the short story: I got into university for a computer engineering degree in 2012, hated every living second of it, decided to focus on self-learning instead, got myself a few positions as a software engineer, neglected my studies, decided to finish university anyway, and finally I graduated!
You and I might as well ask why I would go back and finish university after I got an actual paying job. I went as far as leaving my job at the time in order to focus on my studies. Well, I believe I had two reasons. First of all, I wanted to finish what I started. The second reason is, specially coming from a third-world nation, I wanted to have that official piece of paper that denotes I know stuff although, realistically, I might know nothing, but hey, it’s the state of the world we live in!
Now enough about me, let’s talk about computer science education. It’s widely debated over the internet whether to go to university for computer science or to go to a 6-month boot camp that teaches web development basics. Well, in my opinion, neither of them alone teaches you enough to get a software engineering job nowadays.
One might say that a computer science degree will teach you the theoretical fundamentals and the required time management skills, or will give you the credibility and the opportunity for networking with peers. This all may be true, but there are caveats.
My biggest issue with formal computer science education is having to follow a predefined set of courses blindly. The issue here is that the student does not get to see the full picture of the scientific material and only gets to see a very narrow scope through the teacher’s vision because, of course, it’s all part of a course that should be concluded in 3 months maximum. Now, take that one course and multiply it by 5 or 6 courses a semester in different topics and you get yourself scrapes of knowledge from here and there without understanding why you’re learning any of that.
The formal computer science education system does not take into consideration that people may have different interests. Specially, in the field of computer science, there are many fields that have their practical applications and their demanding job markets. Another important aspect that is often neglected in formal education in general, is that people learn differently. The formal education system aims at producing graduates with similar educational backgrounds but with the same mentality which, in my humble opinion, is not right.
The last issue I’m going to discuss in this post is the scientific material. Well, to put it simply, the scientific material often felt dry or flat and out of touch with reality. Being fed up during my recent courses, I started asking questions. A funny incident took place in one of my compiler lectures. I asked my professor (whom I respect greatly. Seriously, The professor is one of the greatest teachers I’ve ever had) about a method/algorithm that we were being taught in the course. I asked about if I looked into the code of a real compiler, could I find the implementation of such algorithm. The professor clearly said: “No”. I then asked why. The professor said: “because I invented it!” I can say with almost certainty that most of the courses I took followed that same pattern.
In my opinion, those “caveats”, are reflected on the job market of software engineering which is notorious for the need of constant self-learnings.
I would like to conclude this post with saying that I do not encourage nor discourage a certain path towards software engineering. I believe every individual has their different case. For me, the important part in any path you choose is having the patience and persistence to continue learning and going forward.