CN
Franz Phillip G. Domingo

Software Engineer Undergraduate.

Dim desk lamp lighting up a programming book and laptop
domingo.tech

First Year as a Software Engineering Student: From Curiosity to Compiler Errors

If you asked me on Day 1 what a compiler was, I’d say it was a printer.

By the end of first year, I knew it was a judgmental machine that screamed at my mistakes every time I hit Run.

This was the year of foundations — messy code, missed semicolons, and small victories that felt like breakthroughs.


🧱 The Foundation That Built Me

Most of my growth in first year came from confusion.

🖥️ Key Courses

  • Introduction to Computing taught me what computing even is — from hardware basics to how the internet actually works.
  • Computer Programming 1 & 2 (C and Java) were the core — long nights of writing programs line by line and wondering why my output was blank.
  • Human-Computer Interaction opened my eyes to users. It wasn’t just about code that worked — it was about how people use it.
  • Data Structures & Algorithms (introduced at the tail end) broke me and rebuilt how I thought about problem-solving.

We also had Readings in Philippine History, Science, Technology & Society, and Gender & Society — and I didn’t understand it then, but they reminded me that developers build for people, not just machines.


🧪 Lab Time Was Survival Mode

Labs were graded live. Every bracket, variable, and typo could drop your grade.

  • Lab exams were terrifying: write a working Java program under time pressure with zero Stack Overflow.
  • We used basic editors — sometimes even Notepad++ — and compiled in terminal.
  • Debugging meant reading every line out loud and praying you didn’t forget a semicolon.

The moment I passed a lab exam without errors was when I first felt like a real programmer.


💻 What I Built

They weren’t impressive — but they mattered:

  • A terminal-based ATM simulator with login and withdrawal options.
  • An inventory management system that barely handled file I/O.
  • A simple calculator that somehow gave wrong answers for 7 * 9.

None of it survives today — I lost the projects when I reformatted my MacBook.

Lesson learned: Always use Git. Always back up your code.


⚠️ What Broke Me

  • Understanding memory allocation in C — felt like fighting with a ghost.
  • Forgetting Java’s class rules mid-lab exam.
  • PE classes scheduled right after a 3-hour programming lab. (My brain ran marathons before my body did.)
  • Spending 6 hours fixing a bug, only to realize the error was a capital letter in a variable name.

🧠 What I Took With Me

  1. Logic matters more than language. If you understand the logic, switching from Java to Python is just translation.

  2. Programming is pattern recognition. The more you break things and fix them, the faster you recognize how to solve new ones.

  3. Every error is feedback. And the compiler is your most honest teacher.

  4. Start small, but think big. I didn’t know I’d end up building LLM-connected mobile apps. But that seed started here — with terminal projects and burning curiosity.


🛠️ My Toolchain (Back Then)

  • Languages: C, Java, a bit of Python
  • Tools: Visual Studio Code, BlueJ, Windows Terminal
  • Methods: Trial-and-error, manual testing, reading compiler errors like riddles
  • Storage: Local folders… no Git, no backup (mistake)

🧩 Academic Meets Practical

Even non-CS subjects taught me something:

  • PE classes built discipline — and showed me when to stop and recover.
  • History and Communication reminded me that developers exist in teams, societies, and timelines.
  • Personal and Professional Effectiveness made me reflect on time management — something every dev needs more than frameworks.

“First year didn’t teach me to build apps — it taught me to think like someone who eventually would.”


Connect the Dots