J. Manns Blogs

Graduation Series (Part 2)

Welcome!

In a few weeks, I'll be graduating from West Visayas State University, as a Computer Science undergraduate student, with a magna cum laude award.

It has been a crazy 4-year ride. With lots of highs and lows, staying late at night debugging, lots of impostor syndrome, solo learning, and whatnot.

So much has happened in the those four years that I cannot fathom how I can fit everything in a 4-part series without you thinking that it's a 4-chapter novel.

Although, with that consideration, I'll take you to have a quick view of my college life, from admissions, to freshmen year, up to my senior year.

I introduce you to the Graduation Series Part 2: Sophomore!


Skyrim

On a random day in the 2nd-floor library, during my sophomore year, Cris (my classmate) was copying a game from Dhom (also my classmate) to his portable hard drive.

I asked what they're copying, and they said Skyrim, an open-world RPG type of game. Dhom offered if I'd like a copy of the game. I was feeling hesitant. I responded with "Maybe soon. Furthermore, I'm quite picky about what I play." And we went on our day.

The time that I got home, I researched plenty about the game. It said dragons, dungeons, 200+ quests, open world, immersive, countless mods, DLCs, etc. But I wasn't impressed. I thought, oh, another RPG open-world game, but perhaps I should give it a try. There's a reason why people keep talking about it after 10 years of its release, right?

The next day, Dhom allowed me to have a copy of the game. And that single decision affected my overall GWA.

Not even an hour since I booted up the game, I was already immersed. It felt like I'm being sucked in by a whirlpool, except I'm gravitating towards it. I was awed by the world. The view, the mountains, the snow, the dialogue, the lore, and the world-building. Especially the WORLD BUILDING.

I had total freedom. I can kill whatever NPC I want, I can steal whatever item, I can enter homes, I can hoard every item I can pick, I can raid dungeons endlessly, I can slay dragons, and I can spam magic. It's like GTA, but you can stop at every corner to interact with everything.

I kept playing the game daily for the following weeks. I played for 3-4 hours daily, usually after class. Sometimes I'd even wake up early just to play a few hours before heading to school.

I'd finish activities and exercises as early as possible so that when playtime comes, I can play as late as I want.

However, finished does not mean quality. Unfortunately, I decided which course to sacrifice to compensate with my playtime: Information Management. The focal point of that course was databases, and our teacher is laid back. So, I took advantage of that. And I started submitting rushed and absolute garbage output to my teacher. I know to myself that I'll probably get low grades.

Eventually, grading time came. I got a grade of dos (2.00). That's higher than I expected. I expected 2.25 or 2.50, but no, I got 2.00. Despite that, it didn't pass on to my usual standards (> 1.50). But I patted myself on the back since I got a grade that's a bit higher, and I got to discover and play a game that's now in my top 3.

Sometimes, even to this day, I think that I wasted my time. But I coped by leaning on Marthe Troly-Curtin's old maxim: 'Time you enjoy wasting is not wasted time.'

It made my sophomore year bearable. I wrecked my standards for a semester, but looking back at that 2.00 grade, I’d probably do it all over again. Skyrim is still in my top 3.


A long team-up

During the second semester, we had two courses wherein our professors agreed to merge our final projects into a single final project. That's software engineering (SWE) and system analysis & design (SAD).

The project required groups of 4-5 members. I was invited to join the PeraPal (our final project app name) group, and I agreed. We were a 4-member group. Me, Els, Angelika, and Reycel.

For the SWE course, we are encouraged to apply some concepts (Agile, Scrum, etc), but required to submit a few artifacts, including the Software Requirements Specification (SRS). While for SAD we're required to find a client and build software for their current services.

PeraPal was a concept proposed by Els, and I just went along with it, since I barely had any projects at the time, and a budget tracker was already impressive to me.

I thought, this final project will be a game changer in our careers. We get to apply SWE concepts, and use real client data to streamline their services? I felt like a King. Just thinking how all the clients would be coming in right after this project, showering me in pesos, dollars, and gold.

However, for some reason I cannot recall why, we opted for research instead of consulting an accounting firm or a group of financial advisors. There goes my daydreaming of flooding clients down the drain, since we didn't get to use any real client data.

Our SAD professor gave us a pass though, since the concept was already approved by the SWE professor, and we couldn't have obtained complex data anyway, since it's a basic budget tracker. Budget trackers are more of a personal use applications.

Furthermore, we started the project around mid-March 2024. We first documented everything we need. The SRS, the tech stack, and the wireframes. The plan was to write comprehensive documentation, so that when we arrive at the development phase, everything is already laid out. I remember Els and I were hard carried by Angelika and Reycel in the documentation phase.

During the documentation phase though, Els and I were learning Flutter. We thought PeraPal should be a mobile app. So, how's the learning experience with Flutter? It's impractical. I can't emphasize this enough: I hate Flutter, even until now.

How many nested curly braces do we need to add a Widget? A class is required for a Stateful Widget? Who designed this framework? It's 80% boilerplate, 20% code logic. They clearly didn't have developer experience (DX) in mind when they created this framework.

It's like trying to take a simple walk but every 16 steps you need to change your clothes to continue.

Because of Flutter's difficult to code nature, we delayed development. I sugarcoated myself that we'll finish the final projects from other courses, so that when it comes to PeraPal, we didn't have anything in our way.

We didn't have progress for the entirety of April. Els himself hasn't progressed either, perhaps with the same reason: Flutter's terrible DX.

Anyway, May came in, and we're out of excuses. We had to present around late May. Els and I locked in. We developed the UI, added Firestore database, connected everything, managed states, etc.

It was a bloody month. I was spamming ChatGPT like Geometry Dash just to survive. I recall not having progress for over 2 days since I was so burnt out around mid-May.

One key technical challenge for me was trying to connect the database. We initially planned to use MongoDB, and we had trouble connecting it with Flutter. I cannot recall what exactly is the technical problem (Surprise! It was Skyrim).

But it felt like I was Andrew Neiman, trying to fight against a Terence Fletcher.

But we opted to use Firestore because we were so tired and fed up that we just wanted this to end. It's like two walls trying to close in on each other, with the four of us in between.

At the end of the day though, we accumulated AI-slop-type technical debt (imagine a blob fish on land). But hey, at least we survived.

We absorbed the lessons, and we learned them the hard way. We got decent scores, and we passed.

Consequently, this single project unknowingly set off the journey of what would become a solid team for the next 3 semesters. PeraPal was just the start.