For years , I believed in the fact that computer science is all about passion , creating games, apps and making your websites look good or just learning Data Structures to get a job at MAANG. For a lot of people in the field of computer science the journey starts either with gaming or the curiosity about technology and tech tools. Someone telling you that they got into CS just because of the algorithms or some other story is completely a boasting or a lie.
The notion of Computer Science being easy comes from the fact that when people learn Python or something like JavaScript with very loose syntax , or sometimes after understanding the basic syntax of C , they reach the peak of the Dunning-Kruger effect and believe that they have mastered it all. It is a blindfold that makes people believe that all it took to master computer science was just a 10 -12 hour video tutorial course or some random articles were you copied the code from. But let me explain you why computer science is not easy and why it should not be.
Learning Programming is not equal to Computer Science
Programming Languages are like a tool to tell computer your thoughts, its really just a tool , a medium . The fact that people believe understanding concepts like tokens, variables, expressions , iterative and conditional statements which are basic to all programming language or something specific to language like void callbacks, templates, OOPs, pointers, referencing has made them master the language and now their enlightened journey to be a developer has reached a huge milestone is just wrong. Programming is actually your first step to enter into the domains of Computer Science and Engineering. Creating a website, or an app interface or maybe creating a game using some game engine is not what will make you a software developer or a computer science engineer.
So what really is Computer Science to me & Why is it hard ?
My journey to understand really started after I kind of finished my Bachelors in Computer Science Engineering . During the college days I was maybe at the peak of that Dunning -Kruger effect chart and it was after my placements and a few successful interviews that I realized that what I know is just not enough.
Computer Science has its root in Mathematics , you can just not call yourself a Software Developer if you don’t completely know about topics like Matrices, Combinatorics, Probability and Linear Algebra and Discrete Math Topics like sets, Boolean algebra and Graph Theory; This is the actual start . Moving on we have topics like Operating System , Distributed Systems , the good old Algorithms and Data Structures that help us truly understand the meaning of what computer science is and should be. The games you see , the MacBook you use , the websites you read your articles on and the social media apps that you get distracted by are just mere applications or products of these core subjects.
What blew my mind was my introduction to the subject called “Theory of Computations” which made me realize of the fact that I literally didn’t understood the true nature of this field. Starting with concepts like Regular expression, finite automata, Context-free grammars and push-down automata. Regular and context-free languages, pumping lemma, Turing machines and undecidability the subjects just goes deeper into the roots of this field called Computer Science and I believe in the fact that these topics and subjects are vast and really hard to master, but these are what makes you an Engineer , a Software Engineer.
Why should Computer Science be hard ?
So when someone talks about STEM , we know for sure there is some tough mental work and engineering is a complex and tough field, but the same image does not appear when we talk about a Software Engineer. This is just because of the ignorance that I talked about at the start of this article and that people think it is the programming languages and the framework and typing relentlessly on the keyboard and copy-pasting code that makes you an Engineer. The field of Computer Science is more about pen and paper and thinking than laptops and relentless typing. To actually ace in the field , you really need to close those tutorial videos , or adding every random buzzword to the resume and get down to reading books on these subjects and understand what Computer Science really is.