A Personal Journey through Computer Science Degree
Reflecting on my path to completing my Computer Science Degree
Having recently completed my degree in Computer Science, I thought it'd be a good time to share about the three-year journey.
A little background of myself, I'm a Malaysian software engineer who graduated from Asia Pacific University (APU), a local Malaysian university. I took Computer Science with a specialism in Data Analytics.
Prelude: Making Tough Decisions
Intrigued for Programming
I was a pure science student, aspiring to become a professor or engineer prior to my degree. I even had a naive ambition to get the Nobel Prize! So, how did I end up becoming a programmer?
It started with every guy's dream of building his own game, and I was no special. I wanted to create simple text web-based games like this after playing a few. I began fiddling with HTML and CSS.
However, I had a lot of hard times, which is common for someone new. Naturally, I gave up after a few courses on freeCodeCamp.
I also had quite some interest in Mathematics back in the days, and I stumbled across Project Euler (Something like Leetcode, but there are only Mathematics problems). I had a lot of fun doing the first few problems by hand to realize that other problems actually require programming!
That's when I truly began my programming journey with Python, and I love it!
At this point, I still haven't considered taking programming as a profession.
Joining Data Analysis
2020 was an interesting year, not just Covid-19, but also the blooming year of Data Science in my country. Everywhere is talking about Data Science, the greatness of data, and everything imaginable.
At the same time, I also learned that Engineering jobs in Malaysia pay rather badly, and also other Science careers in general (Might be just the news that I was exposed to).
I thought that since I kinda like Maths, and programming is quite fun, why not Data Analysis? I also somewhat believe that the degree doesn't determine the career that I'll be taking, so might as well give it a try.
And that, was how I started my programming journey.
Entering APU
Well, let's start with the university. Asia Pacific University has some fame in Computer Science locally, and my friend said it was good. Most importantly, APU was quite near to my house, just about 10-15 minutes away, up to 30 minutes max during peak hours. After some consideration, I just registered for it.
Simple as that, didn't consider much about its ranking or anything else, as I trust it's just a process.
Fortunately, I did manage to secure a 50% waiver from my A-Levels results, which helped a lot financially.
Navigating the Unknown
Life at university was very different from my college where I took A-levels.
It was still examination-based back then, but when the degree began, it became assignments everywhere. Even worse, others (teammates) will have a significant impact on my results! University was a strange world to me.
Besides, the modules and courses were also much less structured. While there were recommended readings, only specific parts would be baked into the overall curriculum. I was somewhat lost with this new way of learning in the beginning.
Fortunately, along with me was another high school friend making this journey not alone.
The New World
As an ex-pure science student, the computing world does seem somewhat alien to me, in addition to the business subjects added by the university.
While there were some resemblances to Physics and Mathematics, the more theoretical sides such as Object Oriented Programming, Operating Systems, Computer Architecture, and Networking were more abstract. I for one, indeed struggled a little during the early phases of my degree.
Not to mention, the business and project management subjects which focused more on essay writing, posed quite some challenges to me too as I'm never really a writing person.
Though till now I still am not sure why did I have to learn subjects like Management, Creativity and Innovation, and Digital Thinking which don't add much value.
Adapting to the Novelty
As time passed, everything began to feel normal again. After all, it was just cycles of relaxation (beginning), panicking (the number of assignments due), rushing (towards the submission), cramming (for finals), and anxiety (awaiting results).
Slowly, I discovered my best approaches to studying and completing assignments.
There was rarely a need to continuously study the materials over time as the exams were mostly online-based. More often than not, I just had to go through the slides a few days before the exam, and just search for the points online or from the slides during the exam.
On the other hand, assignments require much more effort. Most commonly, it would be a several thousand words essay, or in the format of a journal, on a certain topic. For instance, our computer architecture subject required us to conduct research on a computer model as a group.
While I didn't like the majority of the modules (due to various reasons), I did have fun with several and even liked the assignment. This included Concurrent Programming where we did a multithreaded airplane simulation, and Real-Time System where we did research and benchmarking for Messaging platforms (RabbitMQ).
Academic Triumps
Despite the new formats in the university, I did manage to secure decent grades throughout, and obtain first-class cgpa in the end.
I guess it can also be partly attributed to the fact that most of my degree's subjects are relatively easier. There's no advanced Mathematics (not even Linear Algebra), our programming assignments were mostly easy (doing basic systems in CLI of course), and many business subjects (that you can score as long as you write).
I don't even know if it's something to be proud of for getting such results, but I guess it's somewhat satisfactory.
Most importantly, I might be able to apply for my study loan exemption with my results!
I applied for about 40% of a study loan, with a 50% fee waiver, which almost equates to a full scholarship!
From a Mistake to President
I always believe that a university life without clubs and societies is incomplete.
In the degree, I ended up with the Asia Pacific Analytics Club. I wanted to join the Developers Club initially, but fate brought me there.
How did I Join the Club?
It was a funny mistake,
I came across this poster, and I thought it was for member recruitment. I filled in the registration form, then I was emailed for an interview. At that moment, I was like
WOW, this must be an elite club, even the members need to be interviewed!
Somehow I got through, and it was then I learned that this was a committee recruitment session.
Life as Public Relations
Thanks to my previous blogging, I was placed in the PR department. I was never a Social Media person, and of course, I rarely post. Writing social media posts was novel to me.
Nevertheless, it turned out to be quite nice! I always enjoyed sharing knowledge with others, and most of the time, my job in PR was to prepare this kind of stuff! This was my first content about Random Forest, good ol' time.
I then continued to prepare content for like almost half a year. I guess this period was one of the best moments when I got to mix around with others, and sometimes talk and gossip for hours late at night.
Oh, and I actually built an automatic mailer and certificate generator as well as a website for the club. It was great to see how my work was put into practical use back then.
Leading a Talk
At the same time, I was suddenly appointed as event lead for an online talk. As we managed to invite some big people in the field, this event got quite some participation. It somehow attracted over 300 registrations!
It was a busy period I remember, planning out timelines, sending emails, assigning tasks, and checking out others' progress. All of these are on top of my studies and assignments plus my part-time tuition teaching. Nevertheless, I made it through, and it was a huge success for me.
Climbing up the Hierarchy
As one semester ended, the committee reshuffled, and I got promoted to vice president. Everything seemed so great.
Things began to go downhill. 2 events planned for several months went nowhere, old committees began to quit, and some underperformed. The whole club seemed to be falling apart.
I wanted to give up multiple times, and finally, the next recruitment arrived, old committees left, but were replaced by more enthusiastic new committees. I became the president as the other vice did not wish to be one. Things went back on track, and the club was functional and lively again!
Nevertheless, I did not stay for long, as I got tied up with my Final Year Project, and I was taking up part-times. I left after being the president for merely 4 months, but at least I left it in a good state, which I was proud of holding it together.
Hackathons: Striking from Last
A Computer Science Degree without a hackathon is a bit of a regret.
— Me, 2021
Looking back, I can't help but to agree more with it. It defined my success in my degree life! (I don't see my results being too successful, just somewhat above average)
Starting from the Bottom
I was practically a newbie developer when I started joining hackathons. I only had 1 year of experience max in writing basic text programs, using Python mostly, and I couldn't even write functional websites.
My very first hackathon was a mobile application, built using Java. Long story short, the team dynamic wasn't there, we lacked the necessary skills, and we did not deliver it well, but somehow we still ended up as 7th, probably because the idea was somewhat decent.
My second hackathon was somewhat better, winning third place, but there were only 5 teams. However, this was the moment I learned that technical skill is just one of the requirements, most importantly, there needs to be a good business proposal!
I still didn't manage to find a business person by the third hackathon, which was my worst hackathon. We basically built a plain website that has a Plotly chart on it plus a few funny recommendations. Very well expected, we kinda got roasted by one of the mentors, and I even had trauma for mentors and hackathons for a while...
Results-wise, these hackathons were bad. However, knowledge-wise, these first few hackathons shaped my future successes, learning the essential skills and began to understand what to expect from hackathons.
Paving to Podium
As time passed, I got better with coding, expanded my knowledge, and most importantly, found the key business person, Nicole.
After pausing for about 6-7 months, we joined another hackathon, and to my surprise, we won the champion! It was a mobile application for community security. I thought it might still be a sheer fluke, which wasn't at all!
Fast forward to May of this year, we formed a new team, officially calling ourselves DoBetter. It was our first 3-day-2-night physical hackathon, and we won! This was a key moment that maxed out my faith in the team. I started to see how great the team dynamic was, there was creativity, strong presentation and business knowledge, and of course, we had strong technical backgrounds.
We then managed to trump one final hackathon before graduating. It was a huge hackathon, and even featured on Digital News Asia!
Reflecting the Journey
The entire process of a hackathon is definitely a grind, and I do feel like quitting at times. Even after winning some hackathons, we still get flamed by mentors for unfeasible ideas, bad executions, or lack of depth.
However, the real thrill sets in when you see your prototype is working, when the mentors like the ideas, and most significantly, when the solution is presented. Of course, there's the prize part, but yeah.
I can't help but find myself lucky to meet a great team despite being in the last year of my degree.
Regardless, these hackathons certainly helped to build my technical skills early on in my CS journey, brought invaluable exposure to different industries, and ultimately led to my current job.
I never regret joining hackathons, and thus I believe I leave no regrets for my degrees.
Journey to Software Engineer
I took up a Data Analysis course, but how did I end up being a SE now?
First Taste of Web Development
While I had some experience in writing basic HTML, CSS and Javascript, but I knew nothing about Web Development.
However, during one fateful day, I was presenting my assignment in the class, which I built using HTML (while most others made using Figma, but I didn't know how to use it), and I was invited to join a startup project.
Long story short, it didn't work, but I had my very first exposure to Laravel and Vue, and it got me a developer part-time! While there was also a project using Laravel & Vue, the remaining were WordPress projects.
Wouldn't say WordPress development is fun, but I did somewhat get better with Javascript and UI Design. I also agree to a level that different tools are suitable for different tasks, and in this case, WordPress is certainly more suitable for fast and simple static E-Commerce websites.
Transitioning to Software Engineering
Halfway through my degree, I realized that I didn't like Data Analysis, I never really liked building dashboards like Power BI, I didn't like to wait while training models, and I'm not that into handling that much data. Rather, I like to build apps and systems, like something with a UI that I can see and use, and not just plain data.
Knowing my preference, I took up a developer internship, at a startup. It was followed by another web development part-time at an agency, which was in turn working on a startup project. I really enjoyed and loved the work, and so I successfully transitioned into a Software Engineer.
It was actually a continuous learning process, as I started out with basic HTML, to simple web apps, a big SaaS system, and eventually to building huge apps from scratch. My preferences and skills also come and go, from Bootstrap to Laravel + Vue, Next.js, and more.
Of course, my degree was still a great exposure to the world of AI and ML, which is arguably useful in this era of AI.
What's Next?
While I do have big dreams and ambitions, I believe that it's important to start from scratch. I am now building my technical skills and expertise, and most importantly, things beyond tech side. Therefore, I am currently working as an engineer but have also been given the opportunity to try out a few non-tech things.
I will still be joining hackathons actively, but I gotta admit that the energy and enthusiasm have somewhat faded.
But well, this is going to be a new chapter of life, only time will tell where will I head in the future!