My learning journey so far

Photo by Tim Mossholder on Unsplash

Welcome!

Hello, my name is Harwin. I am a final year computer science student at UVic. I was born and raised in India and only moved to this country to pursue a bachelor’s degree, which is a big deal in any Indian family. I chose computer science for the money initially. Seeing all the big tech salaries was enough to convince me. The struggle to get there was kept clandestine, and I learnt that the minute I saw so many smart people around me still looking for a basic software developer job. I understood that if I have to thrive, I better love it enough to get through the struggle part, and no way can I do it just for the coveted six figure job out of school that everyone tried to feed me. I had my first internship at a small IT firm in Prince George of all places and there I was alone thinking why did I choose this? Why not something easier? But overtime, I embraced discipline and kept working at it despite a lack of any satisfying success for a long time. Eventually, my effort paid off. I was able to get an internship at Amazon as a software developer and suddenly it all was worth it. I was able to perform well within my team and got a full time offer after graduation. It made me realize that the classic adage of embodying hard work and consistency always gets you things if you can stick with it for long enough, especially when things seem difficult and the universe tests you. I still have a lot of things that I feel I need to build but this strengthened the self-belief which I feel I had started losing along this dimly lit path.

Learning in my industry

The industry of computer science is brutal. I learnt early on that relying on coursework and getting As is not what recruiters want to see. But that is all I was told would matter. I realized that for me to get to my goals, I have to take the reins in my own hands and that is what I did. I started developing my own projects in free time and solving interview problems. I made this a routine for 8-9 months and I started to notice that my skills had started to develop. I could use an application and start disintegrating it into various sections and deduce how each of them must have been built. I could look at an algorithmic problem and come close to the correct strategies to solve it rapidly. I give all credit to project-based learning which I still inculcate in my schedule and life in general whenever I have to pick up a new skill.

This is the video that showed me the path that I then followed religiously, and I am happy to say that somehow things started heading in the right direction. Looking into the future, I was not even sure if I was ever going to get where I wanted with all the effort that I was putting in. It only makes sense now when I connect the dots backwards.

Learning theories

For me, cognitivism has been at the center of my learning. The mental models, memory structures and problem-solving techniques are what I have inadvertently used throughout and those are the key building blocks of cognitivism. For example, when learning a new programming language, I compare its structures to those I already know, which helps integrate new knowledge more effectively. Another aspect is debugging, which isn’t just about finding errors but about analyzing the thought process such as what assumptions I made, where my mental model broke down, and how I can improve next time.

Motivation

For me, relevance is the most important element of motivation for staying engaged in learning. When I can clearly see how a new concept or skill applies directly to my work as a software developer, I’m much more motivated to put in the effort to learn it deeply. One example was when I was learning React framework for a project, which is a popular choice for building user interfaces. At first, the documentation and concepts like hooks and state management felt abstract and obscure. But once I realized that understanding React would allow me to build a real application I wanted to create, the relevance became obvious. That connection to a meaningful outcome kept me engaged, even when I was struggling with errors and complex concepts. The motivation to apply React in practice helped me push through challenges, and I successfully built a functional web app and have been building many since then and applied these concepts in many internships.

Prior knowledge and its impact

I believe that my prior knowledge plays a big role in how I approach new learning, especially in software development which I have based this article on. I tend to look for connections between what I already know and the new concepts I’m trying to understand. This makes learning more efficient because I can build on existing foundations rather than starting from scratch. For example, when I first started learning React (the user interface framework), I drew on my prior experience with JavaScript functions and event handling which are just UI related terms. Understanding how JavaScript manages state, and each section of the web document made it much easier to grasp React’s concepts of state, props, and component re-rendering which again are UI jargon terms that developers use on a daily basis. Instead of treating React as something completely new, I saw it as an extension of patterns I was already familiar with. This connection to prior knowledge helped me apply new ideas more confidently and sped up my ability to build practical projects.