Coding with Purpose: How Micro-Goals Changed My Life as a CS Student

I am Monazir Muhammad Doha, a CS student at BRACU. Even though I’ve just joined BRACU in the spring 24 semester, I’ve been involved in this programming/tech world for quite some time now. I have always been interested in building things in general. The urge to bring my ideas to life is what got me into programming long before I knew I would someday study CS.

It all started on a mundane day, while randomly surfing the internet, I came across this idea of programming which was required to learn to build software. After researching the topic for like a day or so, I chose “python” as my first programming language. 


Where it went wrong

I started learning Python concepts one by one. Because I was very interested in it, it didn’t seem hard at the beginning. But soon as I discovered topics like set, tuples and dictionaries, it started to seem pointless. I was like, “Yes, it works like that and this structure is different from the other ones like that, but why am I learning this?”.


The human brain is wired in such a way, that if it finds no purpose behind storing, it just does not store. Mine is no different, I would learn a new data structure and forget the last one. At some point, I thought it wasn’t for me and I stopped. My brain, ultimately I, did not have any purpose; yes I had an end goal that I'd someday build software, but that was just so far away that my brain couldn’t comprehend it. 


Shift in interest

Months passed; and at this point, I don’t have a passion for building software but rather a passion for breaking it. In other words, my interest shifted toward cybersecurity; web app security to be more specific. Learning web app security has been the greatest thing so far, I feel powerful doing it.


While web app security doesn’t require you to be a software developer, it does help when you know how to build your own scripts. A script is a small piece of code/software that automates certain steps in the security check process. Throughout my journey of learning web app security, which by the way has not ended yet, I have developed many scripts using those same concepts my brain refused to learn the first time. What’s the difference? You might ask; well, I once asked this question myself and the answer handed me a million-dollar strategy.


The answer

This time, I had a purpose, I knew exactly what I wanted to build. This time, the goal was not to learn Python but rather to build a script. And I’d learn only those things that are required to build that script I wanna build and nothing more. This way, the 'To learn' list gets shorter, and I know what I am learning and why I’m learning it. To put it simply, there is a well-defined purpose.


The strategy

Now if I wanna learn a new concept, I don’t just learn it for the sake of learning it. I set a goal, a project that, while building it, will teach me the concepts. I can give you an example, in September 2023, I wanted to build a URL shortener with IP and GPS logging. Now, the goal here is to build a URL shortener but I don’t know how to build it. My first step will be to answer the following questions:


  1. Has anyone built it already? If yes, how so? Is the source code public?

  2. If it hasn’t been built already, what technologies do I need to use to build it?



I’d go search the whole internet for the answers. Once I have the answers, I’d then go list out all the things needed to build it and see what I have not worked with before. Now that the learning process starts, I’d learn each technology required just enough to create a link shortener one by one. As of today, the project is live, it’s called clickstat and you can try it at www.clickstat.xyz


Building clickstat taught me how to, 
  1. Interact with PostgreSQL via Python
  2. Work with Jinja Templates
  3. Host a real website
  4. Work with cache to boost page loading time
  5. and a bit of SEO
and much much more! That's why this project is closer to my heart than any others.  

I have used this same approach to build the following projects and it worked every time! 



d0ppelganger

Taught me:
  • How to make executables
  • The deprecated Basic Authentication System
Source code: itsmmdoha/d0ppelganger

cct

Taught me: Docker Deployment
Source code: itsmmdoha/cct


If I could give one piece of advice to my newb self, that'd be, 
"Do not learn to build, build to learn instead".

Comments

Popular posts from this blog

Revisiting "Friends": A Timeless Sitcom That Warms Hearts Across Generations

Chittagong Hill Tracts: A Bird's-eye View of Beautiful Bangladesh